about summary refs log tree commit diff
path: root/nixpkgs/pkgs/top-level
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/top-level')
-rw-r--r--nixpkgs/pkgs/top-level/agda-packages.nix40
-rw-r--r--nixpkgs/pkgs/top-level/aliases.nix1455
-rw-r--r--nixpkgs/pkgs/top-level/all-packages.nix34873
-rw-r--r--nixpkgs/pkgs/top-level/beam-packages.nix114
-rw-r--r--nixpkgs/pkgs/top-level/config.nix41
-rw-r--r--nixpkgs/pkgs/top-level/coq-packages.nix163
-rw-r--r--nixpkgs/pkgs/top-level/cubocore-packages.nix94
-rw-r--r--nixpkgs/pkgs/top-level/darwin-packages.nix202
-rw-r--r--nixpkgs/pkgs/top-level/default.nix133
-rw-r--r--nixpkgs/pkgs/top-level/dhall-packages.nix49
-rw-r--r--nixpkgs/pkgs/top-level/dotnet-packages.nix315
-rw-r--r--nixpkgs/pkgs/top-level/emacs-packages.nix101
-rw-r--r--nixpkgs/pkgs/top-level/emscripten-packages.nix187
-rw-r--r--nixpkgs/pkgs/top-level/gnuradio-packages.nix54
-rw-r--r--nixpkgs/pkgs/top-level/haskell-packages.nix273
-rw-r--r--nixpkgs/pkgs/top-level/haxe-packages.nix119
-rw-r--r--nixpkgs/pkgs/top-level/impure.nix84
-rw-r--r--nixpkgs/pkgs/top-level/java-packages.nix488
-rw-r--r--nixpkgs/pkgs/top-level/kodi-packages.nix160
-rw-r--r--nixpkgs/pkgs/top-level/linux-kernels.nix573
-rw-r--r--nixpkgs/pkgs/top-level/lua-packages.nix139
-rw-r--r--nixpkgs/pkgs/top-level/make-tarball.nix86
-rw-r--r--nixpkgs/pkgs/top-level/metrics.nix78
-rw-r--r--nixpkgs/pkgs/top-level/nim-packages.nix92
-rw-r--r--nixpkgs/pkgs/top-level/nixpkgs-basic-release-checks.nix84
-rw-r--r--nixpkgs/pkgs/top-level/ocaml-packages.nix1588
-rw-r--r--nixpkgs/pkgs/top-level/octave-packages.nix220
-rw-r--r--nixpkgs/pkgs/top-level/packages-config.nix52
-rw-r--r--nixpkgs/pkgs/top-level/perl-packages.nix25475
-rw-r--r--nixpkgs/pkgs/top-level/php-packages.nix654
-rw-r--r--nixpkgs/pkgs/top-level/pure-packages.nix33
-rw-r--r--nixpkgs/pkgs/top-level/python-aliases.nix129
-rw-r--r--nixpkgs/pkgs/top-level/python-packages.nix11061
-rw-r--r--nixpkgs/pkgs/top-level/python2-packages.nix183
-rw-r--r--nixpkgs/pkgs/top-level/qt5-packages.nix229
-rw-r--r--nixpkgs/pkgs/top-level/release-alternatives.nix91
-rw-r--r--nixpkgs/pkgs/top-level/release-cross.nix215
-rw-r--r--nixpkgs/pkgs/top-level/release-haskell.nix421
-rw-r--r--nixpkgs/pkgs/top-level/release-lib.nix160
-rw-r--r--nixpkgs/pkgs/top-level/release-python.nix47
-rw-r--r--nixpkgs/pkgs/top-level/release-r.nix13
-rw-r--r--nixpkgs/pkgs/top-level/release-small.nix154
-rw-r--r--nixpkgs/pkgs/top-level/release.nix224
-rw-r--r--nixpkgs/pkgs/top-level/ruby-packages.nix3102
-rw-r--r--nixpkgs/pkgs/top-level/splice.nix137
-rw-r--r--nixpkgs/pkgs/top-level/stage.nix276
-rw-r--r--nixpkgs/pkgs/top-level/unixtools.nix195
-rw-r--r--nixpkgs/pkgs/top-level/wine-packages.nix58
48 files changed, 84714 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/top-level/agda-packages.nix b/nixpkgs/pkgs/top-level/agda-packages.nix
new file mode 100644
index 000000000000..18c32b9a9d92
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/agda-packages.nix
@@ -0,0 +1,40 @@
+{ pkgs, lib, callPackage, newScope, Agda }:
+
+let
+  mkAgdaPackages = Agda: lib.makeScope newScope (mkAgdaPackages' Agda);
+  mkAgdaPackages' = Agda: self: let
+    callPackage = self.callPackage;
+    inherit (callPackage ../build-support/agda {
+      inherit Agda self;
+      inherit (pkgs.haskellPackages) ghcWithPackages;
+    }) withPackages mkDerivation;
+  in {
+    inherit mkDerivation;
+
+    lib = lib.extend (final: prev: import ../build-support/agda/lib.nix { lib = prev; });
+
+    agda = withPackages [] // {
+      inherit withPackages;
+      passthru.tests.allPackages = withPackages (lib.filter (pkg: self.lib.isUnbrokenAgdaPackage pkg) (lib.attrValues self));
+    };
+
+    standard-library = callPackage ../development/libraries/agda/standard-library {
+      inherit (pkgs.haskellPackages) ghcWithPackages;
+    };
+
+    iowa-stdlib = callPackage ../development/libraries/agda/iowa-stdlib { };
+
+    agda-prelude = callPackage ../development/libraries/agda/agda-prelude { };
+
+    agda-categories = callPackage ../development/libraries/agda/agda-categories { };
+
+    cubical = callPackage ../development/libraries/agda/cubical { };
+
+    functional-linear-algebra = callPackage
+      ../development/libraries/agda/functional-linear-algebra { };
+
+    generic = callPackage ../development/libraries/agda/generic { };
+
+    agdarsec = callPackage ../development/libraries/agda/agdarsec { };
+  };
+in mkAgdaPackages Agda
diff --git a/nixpkgs/pkgs/top-level/aliases.nix b/nixpkgs/pkgs/top-level/aliases.nix
new file mode 100644
index 000000000000..46a74b391a51
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/aliases.nix
@@ -0,0 +1,1455 @@
+lib: self: super:
+
+with self;
+
+let
+  # Removing recurseForDerivation prevents derivations of aliased attribute set
+  # to appear while listing all the packages available.
+  removeRecurseForDerivations = alias: with lib;
+    if alias.recurseForDerivations or false
+    then removeAttrs alias ["recurseForDerivations"]
+    else alias;
+
+  # Disabling distribution prevents top-level aliases for non-recursed package
+  # sets from building on Hydra.
+  removeDistribute = alias: with lib;
+    if isDerivation alias then
+      dontDistribute alias
+    else alias;
+
+  # Make sure that we are not shadowing something from all-packages.nix.
+  checkInPkgs = n: alias:
+    if builtins.hasAttr n super
+    then throw "Alias ${n} is still in all-packages.nix"
+    else alias;
+
+  mapAliases = aliases:
+    lib.mapAttrs (n: alias:
+      removeDistribute
+        (removeRecurseForDerivations
+          (checkInPkgs n alias)))
+      aliases;
+in
+
+### Deprecated aliases - for backward compatibility
+### Please maintain this list in ASCIIbetical ordering.
+### Hint: the "sections" are delimited by ### <letter> ###
+
+# A script to convert old aliases to throws and remove old
+# throws can be found in './maintainers/scripts/remove-old-aliases.py'.
+
+mapAliases ({
+  # forceSystem should not be used directly in Nixpkgs.
+  # Added 2018-07-16
+  forceSystem = system: _:
+    (import self.path { localSystem = { inherit system; }; });
+
+  _0x0 = throw "0x0 upstream is abandoned and no longer exists: https://gitlab.com/somasis/scripts/";
+
+  ### A ###
+
+  accounts-qt = throw "'accounts-qt' has been renamed to/replaced by 'libsForQt5.accounts-qt'"; # Converted to throw 2022-02-22
+  adobeReader = throw "'adobeReader' has been renamed to/replaced by 'adobe-reader'"; # Converted to throw 2022-02-22
+  adobe_flex_sdk = throw "'adobe_flex_sdk' has been renamed to/replaced by 'apache-flex-sdk'"; # Converted to throw 2022-02-22
+  aesop = throw "aesop has been removed from nixpkgs, as it was unmaintained."; # Added 2021-08-05
+  ag = throw "'ag' has been renamed to/replaced by 'silver-searcher'"; # Converted to throw 2022-02-22
+  aircrackng = throw "'aircrackng' has been renamed to/replaced by 'aircrack-ng'"; # Converted to throw 2022-02-22
+  airtame = throw "airtame has been removed due to being unmaintained."; # Added 2022-01-19
+  aleth = throw "aleth (previously packaged as cpp_ethereum) has been removed; abandoned upstream."; # Added 2020-11-30
+  alienfx = throw "alienfx has been removed."; # Added 2019-12-08
+  alsaLib = alsa-lib; # Added 2021-06-09
+  alsaOss = alsa-oss; # Added 2021-06-10
+  alsaPluginWrapper = alsa-plugins-wrapper; # Added 2021-06-10
+  alsaPlugins = alsa-plugins; # Added 2021-06-10
+  alsaTools = alsa-tools; # Added 2021-06-10
+  alsaUtils = alsa-utils; # Added 2021-06-10
+  amazon-glacier-cmd-interface = throw "amazon-glacier-cmd-interface has been removed due to it being unmaintained."; # Added 2020-10-30
+  aminal = throw "aminal was renamed to darktile."; # Added 2021-09-28
+  ammonite-repl = throw "'ammonite-repl' has been renamed to/replaced by 'ammonite'"; # Converted to throw 2022-02-22
+  amuleDaemon = throw "amuleDaemon was renamed to amule-daemon."; # Added 2022-02-11
+  amuleGui = throw "amuleGui was renamed to amule-gui."; # Added 2022-02-11
+  amsn = throw "amsn has been removed due to being unmaintained."; # Added 2020-12-09
+  angelfish = libsForQt5.plasmaMobileGear.angelfish; # Added 2021-10-06
+  antimicro = throw "antimicro has been removed as it was broken, see antimicrox instead."; # Added 2020-08-06
+  antimicroX = antimicrox; # Added 2021-10-31
+  ardour_5 = throw "ardour_5 has been removed. see https://github.com/NixOS/nixpkgs/issues/139549"; # Added 2021-09-28
+  arduino_core = throw "'arduino_core' has been renamed to/replaced by 'arduino-core'"; # Converted to throw 2022-02-22
+  arora = throw "arora has been removed."; # Added 2020-09-09
+  asciidocFull = throw "'asciidocFull' has been renamed to/replaced by 'asciidoc-full'"; # Converted to throw 2022-02-22
+  asn1c = throw "asn1c has been removed: deleted by upstream"; # Added 2022-01-07
+  asterisk_15 = throw "asterisk_15: Asterisk 15 is end of life and has been removed."; # Added 2020-10-07
+  at_spi2_atk = throw "'at_spi2_atk' has been renamed to/replaced by 'at-spi2-atk'"; # Converted to throw 2022-02-22
+  at_spi2_core = throw "'at_spi2_core' has been renamed to/replaced by 'at-spi2-core'"; # Converted to throw 2022-02-22
+  aucdtect = throw "aucdtect: Upstream no longer provides download urls."; # Added 2020-12-26
+  avldrums-lv2 = x42-avldrums; # Added 2020-03-29
+  avxsynth = throw "avxsynth was removed because it was broken"; # Added 2021-05-18
+  azureus = throw "azureus is now known as vuze and the version in nixpkgs was really outdated"; # Added 2021-08-02
+
+  ### B ###
+
+  badtouch = authoscope; # Project was renamed, added 20210626
+  bar-xft = throw "'bar-xft' has been renamed to/replaced by 'lemonbar-xft'"; # Converted to throw 2022-02-22
+  bashCompletion = throw "'bashCompletion' has been renamed to/replaced by 'bash-completion'"; # Converted to throw 2022-02-22
+  bashInteractive_5 = bashInteractive; # Added 2021-08-20
+  bash_5 = bash; # Added 2021-08-20
+  bashburn = throw "bashburn has been removed: deleted by upstream"; # Added 2022-01-07
+  batti = throw "batti has been removed from nixpkgs, as it was unmaintained"; # Added 2019-12-10
+  bazaar = throw "bazaar has been deprecated by breezy."; # Added 2020-04-19
+  bazaarTools = throw "bazaar has been deprecated by breezy."; # Added 2020-04-19
+  bcat = throw "bcat has been removed because upstream is dead"; # Added 2021-08-22
+  beegfs = throw "beegfs has been removed."; # Added 2019-11-24
+  beret = throw "beret has been removed"; # Added 2021-11-16
+  bin_replace_string = throw "bin_replace_string has been removed: deleted by upstream"; # Added 2022-01-07
+  bitsnbots = throw "bitsnbots has been removed because it was broken and upstream missing"; # Added 2021-08-22
+  blastem = throw "blastem has been removed from nixpkgs as it would still require python2."; # Added 2022-01-01
+  bluezFull = bluez; # Added 2019-12-03
+  bomi = throw "bomi has been removed from nixpkgs since it was broken and abandoned upstream"; # Added 2020-12-10
+  bootchart = throw "bootchart has been removed from nixpkgs, as it is without a maintainer"; # Added 2019-12-10
+  bpftool = bpftools; # Added 2021-05-03
+  brackets = throw "brackets has been removed, it was unmaintained and had open vulnerabilities"; # Added 2021-01-24
+  bridge_utils = throw "'bridge_utils' has been renamed to/replaced by 'bridge-utils'"; # Converted to throw 2022-02-22
+  bro = zeek; # Added 2019-09-29
+  bird2 = bird; # Added 2022-02-21
+  bird6 = throw "bird6 was dropped. Use bird instead, which has support for both ipv4/ipv6"; # Added 2022-02-21
+  btrfsProgs = throw "'btrfsProgs' has been renamed to/replaced by 'btrfs-progs'"; # Converted to throw 2022-02-22
+
+  # bitwarden_rs renamed to vaultwarden with release 1.21.0 (2021-04-30)
+  bitwarden_rs = vaultwarden;
+  bitwarden_rs-mysql = vaultwarden-mysql;
+  bitwarden_rs-postgresql = vaultwarden-postgresql;
+  bitwarden_rs-sqlite = vaultwarden-sqlite;
+  bitwarden_rs-vault = vaultwarden-vault;
+
+
+  blink = throw "blink has been removed from nixpkgs, it was unmaintained and required python2 at the time of removal."; # Added 2022-01-12
+  bs1770gain = throw "bs1770gain has been removed from nixpkgs, as it had no maintainer or reverse dependencies."; # Added 2021-01-02
+  bsod = throw "bsod has been removed: deleted by upstream"; # Added 2022-01-07
+  btc1 = throw "btc1 has been removed, it was abandoned by upstream"; # Added 2020-11-03
+  buildPerlPackage = throw "'buildPerlPackage' has been renamed to/replaced by 'perlPackages.buildPerlPackage'"; # Converted to throw 2022-02-22
+  buildkite-agent3 = throw "'buildkite-agent3' has been renamed to/replaced by 'buildkite-agent'"; # Converted to throw 2022-02-22
+  bundler_HEAD = throw "'bundler_HEAD' has been renamed to/replaced by 'bundler'"; # Converted to throw 2022-02-22
+  bunny = throw "bunny has been removed: deleted by upstream"; # Added 2022-01-07
+  bypass403 = throw "bypass403 has been removed: deleted by upstream"; # Added 2022-01-07
+
+  ### C ###
+
+  caddy1 = throw "caddy 1.x has been removed from nixpkgs, as it's unmaintained: https://github.com/caddyserver/caddy/blob/master/.github/SECURITY.md#supported-versions"; # Added 2020-10-02
+  calibre-py2 = throw "calibre-py2 has been removed from nixpkgs, as calibre has upgraded to python 3. Please use calibre as replacement."; # Added 2021-01-13
+  calibre-py3 = throw "calibre-py3 has been removed from nixpkgs, as calibre's default python version is now 3. Please use calibre as replacement."; # Added 2021-01-13
+  cantarell_fonts = throw "'cantarell_fonts' has been renamed to/replaced by 'cantarell-fonts'"; # Converted to throw 2022-02-22
+  cargo-tree = throw "cargo-tree has been removed, use the builtin `cargo tree` command instead."; # Added 2020-08-20
+  casperjs = throw "casperjs has been removed, it was abandoned by upstream and broken.";
+  catfish = xfce.catfish; # Added 2019-12-22
+  ccnet = throw "ccnet has been removed because seafile does not depend on it anymore"; # Added 2021-03-25
+  cde-gtk-theme = throw "cde-gtk-theme has been removed from nixpkgs as it shipped with python2 scripts that didn't work anymore."; # Added 2022-01-12
+  cgmanager = throw "cgmanager was deprecated by lxc and therefore removed from nixpkgs."; # Added 2020-06-05
+  checkbashism = throw "'checkbashism' has been renamed to/replaced by 'checkbashisms'"; # Converted to throw 2022-02-22
+  chronos = throw "chronos has been removed from nixpkgs, as it was unmaintained"; # Added 2020-08-15
+  chunkwm = throw "chunkwm has been removed: abandoned by upstream"; # Added 2022-01-07
+  cide = throw "cide was deprecated on 2019-09-11: abandoned by upstream";
+  cifs_utils = throw "'cifs_utils' has been renamed to/replaced by 'cifs-utils'"; # Converted to throw 2022-02-22
+  cinepaint = throw "cinepaint has been removed from nixpkgs, as it was unmaintained"; # Added 2019-12-10
+  ckb = throw "'ckb' has been renamed to/replaced by 'ckb-next'"; # Converted to throw 2022-02-22
+  callPackage_i686 = pkgsi686Linux.callPackage;
+  creddump = throw "creddump has been removed from nixpkgs as the upstream has abandoned the project."; # Added 2022-01-01
+
+  # these are for convenience, not for backward compat and shouldn't expire
+  clang5Stdenv = lowPrio llvmPackages_5.stdenv;
+  clang6Stdenv = lowPrio llvmPackages_6.stdenv;
+  clang7Stdenv = lowPrio llvmPackages_7.stdenv;
+  clang8Stdenv = lowPrio llvmPackages_8.stdenv;
+  clang9Stdenv = lowPrio llvmPackages_9.stdenv;
+  clang10Stdenv = lowPrio llvmPackages_10.stdenv;
+  clang11Stdenv = lowPrio llvmPackages_11.stdenv;
+  clang12Stdenv = lowPrio llvmPackages_12.stdenv;
+  clang13Stdenv = lowPrio llvmPackages_13.stdenv;
+
+  clangAnalyzer = throw "'clangAnalyzer' has been renamed to/replaced by 'clang-analyzer'"; # Converted to throw 2022-02-22
+  claws-mail-gtk2 = throw "claws-mail-gtk2 was removed to get rid of Python 2, please use claws-mail"; # Added 2021-12-05
+  claws-mail-gtk3 = claws-mail; # Added 2021-07-10
+  clawsMail = throw "'clawsMail' has been renamed to/replaced by 'claws-mail'"; # Converted to throw 2022-02-22
+  clutter_gtk = throw "'clutter_gtk' has been renamed to/replaced by 'clutter-gtk'"; # Converted to throw 2022-02-22
+  cmakeWithQt4Gui = throw "cmakeWithQt4Gui has been removed in favor of cmakeWithGui (Qt 5)"; # Added 2021-05
+  codimd = hedgedoc; # Added 2020-11-29
+  compton = picom; # Added 2019-12-02
+  compton-git = throw "'compton-git' has been renamed to/replaced by 'compton'"; # Converted to throw 2022-02-22
+  concurrencykit = libck; # Added 2021-03
+  conntrack_tools = throw "'conntrack_tools' has been renamed to/replaced by 'conntrack-tools'"; # Converted to throw 2022-02-22
+  cool-old-term = throw "'cool-old-term' has been renamed to/replaced by 'cool-retro-term'"; # Converted to throw 2022-02-22
+  coprthr = throw "coprthr has been removed."; # Added 2019-12-08
+  coredumper = throw "coredumper has been removed: abandoned by upstream."; # Added 2019-11-16
+  corsmisc = throw "corsmisc has been removed (upstream is gone)"; # Added 2022-01-24
+  couchdb = throw "couchdb was removed from nixpkgs, use couchdb3 instead"; # Added 2021-03-03
+  couchdb2 = throw "couchdb2 was removed from nixpkgs, use couchdb3 instead"; # Added 2021-03-03
+  cpp-gsl = throw "'cpp-gsl' has been renamed to/replaced by 'microsoft_gsl'"; # Converted to throw 2022-02-22
+  cpp_ethereum = throw "cpp_ethereum has been removed; abandoned upstream."; # Added 2020-11-30
+  cpuminer-multi = throw "cpuminer-multi has been removed: deleted by upstream"; # Added 2022-01-07
+  crafty = throw "crafty has been removed: deleted by upstream"; # Added 2022-01-07
+  cryptol = throw "cryptol was removed due to prolonged broken build"; # Added 2020-08-21
+
+  # CUDA Toolkit
+
+  cudatoolkit_6 = throw "cudatoolkit_6 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudatoolkit_65 = throw "cudatoolkit_65 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudatoolkit_7 = throw "cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudatoolkit_7_5 = throw "cudatoolkit_7_5 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudatoolkit_8 = throw "cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudatoolkit_9 = throw "cudatoolkit_9 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudatoolkit_9_0 = throw "cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudatoolkit_9_1 = throw "cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudatoolkit_9_2 = throw "cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudnn6_cudatoolkit_8 = throw "cudnn6_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_cudatoolkit_7 = throw "cudnn_cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_cudatoolkit_7_5 = throw "cudnn_cudatoolkit_7_5 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_cudatoolkit_8 = throw "cudnn_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_cudatoolkit_9 = throw "cudnn_cudatoolkit_9 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudnn_cudatoolkit_9_0 = throw "cudnn_cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudnn_cudatoolkit_9_1 = throw "cudnn_cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudnn_cudatoolkit_9_2 = throw "cudnn_cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
+
+  cloud-print-connector = throw "Google Cloudprint is officially discontinued since Jan 2021, more info https://support.google.com/chrome/a/answer/9633006";
+  cquery = throw "cquery has been removed because it is abandoned by upstream. Consider switching to clangd or ccls instead."; # Added 2020-06-15
+  cups-googlecloudprint = throw "Google Cloudprint is officially discontinued since Jan 2021, more info https://support.google.com/chrome/a/answer/9633006";
+  cupsBjnp = throw "'cupsBjnp' has been renamed to/replaced by 'cups-bjnp'"; # Converted to throw 2022-02-22
+  cups_filters = throw "'cups_filters' has been renamed to/replaced by 'cups-filters'"; # Converted to throw 2022-02-22
+  curaByDagoma = throw "curaByDagoma has been removed from nixpkgs, because it was unmaintained and dependent on python2 packages."; # Added 2022-01-12
+  curaLulzbot = throw "curaLulzbot has been removed due to insufficient upstream support for a modern dependency chain"; # Added 2021-10-23
+  cv = throw "'cv' has been renamed to/replaced by 'progress'"; # Converted to throw 2022-02-22
+  cvs_fast_export = cvs-fast-export; # Added 2021-06-10
+
+  ### D ###
+
+  d1x_rebirth = throw "'d1x_rebirth' has been renamed to/replaced by 'dxx-rebirth'"; # Converted to throw 2022-02-22
+  d2x_rebirth = throw "'d2x_rebirth' has been renamed to/replaced by 'dxx-rebirth'"; # Converted to throw 2022-02-22
+  dart_dev = throw "Non-stable versions of Dart have been removed."; # Added 2020-01-15
+  dart_old = throw "Non-stable versions of Dart have been removed."; # Added 2020-01-15
+  dart_stable = dart; # Added 2020-01-15
+  dat = nodePackages.dat;
+  dbus_daemon = throw "'dbus_daemon' has been renamed to/replaced by 'dbus.daemon'"; # Converted to throw 2022-02-22
+  dbus_glib = throw "'dbus_glib' has been renamed to/replaced by 'dbus-glib'"; # Converted to throw 2022-02-22
+  dbus_libs = throw "'dbus_libs' has been renamed to/replaced by 'dbus'"; # Converted to throw 2022-02-22
+  dbus_tools = throw "'dbus_tools' has been renamed to/replaced by 'dbus.out'"; # Converted to throw 2022-02-22
+  dbvisualizer = throw "dbvisualizer has been removed from nixpkgs, as it's unmaintained"; # Added 2020-09-20
+  deadbeef-mpris2-plugin = throw "'deadbeef-mpris2-plugin' has been renamed to/replaced by 'deadbeefPlugins.mpris2'"; # Converted to throw 2022-02-22
+  deadpixi-sam = deadpixi-sam-unstable;
+
+  debian_devscripts = throw "'debian_devscripts' has been renamed to/replaced by 'debian-devscripts'"; # Converted to throw 2022-02-22
+  debugedit-unstable = debugedit; # Added 2021-11-22
+  deepin = throw "deepin was a work in progress and it has been canceled and removed https://github.com/NixOS/nixpkgs/issues/94870"; # added 2020-08-31
+  deepspeech = throw "deepspeech was removed in favor of stt. https://github.com/NixOS/nixpkgs/issues/119496"; # added 2021-05-05
+  deisctl = throw "deisctl was removed ; the service does not exist anymore"; # added 2022-02-06
+  deis = throw "deis was removed ; the service does not exist anymore"; # added 2022-02-06
+  deltachat-electron = deltachat-desktop; # added 2021-07-18
+  diffuse = throw "diffuse has been removed from nixpkgs, as it's unmaintained"; # Added 2019-12-10
+
+  deluge-1_x = throw ''
+    Deluge 1.x (deluge-1_x) is no longer supported.
+    Please use Deluge 2.x (deluge-2_x) instead, for example:
+
+        services.deluge.package = pkgs.deluge-2_x;
+
+    Note that it is NOT possible to switch back to Deluge 1.x after this change.
+  ''; # Added 2021-08-18
+
+  demjson = with python3Packages; toPythonApplication demjson; # Added 2022-01-18
+  desktop_file_utils = throw "'desktop_file_utils' has been renamed to/replaced by 'desktop-file-utils'"; # Converted to throw 2022-02-22
+  devicemapper = throw "'devicemapper' has been renamed to/replaced by 'lvm2'"; # Converted to throw 2022-02-22
+  digikam5 = throw "'digikam5' has been renamed to/replaced by 'digikam'"; # Converted to throw 2022-02-22
+  displaycal = throw "displaycal has been removed from nixpkgs, as it hasn't migrated to python3."; # Added 2022-01-12
+  dmtx = throw "'dmtx' has been renamed to/replaced by 'dmtx-utils'"; # Converted to throw 2022-02-22
+  dnnl = oneDNN; # Added 2020-04-22
+  docbook5_xsl = throw "'docbook5_xsl' has been renamed to/replaced by 'docbook_xsl_ns'"; # Converted to throw 2022-02-22
+  docbookrx = throw "docbookrx has been removed since it was unmaintained"; # Added 2021-01-12
+  docbook_xml_xslt = throw "'docbook_xml_xslt' has been renamed to/replaced by 'docbook_xsl'"; # Converted to throw 2022-02-22
+  docker_compose = throw "'docker_compose' has been renamed to/replaced by 'docker-compose'"; # Converted to throw 2022-02-22
+  dolphinEmu = dolphin-emu; # Added 2021-11-10
+  dolphinEmuMaster = dolphin-emu-beta; # Added 2021-11-10
+  dotnet-netcore = dotnet-runtime; # Added 2021-10-07
+  double_conversion = throw "'double_conversion' has been renamed to/replaced by 'double-conversion'"; # Converted to throw 2022-02-22
+  draftsight = throw "draftsight has been removed, no longer available as freeware"; # Added 2020-08-14
+  dvb_apps = throw "dvb_apps has been removed."; # Added 2020-11-03
+  dwarf_fortress = throw "'dwarf_fortress' has been renamed to/replaced by 'dwarf-fortress'"; # Converted to throw 2022-02-22
+  dwm-git = throw "dwm-git has been removed from nixpkgs, as it had no updates for 2 years not serving it's purpose."; # Added 2021-02-07
+  dylibbundler = macdylibbundler; # Added 2021-04-24
+
+  ### E ###
+
+
+  ec2_ami_tools = ec2-ami-tools; # Added 2021-10-08
+  ec2_api_tools = ec2-api-tools; # Added 2021-10-08
+  ec2-utils = amazon-ec2-utils; # Added 2022-02-01
+  elasticmq = throw "elasticmq has been removed in favour of elasticmq-server-bin"; # Added 2021-01-17
+  elasticsearch7-oss = throw "elasticsearch7-oss has been removed, as the distribution is no longer provided by upstream. https://github.com/NixOS/nixpkgs/pull/114456"; # Added 2021-06-09
+
+  # Electron
+  electron_3 = throw "electron_3 has been removed in favor of newer versions"; # added 2022-01-06
+  electron_4 = throw "electron_4 has been removed in favor of newer versions"; # added 2022-01-06
+  electron_5 = throw "electron_5 has been removed in favor of newer versions"; # added 2022-01-06
+  electron_6 = throw "electron_6 has been removed in favor of newer versions"; # added 2022-01-06
+  electron_7 = throw "electron_7 has been removed in favor of newer versions"; # added 2022-02-08
+  electron_8 = throw "electron_8 has been removed in favor of newer versions"; # added 2022-02-08
+
+  electrum-dash = throw "electrum-dash has been removed from nixpkgs as the project is abandoned."; # Added 2022-01-01
+
+  # Emacs
+  emacs27Packages = emacs27.pkgs; # Added 2020-12-18
+  emacs27WithPackages = emacs27.pkgs.withPackages; # Added 2020-12-18
+  emacsPackages = emacs.pkgs; # Added 2020-12-18
+  emacsPackagesGen = throw "'emacsPackagesGen' has been renamed to/replaced by 'emacsPackagesFor'"; # Converted to throw 2022-02-22
+  emacsPackagesNg = emacs.pkgs; # Added 2019-08-07
+  emacsPackagesNgFor = emacsPackagesFor; # Added 2019-08-07
+  emacsPackagesNgGen = throw "'emacsPackagesNgGen' has been renamed to/replaced by 'emacsPackagesFor'"; # Converted to throw 2022-02-22
+  emacsWithPackages = emacs.pkgs.withPackages; # Added 2020-12-18
+
+  enblendenfuse = throw "'enblendenfuse' has been renamed to/replaced by 'enblend-enfuse'"; # Converted to throw 2022-02-22
+  encryptr = throw "encryptr was removed because it reached end of life"; # Added 2022-02-06
+  envelope = throw "envelope has been removed from nixpkgs, as it was unmaintained."; # Added 2021-08-05
+  epoxy = libepoxy; # Added 2021-11-11
+  esniper = throw "esniper has been removed because upstream no longer maintains it (and it no longer works)"; # Added 2021-04-12
+  etcdctl = throw "'etcdctl' has been renamed to/replaced by 'etcd'"; # Converted to throw 2022-02-22
+  euca2tools = throw "euca2ools has been removed because it is unmaintained upstream and still uses python2."; # Added 2022-01-01
+  evilvte = throw "evilvte has been removed from nixpkgs for being unmaintained with security issues and dependant on an old version of vte which was removed."; # Added 2022-01-14
+  evolution_data_server = throw "'evolution_data_server' has been renamed to/replaced by 'evolution-data-server'"; # Converted to throw 2022-02-22
+  exfat-utils = throw "'exfat-utils' has been renamed to/replaced by 'exfat'"; # Converted to throw 2022-02-22
+
+  ### F ###
+
+  facette = throw "facette has been removed."; # Added 2020-01-06
+  fast-neural-doodle = throw "fast-neural-doodle has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  fastnlo = fastnlo_toolkit; # Added 2021-04-24
+  fedora-coreos-config-transpiler = throw "fedora-coreos-config-transpiler has been renamed to 'butane'."; # Added 2021-04-13
+  fetchFromGithub = throw "You meant fetchFromGitHub, with a capital H.";
+  ffadoFull = throw "'ffadoFull' has been renamed to/replaced by 'ffado'"; # Converted to throw 2022-02-22
+  firefox-esr-68 = throw "Firefox 68 ESR was removed because it reached end of life with its final release 68.12esr on 2020-08-25.";
+  firefox-esr-wrapper = throw "'firefox-esr-wrapper' has been renamed to/replaced by 'firefox-esr'"; # Converted to throw 2022-02-22
+  firefoxWrapper = throw "'firefoxWrapper' has been renamed to/replaced by 'firefox'"; # Converted to throw 2022-02-22
+  firefox-wrapper = throw "'firefox-wrapper' has been renamed to/replaced by 'firefox'"; # Converted to throw 2022-02-22
+  firestr = throw "firestr has been removed."; # Added 2019-12-08
+  firmwareLinuxNonfree = linux-firmware; # Added 2022-01-09
+  fish-foreign-env = throw "fish-foreign-env has been replaced with fishPlugins.foreign-env"; # Added 2020-12-29, modified 2021-01-10
+  flameGraph = throw "'flameGraph' has been renamed to/replaced by 'flamegraph'"; # Converted to throw 2022-02-22
+  flashplayer-standalone-debugger = throw "flashplayer-standalone-debugger has been removed as Adobe Flash Player is now deprecated."; # Added 2021-02-07
+  flashplayer-standalone = throw "flashplayer-standalone has been removed as Adobe Flash Player is now deprecated."; # Added 2021-02-07
+  flashplayer = throw "flashplayer has been removed as Adobe Flash Player is now deprecated."; # Added 2021-02-07
+  flashtool = throw "flashtool was removed from nixpkgs, because the download is down for copyright reasons and the site looks very fishy"; # Added 2021-06-31
+  flink_1_5 = throw "flink_1_5 was removed, use flink instead"; # Added 2021-01-25
+  flutter-beta = throw "Non-stable versions of Flutter have been removed. You can use flutterPackages.mkFlutter to generate a package for other Flutter versions."; # Added 2020-01-15
+  flutter-dev = throw "Non-stable versions of Flutter have been removed. You can use flutterPackages.mkFlutter to generate a package for other Flutter versions."; # Added 2020-01-15
+  flvtool2 = throw "flvtool2 has been removed."; # Added 2020-11-03
+  fme = throw "fme was removed, because it is old and uses Glade, a discontinued library."; # Added 2022-01-26
+  foldingathome = fahclient; # Added 2020-09-03
+  font-awesome-ttf = throw "'font-awesome-ttf' has been renamed to/replaced by 'font-awesome'"; # Converted to throw 2022-02-22
+
+  fontconfig-ultimate = throw ''
+    fontconfig-ultimate has been removed. The repository has been archived upstream and activity has ceased for several years.
+    https://github.com/bohoomil/fontconfig-ultimate/issues/171.
+  ''; # Added 2019-10-31
+
+  fontconfig-penultimate = throw ''
+    fontconfig-penultimate has been removed.
+    It was a fork of the abandoned fontconfig-ultimate.
+  ''; # Added 2020-07-21
+
+  fontconfig_210 = throw ''
+    fontconfig 2.10.x hasn't had a release in years, is vulnerable to CVE-2016-5384
+    and has only been used for old fontconfig caches.
+  '';
+
+  foomatic_filters = throw "'foomatic_filters' has been renamed to/replaced by 'foomatic-filters'"; # Converted to throw 2022-02-22
+  fscryptctl-experimental = throw "The package fscryptctl-experimental has been removed. Please switch to fscryptctl."; # Added 2021-11-07
+  fsharp41 = throw "fsharp41 has been removed, please use dotnet-sdk_5 or later";
+  fslint = throw "fslint has been removed: end of life. Upstream recommends using czkawka (https://qarmin.github.io/czkawka/) instead"; # Added 2022-01-15
+  fuse_exfat = throw "'fuse_exfat' has been renamed to/replaced by 'exfat'"; # Converted to throw 2022-02-22
+  fuseki = throw "'fuseki' has been renamed to/replaced by 'apache-jena-fuseki'"; # Converted to throw 2022-02-22
+  fwupdate = throw "fwupdate was merged into fwupd"; # Added 2020-05-19
+
+  ### G ###
+
+  g4py = python3Packages.geant4; # Added 2020-06-06
+  gaia = throw "gaia has been removed because it seems abandoned upstream and uses no longer supported dependencies"; # Added 2020-06-06
+  gdal_1_11 = throw "gdal_1_11 was removed. Use gdal instead."; # Added 2021-04-03
+  gdb-multitarget = throw "'gdb-multitarget' has been renamed to/replaced by 'gdb'"; # Converted to throw 2022-02-22
+  gdk_pixbuf = throw "'gdk_pixbuf' has been renamed to/replaced by 'gdk-pixbuf'"; # Converted to throw 2022-02-22
+  getmail = throw "getmail has been removed from nixpkgs, migrate to getmail6."; # Added 2022-01-12
+  gettextWithExpat = throw "'gettextWithExpat' has been renamed to/replaced by 'gettext'"; # Converted to throw 2022-02-22
+  gfm = throw "gfm has been removed"; # Added 2021-01-15
+  giblib = throw " giblib has been removed from nixpkgs because upstream is gone."; # Added 2022-01-23
+  giflib_4_1 = throw "giflib_4_1 has been removed; use giflib instead"; # Added 2020-02-12
+  git-bz = throw "giz-bz has been removed from nixpkgs as it is stuck on python2."; # Added 2022-01-01
+
+  gitAndTools = self // {
+    darcsToGit = darcs-to-git;
+    gitAnnex = git-annex;
+    gitBrunch = git-brunch;
+    gitFastExport = git-fast-export;
+    gitRemoteGcrypt = git-remote-gcrypt;
+    svn_all_fast_export = svn-all-fast-export;
+    topGit = top-git;
+  }; # Added 2021-01-14
+
+  gitin = throw "gitin has been remove because it was unmaintained and depended on an insecure version of libgit2"; # Added 2021-12-07
+  gitinspector = throw "gitinspector has been removed because it doesn't work with python3."; # Added 2022-01-12
+  gksu = throw "gksu has been removed"; # Added 2022-01-16
+  glib_networking = throw "'glib_networking' has been renamed to/replaced by 'glib-networking'"; # Converted to throw 2022-02-22
+  gmailieer = lieer; # Added 2020-04-19
+  gmic_krita_qt = gmic-qt-krita; # Added 2019-09-07
+  gmvault = throw "gmvault has been removed because it is unmaintained, mostly broken, and insecure"; # Added 2021-03-08
+  gnash = throw "gnash has been removed; broken and abandoned upstream."; # added 2022-02-06
+  gnome-passwordsafe = gnome-secrets; # added 2022-01-30
+  gnome-mpv = celluloid; # Added 2019-08-22
+  gnome-sharp = throw "gnome-sharp has been removed from nixpkgs"; # Added 2022-01-15
+  gnome-themes-standard = throw "'gnome-themes-standard' has been renamed to/replaced by 'gnome-themes-extra'"; # Converted to throw 2022-02-22
+  gnome_user_docs = gnome-user-docs; # Added 2019-11-20
+  gnome15 = throw "gnome15 has been removed from nixpkgs, as it's unmaintained and depends on deprecated libraries."; # Added 2019-12-10
+  gnome_doc_utils = throw "'gnome_doc_utils' has been renamed to/replaced by 'gnome-doc-utils'"; # Converted to throw 2022-02-22
+  gnome_themes_standard = throw "'gnome_themes_standard' has been renamed to/replaced by 'gnome-themes-standard'"; # Converted to throw 2022-02-22
+
+  gnuradio-with-packages = gnuradio3_7.override {
+    extraPackages = lib.attrVals [
+      "osmosdr" "ais" "gsm" "nacl" "rds" "limesdr"
+    ] gnuradio3_7Packages;
+  }; # Added 2020-10-16
+
+  gmock = gtest; # moved from top-level 2021-03-14
+
+  gnome3 = gnome; # Added 2021-05-07
+  gnupg20 = throw "gnupg20 has been removed from nixpkgs as upstream dropped support on 2017-12-31";# Added 2020-07-12
+  gnuradio3_7 = throw "gnuradio3_7 has been removed because it required Python 2"; # Added 2022-01-16
+  gnuradio-ais = gnuradio3_7.pkgs.ais; # Added 2019-05-27, changed 2020-10-16
+  gnuradio-gsm = gnuradio3_7.pkgs.gsm; # Added 2019-05-27, changed 2020-10-16
+  gnuradio-limesdr = gnuradio3_7.pkgs.limesdr; # Added 2019-05-27, changed 2020-10-16
+  gnuradio-nacl = gnuradio3_7.pkgs.nacl; # Added 2019-05-27, changed 2020-10-16
+  gnuradio-osmosdr = gnuradio3_7.pkgs.osmosdr; # Added 2019-05-27, changed 2020-10-16
+  gnuradio-rds = gnuradio3_7.pkgs.rds; # Added 2019-05-27, changed 2020-10-16
+  gnustep-make = throw "'gnustep-make' has been renamed to/replaced by 'gnustep.make'"; # Converted to throw 2022-02-22
+  gnuvd = throw "gnuvd was removed because the backend service is missing"; # Added 2020-01-14
+  gobby5 = gobby; # Added 2021-02-01
+  gobjectIntrospection = throw "'gobjectIntrospection' has been renamed to/replaced by 'gobject-introspection'"; # Converted to throw 2022-02-22
+  gogoclient = throw "gogoclient has been removed, because it was unmaintained"; # Added 2021-12-15
+  goimports = throw "'goimports' has been renamed to/replaced by 'gotools'"; # Converted to throw 2022-02-22
+  gometalinter = throw "gometalinter was abandoned by upstream. Consider switching to golangci-lint instead"; # Added 2020-04-23
+  googleAuthenticator = throw "'googleAuthenticator' has been renamed to/replaced by 'google-authenticator'"; # Converted to throw 2022-02-22
+  googleearth = throw "the non-pro version of Google Earth was removed because it was discontinued and downloading it isn't possible anymore"; # Added 2022-01-22
+  google-gflags = gflags; # Added 2019-07-25
+  google-musicmanager = throw "google-musicmanager has been removed because Google Play Music was discontinued"; # Added 2021-03-07
+  google-music-scripts = throw "google-music-scripts has been removed because Google Play Music was discontinued"; # Added 2021-03-07
+  go-pup = throw "'go-pup' has been renamed to/replaced by 'pup'"; # Converted to throw 2022-02-22
+  gpgstats = throw "gpgstats has been removed: upstream is gone"; # Added 2022-02-06
+
+  graalvm11 = graalvm11-ce;
+  graalvm8-ce = throw "graalvm8-ce has been removed by upstream."; # Added 2021-10-19
+  graalvm8 = throw "graalvm8-ce has been removed by upstream."; # Added 2021-10-19
+  gr-ais = gnuradio3_7.pkgs.ais; # Added 2019-05-27, changed 2020-10-16
+  grantlee5 = throw "'grantlee5' has been renamed to/replaced by 'libsForQt5.grantlee'"; # Converted to throw 2022-02-22
+  gr-gsm = gnuradio3_7.pkgs.gsm; # Added 2019-05-27, changed 2020-10-16
+  grib-api = throw "grib-api has been replaced by ecCodes => https://confluence.ecmwf.int/display/ECC/GRIB-API+migration"; # Added 2022-01-05
+  gr-limesdr = gnuradio3_7.pkgs.limesdr; # Added 2019-05-27, changed 2020-10-16
+  gr-nacl = gnuradio3_7.pkgs.nacl; # Added 2019-05-27, changed 2020-10-16
+  gr-osmosdr = gnuradio3_7.pkgs.osmosdr; # Added 2019-05-27, changed 2020-10-16
+  gr-rds = gnuradio3_7.pkgs.rds; # Added 2019-05-27, changed 2020-10-16
+  gsettings_desktop_schemas = throw "'gsettings_desktop_schemas' has been renamed to/replaced by 'gsettings-desktop-schemas'"; # Converted to throw 2022-02-22
+  gtk_doc = throw "'gtk_doc' has been renamed to/replaced by 'gtk-doc'"; # Converted to throw 2022-02-22
+  gtklick = throw "gtklick has been removed from nixpkgs as the project is stuck on python2"; # Added 2022-01-01
+  gtk-recordmydesktop = throw "gtk-recordmydesktop has been removed from nixpkgs, as it's unmaintained and uses deprecated libraries"; # Added 2019-12-10
+  guileCairo = throw "'guileCairo' has been renamed to/replaced by 'guile-cairo'"; # Converted to throw 2022-02-22
+  guile-gnome = throw "guile-gnome has been removed"; # Added 2022-01-16
+  guileGnome = throw "guile-gnome has been removed"; # Added 2022-01-16
+  guile_lib = throw "'guile_lib' has been renamed to/replaced by 'guile-lib'"; # Converted to throw 2022-02-22
+  guileLint = throw "'guileLint' has been renamed to/replaced by 'guile-lint'"; # Converted to throw 2022-02-22
+  guile_ncurses = throw "'guile_ncurses' has been renamed to/replaced by 'guile-ncurses'"; # Converted to throw 2022-02-22
+  gupnp_av = throw "'gupnp_av' has been renamed to/replaced by 'gupnp-av'"; # Converted to throw 2022-02-22
+  gupnp_dlna = throw "'gupnp_dlna' has been renamed to/replaced by 'gupnp-dlna'"; # Converted to throw 2022-02-22
+  gupnp_igd = throw "'gupnp_igd' has been renamed to/replaced by 'gupnp-igd'"; # Converted to throw 2022-02-22
+  gupnptools = throw "'gupnptools' has been renamed to/replaced by 'gupnp-tools'"; # Converted to throw 2022-02-22
+  gutenberg = throw "'gutenberg' has been renamed to/replaced by 'zola'"; # Converted to throw 2022-02-22
+  gwtdragdrop = throw "gwtdragdrop was removed: abandoned by upstream"; # Added 2022-02-06
+  gwtwidgets = throw "gwtwidgets was removed: unmaintained"; # Added 2022-02-06
+
+  ### H ###
+
+  hal-flash = throw "hal-flash has been removed as Adobe Flash Player is now deprecated."; # Added 2021-02-07
+  hawkthorne = throw "hawkthorne has been removed because it depended on a broken version of love"; # Added 2022-01-15
+  heimdalFull = throw "'heimdalFull' has been renamed to/replaced by 'heimdal'"; # Converted to throw 2022-02-22
+  heme = throw "heme has been removed: upstream is gone"; # added 2022-02-06
+  hepmc = hepmc2; # Added 2019-08-05
+  hexen = throw "hexen (SDL port) has been removed: abandoned by upstream."; # Added 2019-12-11
+  hicolor_icon_theme = throw "'hicolor_icon_theme' has been renamed to/replaced by 'hicolor-icon-theme'"; # Converted to throw 2022-02-22
+  holochain-go = throw "holochain-go was abandoned by upstream"; # Added 2022-01-01
+  htmlTidy = throw "'htmlTidy' has been renamed to/replaced by 'html-tidy'"; # Converted to throw 2022-02-22
+  ht-rust = xh; # Added 2021-02-13
+  hydra-flakes = throw "hydra-flakes: Flakes support has been merged into Hydra's master. Please use `hydra-unstable` now."; # Added 2020-04-06
+
+  ### I ###
+
+  iana_etc = throw "'iana_etc' has been renamed to/replaced by 'iana-etc'"; # Converted to throw 2022-02-22
+  iasl = throw "iasl has been removed, use acpica-tools instead"; # Added 2021-08-08
+  icecat-bin = throw "icecat-bin has been removed, the binary builds are not maintained upstream."; # Added 2022-02-15
+  icedtea8_web = adoptopenjdk-icedtea-web; # Added 2019-08-21
+  icedtea_web = adoptopenjdk-icedtea-web; # Added 2019-08-21
+  idea = throw "'idea' has been renamed to/replaced by 'jetbrains'"; # Converted to throw 2022-02-22
+  imapproxy = throw "imapproxy has been removed because it did not support a supported openssl version"; # added 2021-12-15
+  imagemagick7Big = imagemagickBig; # Added 2021-02-22
+  imagemagick7 = imagemagick; # Added 2021-02-22
+  imagemagick7_light = imagemagick_light; # Added 2021-02-22
+  impressive = throw "impressive has been removed due to lack of released python 2 support and maintainership in nixpkgs"; # Added 2022-01-27
+  i-score = throw "i-score has been removed: abandoned upstream."; # Added 2020-11-21
+  inboxer = throw "inboxer has been removed as it is no longer maintained and no longer works as Google shut down the inbox service this package wrapped.";
+  infiniband-diags = rdma-core; # Added 2019-08-09
+  ino = throw "ino has been removed from nixpkgs, the project is stuck on python2 and upstream has archived the project."; # Added 2022-01-12
+  inotifyTools = inotify-tools;
+  inter-ui = inter; # Added 2021-03-27
+  iops = throw "iops was removed: upstream is gone"; # Added 2022-02-06
+  iproute = iproute2; # moved from top-level 2021-03-14
+  ipsecTools = throw "ipsecTools has benn removed, because it was no longer maintained upstream"; # Added 2021-12-15
+
+  ### J ###
+
+
+  jack2Full = jack2; # moved from top-level 2021-03-14
+  jamomacore = throw "jamomacore has been removed: abandoned upstream."; # Added 2020-11-21
+  jbidwatcher = throw "jbidwatcher was discontinued in march 2021"; # Added 2021-03-15
+  jbuilder = throw "'jbuilder' has been renamed to/replaced by 'dune_1'"; # Converted to throw 2022-02-22
+  jellyfin_10_5 = throw "Jellyfin 10.5 is no longer supported and contains a security vulnerability. Please upgrade to a newer version."; # Added 2021-04-26
+  jikes = throw "jikes was deprecated on 2019-10-07: abandoned by upstream";
+  joseki = throw "'joseki' has been renamed to/replaced by 'apache-jena-fuseki'"; # Converted to throw 2022-02-22
+  journalbeat7 = throw "journalbeat has been removed upstream. Use filebeat with the journald input instead.";
+
+  # Julia
+  julia_07 = throw "julia_07 has been deprecated in favor of the latest LTS version"; # Added 2020-09-15
+  julia_1 = throw "julia_1 has been deprecated in favor of julia_10 as it was ambiguous"; # Added 2021-03-13
+  julia_11 = throw "julia_11 has been deprecated in favor of the latest stable version"; # Added 2020-09-15
+  julia_13 = throw "julia_13 has been deprecated in favor of the latest stable version"; # Added 2021-03-13
+  julia_10-bin = throw "julia_10-bin has been deprecated in favor of the latest LTS version"; # Added 2021-12-02
+
+  json_glib = throw "'json_glib' has been renamed to/replaced by 'json-glib'"; # Converted to throw 2022-02-22
+  jvmci8 = throw "graalvm8 and its tools were deprecated in favor of graalvm8-ce"; # Added 2021-10-15
+
+  ### K ###
+
+  k3d = throw "k3d has been removed because it was broken and has seen no release since 2016"; # Added 2022-01-04
+  k9copy = throw "k9copy has been removed from nixpkgs, as there is no upstream activity"; # Added 2020-11-06
+  kafkacat = kcat; # Added 2021-10-07
+  kbdKeymaps = throw "kbdKeymaps is not needed anymore since dvp and neo are now part of kbd"; # Added 2021-04-11
+  kdeconnect = plasma5Packages.kdeconnect-kde; # Added 2020-10-28
+  kdecoration-viewer = throw "kdecoration-viewer has been removed from nixpkgs, as there is no upstream activity"; # Added 2020-06-16
+  kdiff3-qt5 = throw "'kdiff3-qt5' has been renamed to/replaced by 'kdiff3'"; # Converted to throw 2022-02-22
+  keepass-keefox = throw "'keepass-keefox' has been renamed to/replaced by 'keepass-keepassrpc'"; # Converted to throw 2022-02-22
+  keepassx-community = throw "'keepassx-community' has been renamed to/replaced by 'keepassxc'"; # Converted to throw 2022-02-22
+  keepassx-reboot = throw "'keepassx-reboot' has been renamed to/replaced by 'keepassx-community'"; # Converted to throw 2022-02-22
+  keepassx2-http = throw "'keepassx2-http' has been renamed to/replaced by 'keepassx-reboot'"; # Converted to throw 2022-02-22
+  keepnote = throw "keepnote has been removed from nixpkgs, as it is stuck on python2."; # Added 2022-01-01
+  kerberos = libkrb5; # moved from top-level 2021-03-14
+  kexectools = kexec-tools; # Added 2021-09-03
+  keybase-go = throw "'keybase-go' has been renamed to/replaced by 'keybase'"; # Converted to throw 2022-02-22
+  keymon = throw "keymon has been removed from nixpkgs, as it's abandoned and archived."; # Added 2019-12-10
+  keysmith = libsForQt5.plasmaMobileGear.keysmith; # Added 2021-07-14
+  kibana7-oss = throw "kibana7-oss has been removed, as the distribution is no longer provided by upstream. https://github.com/NixOS/nixpkgs/pull/114456"; # Added 2021-06-09
+  kicad-with-packages3d = kicad; # Added 2019-11-25
+  kindlegen = throw "kindlegen has been removed from nixpkgs, as it's abandoned and no longer available for download."; # Added 2021-03-09
+  kinetic-cpp-client = throw "kinetic-cpp-client has been removed from nixpkgs, as it's abandoned."; # Added 2020-04-28
+  kino = throw "kino has been removed because it was broken and abandoned"; # Added 2021-04-25
+  knockknock = throw "knockknock has been removed from nixpkgs because the upstream project is abandoned."; # Added 2022-01-01
+  kodiGBM = kodi-gbm;
+  kodiPlain = kodi;
+  kodiPlainWayland = kodi-wayland;
+  kodiPlugins = kodiPackages; # Added 2021-03-09;
+  kramdown-rfc2629 = rubyPackages.kramdown-rfc2629; # Added 2021-03-23
+  krename-qt5 = throw "'krename-qt5' has been renamed to/replaced by 'krename'"; # Converted to throw 2022-02-22
+  krita-beta = krita; # moved from top-level 2021-12-23
+  kvm = throw "'kvm' has been renamed to/replaced by 'qemu_kvm'"; # Converted to throw 2022-02-22
+
+  ### L ###
+
+  lastfmsubmitd = throw "lastfmsubmitd was removed from nixpkgs as the project is abandoned"; # Added 2022-01-01
+  latinmodern-math = lmmath;
+  letsencrypt = throw "'letsencrypt' has been renamed to/replaced by 'certbot'"; # Converted to throw 2022-02-22
+  libGL_driver = throw "'libGL_driver' has been renamed to/replaced by 'mesa.drivers'"; # Converted to throw 2022-02-22
+  libaudit = throw "'libaudit' has been renamed to/replaced by 'audit'"; # Converted to throw 2022-02-22
+  libcanberra_gtk2 = throw "'libcanberra_gtk2' has been renamed to/replaced by 'libcanberra-gtk2'"; # Converted to throw 2022-02-22
+  libcanberra_gtk3 = throw "'libcanberra_gtk3' has been renamed to/replaced by 'libcanberra-gtk3'"; # Converted to throw 2022-02-22
+  libcap_manpages = throw "'libcap_manpages' has been renamed to/replaced by 'libcap.doc'"; # Converted to throw 2022-02-22
+  libcap_pam = if stdenv.isLinux then libcap.pam else null; # Added 2016-04-29
+  libcap_progs = throw "'libcap_progs' has been renamed to/replaced by 'libcap.out'"; # Converted to throw 2022-02-22
+  libco-canonical = throw "libco-canonical: Canonical deleted the repo, libco-canonical is not used anymore."; # Added 2021-05-16
+  libcroco = throw "libcroco has been removed as it's no longer used in any derivations."; # Added 2020-03-04
+  libdbusmenu-glib = throw "'libdbusmenu-glib' has been renamed to/replaced by 'libdbusmenu'"; # Converted to throw 2022-02-22
+  libdbusmenu_qt5 = throw "'libdbusmenu_qt5' has been renamed to/replaced by 'libsForQt5.libdbusmenu'"; # Converted to throw 2022-02-22
+  liberation_ttf_v1_from_source = throw "'liberation_ttf_v1_from_source' has been renamed to/replaced by 'liberation_ttf_v1'"; # Converted to throw 2022-02-22
+  liberation_ttf_v2_from_source = throw "'liberation_ttf_v2_from_source' has been renamed to/replaced by 'liberation_ttf_v2'"; # Converted to throw 2022-02-22
+  liberationsansnarrow = throw "'liberationsansnarrow' has been renamed to/replaced by 'liberation-sans-narrow'"; # Converted to throw 2022-02-22
+  libgksu = throw "libgksu has been removed"; # Added 2022-01-16
+  libgnome_keyring = throw "'libgnome_keyring' has been renamed to/replaced by 'libgnome-keyring'"; # Converted to throw 2022-02-22
+  libgnome_keyring3 = throw "'libgnome_keyring3' has been renamed to/replaced by 'libgnome-keyring3'"; # Converted to throw 2022-02-22
+  libgpgerror = libgpg-error; # Added 2021-09-04
+  libgroove = throw "libgroove has been removed, because it depends on an outdated and insecure version of ffmpeg"; # Added 2022-01-21
+  libgumbo = throw "'libgumbo' has been renamed to/replaced by 'gumbo'"; # Converted to throw 2022-02-22
+  libindicate = throw "libindacate has been removed from nixpkgs, as it's abandoned and uses deprecated libraries"; # Added 2019-12-10
+  libindicate-gtk2 = throw "libindacate-gtk3 has been removed from nixpkgs, as it's abandoned and uses deprecated libraries"; # Added 2019-12-10
+  libindicate-gtk3 = throw "libindacate-gtk2 has been removed from nixpkgs, as it's abandoned and uses deprecated libraries"; # Added 2019-12-10
+  libintlOrEmpty = lib.optional (!stdenv.isLinux || stdenv.hostPlatform.libc != "glibc") gettext; # Added 2018-03-14
+  libjpeg_drop = libjpeg_original; # Added 2020-06-05
+  libjson_rpc_cpp = throw "'libjson_rpc_cpp' has been renamed to/replaced by 'libjson-rpc-cpp'"; # Converted to throw 2022-02-22
+  libkml = throw "libkml has been removed from nixpkgs, as it's abandoned and no package needed it."; # Added 2021-11-09
+  liblapackWithoutAtlas = throw "'liblapackWithoutAtlas' has been renamed to/replaced by 'lapack-reference'"; # Converted to throw 2022-02-22
+  liblastfm = libsForQt5.liblastfm; # Added 2020-06-14
+  liblrdf = throw "'liblrdf' has been renamed to/replaced by 'lrdf'"; # Converted to throw 2022-02-22
+  libmsgpack = throw "'libmsgpack' has been renamed to/replaced by 'msgpack'"; # Converted to throw 2022-02-22
+  libosmpbf = throw "libosmpbf was removed because it is no longer required by osrm-backend";
+  libqmatrixclient = throw "libqmatrixclient was renamed to libquotient"; # Added 2020-04-09
+  libqrencode = throw "'libqrencode' has been renamed to/replaced by 'qrencode'"; # Converted to throw 2022-02-22
+  librdf = lrdf; # Added 2020-03-22
+  librecad2 = throw "'librecad2' has been renamed to/replaced by 'librecad'"; # Converted to throw 2022-02-22
+  librsync_0_9 = throw "librsync_0_9 has been removed"; # Added 2021-07-24
+  libseat = seatd; # Added 2021-06-24
+  libsexy = throw "libsexy has been removed from nixpkgs, as it's abandoned and no package needed it."; # Added 2019-12-10
+  libstdcxxHook = throw "libstdcxx hook has been removed because cc-wrapper is now directly aware of the c++ standard library intended to be used."; # Added 2020-06-22
+  libsysfs = throw "'libsysfs' has been renamed to/replaced by 'sysfsutils'"; # Converted to throw 2022-02-22
+  libtidy = throw "'libtidy' has been renamed to/replaced by 'html-tidy'"; # Converted to throw 2022-02-22
+  libtorrentRasterbar = libtorrent-rasterbar; # Added 2020-12-20
+  libtorrentRasterbar-1_1_x = libtorrent-rasterbar-1_1_x; # Added 2020-12-20
+  libtorrentRasterbar-1_2_x = libtorrent-rasterbar-1_2_x; # Added 2020-12-20
+  libtorrentRasterbar-2_0_x = libtorrent-rasterbar-2_0_x; # Added 2020-12-20
+  libtxc_dxtn = throw "libtxc_dxtn was removed 2020-03-16, now integrated in Mesa";
+  libtxc_dxtn_s2tc = throw "libtxc_dxtn_s2tc was removed 2020-03-16, now integrated in Mesa";
+  libudev = throw "'libudev' has been renamed to/replaced by 'udev'"; # Converted to throw 2022-02-22
+  libungif = giflib; # Added 2020-02-12
+  libusb = libusb1; # Added 2020-04-28
+  libva-full = throw "'libva-full' has been renamed to/replaced by 'libva'"; # Converted to throw 2022-02-22
+  libva1-full = throw "'libva1-full' has been renamed to/replaced by 'libva1'"; # Converted to throw 2022-02-22
+  libwnck3 = libwnck;
+  lilypond-unstable = lilypond; # Added 2021-03-11
+  lilyterm = throw "lilyterm has been removed from nixpkgs, because it was relying on a vte version that depended on python2."; # Added 2022-01-14
+  lilyterm-git = throw "lilyterm-git has been removed from nixpkgs, because it was relying on a vte version that depended on python2."; # Added 2022-01-14
+  links = throw "'links' has been renamed to/replaced by 'links2'"; # Converted to throw 2022-02-22
+  linuxband = throw "linuxband has been removed from nixpkgs, as it's abandoned upstream."; # Added 2021-12-09
+
+  # Linux kernels
+  linux-rt_5_10 = linuxKernel.kernels.linux_rt_5_10;
+  linux-rt_5_4 = linuxKernel.kernels.linux_rt_5_4;
+  linuxPackages_4_14 = linuxKernel.packages.linux_4_14;
+  linuxPackages_4_19 = linuxKernel.packages.linux_4_19;
+  linuxPackages_4_4 = linuxKernel.packages.linux_4_4;
+  linuxPackages_4_9 = linuxKernel.packages.linux_4_9;
+  linuxPackages_5_10 = linuxKernel.packages.linux_5_10;
+  linuxPackages_5_15 = linuxKernel.packages.linux_5_15;
+  linuxPackages_5_16 = linuxKernel.packages.linux_5_16;
+  linuxPackages_5_4 = linuxKernel.packages.linux_5_4;
+  linuxPackages_hardkernel_4_14 = linuxKernel.packages.hardkernel_4_14;
+  linuxPackages_rpi0 = linuxKernel.packages.linux_rpi1;
+  linuxPackages_rpi02w = linuxKernel.packages.linux_rpi3;
+  linuxPackages_rpi1 = linuxKernel.packages.linux_rpi1;
+  linuxPackages_rpi2 = linuxKernel.packages.linux_rpi2;
+  linuxPackages_rpi3 = linuxKernel.packages.linux_rpi3;
+  linuxPackages_rpi4 = linuxKernel.packages.linux_rpi4;
+  linuxPackages_rt_5_10 = linuxKernel.packages.linux_rt_5_10;
+  linuxPackages_rt_5_4 = linuxKernel.packages.linux_rt_5_4;
+  linux_4_14 = linuxKernel.kernels.linux_4_14;
+  linux_4_19 = linuxKernel.kernels.linux_4_19;
+  linux_4_4 = linuxKernel.kernels.linux_4_4;
+  linux_4_9 = linuxKernel.kernels.linux_4_9;
+  linux_5_10 = linuxKernel.kernels.linux_5_10;
+  linux_5_15 = linuxKernel.kernels.linux_5_15;
+  linux_5_16 = linuxKernel.kernels.linux_5_16;
+  linux_5_4 = linuxKernel.kernels.linux_5_4;
+  linux_mptcp_95 = linuxKernel.kernels.linux_mptcp_95;
+  linux_rpi0 = linuxKernel.kernels.linux_rpi1;
+  linux_rpi02w = linuxKernel.kernels.linux_rpi3;
+  linux_rpi1 = linuxKernel.kernels.linux_rpi1;
+  linux_rpi2 = linuxKernel.kernels.linux_rpi2;
+  linux_rpi3 = linuxKernel.kernels.linux_rpi3;
+  linux_rpi4 = linuxKernel.kernels.linux_rpi4;
+
+  # Added 2020-04-04
+  linuxPackages_testing_hardened = throw "linuxPackages_testing_hardened has been removed, please use linuxPackages_latest_hardened";
+  linux_testing_hardened = throw "linux_testing_hardened has been removed, please use linux_latest_hardened";
+
+  # Added 2021-04-04
+  linuxPackages_xen_dom0 = linuxPackages;
+  linuxPackages_latest_xen_dom0 = linuxPackages_latest;
+  linuxPackages_xen_dom0_hardened = linuxPackages_hardened;
+  linuxPackages_latest_xen_dom0_hardened = linuxPackages_latest_hardened;
+
+  # Added 2021-08-16
+  linuxPackages_latest_hardened = throw ''
+    The attribute `linuxPackages_hardened_latest' was dropped because the hardened patches
+    frequently lag behind the upstream kernel. In some cases this meant that this attribute
+    had to refer to an older kernel[1] because the latest hardened kernel was EOL and
+    the latest supported kernel didn't have patches.
+
+    If you want to use a hardened kernel, please check which kernel minors are supported
+    and use a versioned attribute, e.g. `linuxPackages_5_10_hardened'.
+
+    [1] for more context: https://github.com/NixOS/nixpkgs/pull/133587
+  '';
+  linux_latest_hardened = linuxPackages_latest_hardened;
+
+  linux-steam-integration = throw "linux-steam-integration has been removed, as the upstream project has been abandoned"; # Added 2020-05-22
+
+  loadcaffe = throw "loadcaffe has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  lobster-two = google-fonts; # Added 2021-07-22
+  love_0_7 = throw "love_0_7 was removed because it is a very old version and no longer used by any package in nixpkgs"; # Added 2022-01-15
+  love_0_8 = throw "love_0_8 was removed because it is a very old version and no longer used by any package in nixpkgs"; # Added 2022-01-15
+  love_0_9 = throw "love_0_9 was removed because was broken for a long time and no longer used by any package in nixpkgs"; # Added 2022-01-15
+  lprof = throw "lprof has been removed as it's unmaintained upstream and broken in nixpkgs since a while ago"; # Added 2021-02-15
+  lttngTools = throw "'lttngTools' has been renamed to/replaced by 'lttng-tools'"; # Converted to throw 2022-02-22
+  lttngUst = throw "'lttngUst' has been renamed to/replaced by 'lttng-ust'"; # Converted to throw 2022-02-22
+  lua5_1_sockets = throw "'lua5_1_sockets' has been renamed to/replaced by 'lua51Packages.luasocket'"; # Converted to throw 2022-02-22
+  lua5_expat = throw "'lua5_expat' has been renamed to/replaced by 'luaPackages.luaexpat'"; # Converted to throw 2022-02-22
+  lua5_sec = throw "'lua5_sec' has been renamed to/replaced by 'luaPackages.luasec'"; # Converted to throw 2022-02-22
+  lumpy = throw "lumpy has been removed from nixpkgs, as it is stuck on python2."; # Added 2022-01-12
+  lxappearance-gtk3 = throw "lxappearance-gtk3 has been removed. Use lxappearance instead, which now defaults to Gtk3"; # Added 2020-06-03
+  lzma = xz; # moved from top-level 2021-03-14
+
+  ### M ###
+
+  m3d-linux = throw "'m3d-linux' has been renamed to/replaced by 'm33-linux'"; # Converted to throw 2022-02-22
+  mail-notification = throw "mail-notification has been removed from nixpkgs, as it's unmaintained and has dependencies on old gnome libraries we want to remove"; # Added 2021-08-21
+  mailpile = throw "mailpile was removed from nixpkgs, as it is stuck on python2."; # Added 2022-01-12
+  man_db = throw "'man_db' has been renamed to/replaced by 'man-db'"; # Converted to throw 2022-02-22
+  manpages = throw "'manpages' has been renamed to/replaced by 'man-pages'"; # Converted to throw 2022-02-22
+  marathon = throw "marathon has been removed from nixpkgs, as it's unmaintained"; # Added 2020-08-15
+  mariadb-client = hiPrio mariadb.client; #added 2019.07.28
+  matcha = throw "matcha was renamed to matcha-gtk-theme"; # added 2020-05-09
+  mathics = throw "mathics has been removed from nixpkgs, as it's unmaintained"; # Added 2020-08-15
+  matrique = spectral; # Added 2020-01-27
+  mbedtls_1_3 = throw "mbedtls_1_3 is end of life, see https://tls.mbed.org/kb/how-to/upgrade-2.0"; # Added 2019-12-08
+  mcgrid = throw "mcgrid has been removed from nixpkgs, as it's not compatible with rivet 3"; # Added 2020-05-23
+  mcomix = throw "mcomix has been removed from nixpkgs, as it's unmaintained; try mcomix3 a Python 3 fork"; # Added 2019-12-10, modified 2020-11-25
+  mediatomb = throw "mediatomb is no longer maintained upstream, use gerbera instead"; # added 2022-01-04
+  meme = meme-image-generator; # Added 2021-04-21
+  memtest86 = throw "'memtest86' has been renamed to/replaced by 'memtest86plus'"; # Converted to throw 2022-02-22
+  mercurial_4 = throw "mercurial_4 has been removed as it's unmaintained"; # Added 2021-10-18
+  mesos = throw "mesos has been removed from nixpkgs, as it's unmaintained"; # Added 2020-08-15
+  mess = mame; # Added 2019-10-30
+  metamorphose2 = throw "metamorphose2 has been removed from nixpkgs, as it was stuck on python2."; # Added 2022-01-12
+  mididings = throw "mididings has been removed from nixpkgs as it doesn't support recent python3 versions and its upstream stopped maintaining it."; # Added 2022-01-12
+  midoriWrapper = throw "'midoriWrapper' has been renamed to/replaced by 'midori'"; # Converted to throw 2022-02-22
+  mime-types = mailcap; # Added 2022-01-21
+  mimms = throw "mimms has been removed from nixpkgs as the upstream project is stuck on python2."; # Added 2022-01-01
+  minergate-cli = throw "minergatecli has been removed from nixpkgs, because the package is unmaintained and the site has a bad reputation"; # Added 2021-08-13
+  minergate = throw "minergate has been removed from nixpkgs, because the package is unmaintained and the site has a bad reputation"; # Added 2021-08-13
+  minetime = throw "minetime has been removed from nixpkgs, because it was discontinued 2021-06-22"; # Added 2021-10-14
+  mirage = throw "mirage has been removed from nixpkgs, as it's unmaintained"; # Added 2019-12-10
+  mist = throw "mist has been removed as the upstream project has been abandoned, see https://github.com/ethereum/mist#mist-browser-deprecated"; # Added 2020-08-15
+  mlt-qt5 = throw "'mlt-qt5' has been renamed to/replaced by 'libsForQt5.mlt'"; # Converted to throw 2022-02-22
+  mobile_broadband_provider_info = throw "'mobile_broadband_provider_info' has been renamed to/replaced by 'mobile-broadband-provider-info'"; # Converted to throw 2022-02-22
+  moby = throw "moby has been removed, merged into linuxkit in 2018.  Use linuxkit instead.";
+  module_init_tools = throw "'module_init_tools' has been renamed to/replaced by 'kmod'"; # Converted to throw 2022-02-22
+  monero = monero-cli; # Added 2021-11-28
+  monodevelop = throw "monodevelop has been removed from nixpgks"; # Added 2022-01-15
+  mopidy-gmusic = throw "mopidy-gmusic has been removed because Google Play Music was discontinued"; # Added 2021-03-07
+  mopidy-local-images = throw "mopidy-local-images has been removed as it's unmaintained. Its functionality has been merged into the mopidy-local extension."; # Added 2020-10-18
+  mopidy-local-sqlite = throw "mopidy-local-sqlite has been removed as it's unmaintained. Its functionality has been merged into the mopidy-local extension."; # Added 2020-10-18
+
+  morituri = throw "'morituri' has been renamed to/replaced by 'whipper'"; # Converted to throw 2022-02-22
+  mozart-binary = mozart2-binary; # Added 2019-09-23
+  mozart = mozart2-binary; # Added 2019-09-23
+  mpc_cli = mpc-cli; # moved from top-level 2022-01-24
+  mpd_clientlib = libmpdclient; # Added 2021-02-11
+  mpich2 = throw "'mpich2' has been renamed to/replaced by 'mpich'"; # Converted to throw 2022-02-22
+  msf = throw "'msf' has been renamed to/replaced by 'metasploit'"; # Converted to throw 2022-02-22
+  multimc = throw "multimc was removed from nixpkgs; use polymc instead (see https://github.com/NixOS/nixpkgs/pull/154051 for more information)"; # Added 2022-01-08
+  mumble_git = pkgs.mumble; # Added 2019-08-01
+  murmur_git = pkgs.murmur; # Added 2019-08-01
+  mysql-client = hiPrio mariadb.client;
+  mysql = mariadb; # moved from top-level 2021-03-14
+
+  # NOTE: 2018-07-12: legacy alias:
+  # grsecurity business is done: https://www.theregister.co.uk/2018/02/08/bruce_perens_grsecurity_anti_slapp/
+
+  # floating point textures patents are expired,
+  # so package reduced to alias
+  mesa_drivers = mesa.drivers;
+  mesa_noglu = throw "'mesa_noglu' has been renamed to/replaced by 'mesa'"; # Converted to throw 2022-02-22
+
+  mpv-with-scripts = self.wrapMpv self.mpv-unwrapped { }; # Added 2020-05-22
+  mssys = throw "'mssys' has been renamed to/replaced by 'ms-sys'"; # Converted to throw 2022-02-22
+  multipath_tools = throw "'multipath_tools' has been renamed to/replaced by 'multipath-tools'"; # Converted to throw 2022-02-22
+  mumsi = throw "mumsi has been removed from nixpkgs, as it's unmaintained and does not build anymore"; # Added 2021-11-18
+  mupen64plus1_5 = throw "'mupen64plus1_5' has been renamed to/replaced by 'mupen64plus'"; # Converted to throw 2022-02-22
+  mx = throw "graalvm8 and its tools were deprecated in favor of graalvm8-ce"; # Added 2021-10-15
+  mxisd = throw "mxisd has been removed from nixpkgs as it has reached end of life, see https://github.com/kamax-matrix/mxisd/blob/535e0a5b96ab63cb0ddef90f6f42c5866407df95/EOL.md#end-of-life-notice . ma1sd may be a suitable alternative."; # Added 2021-04-15
+  mysqlWorkbench = throw "'mysqlWorkbench' has been renamed to/replaced by 'mysql-workbench'"; # Converted to throw 2022-02-22
+
+  ### N ###
+
+  net_snmp = net-snmp; # Added 2019-12-21
+  nagiosPluginsOfficial = monitoring-plugins;
+  navit = throw "navit has been removed from nixpkgs, due to being unmaintained"; # Added 2021-06-07
+  ncat = throw "'ncat' has been renamed to/replaced by 'nmap'"; # Converted to throw 2022-02-22
+  neap = throw "neap was removed from nixpkgs, as it relies on python2"; # Added 2022-01-12
+  netcat-openbsd = throw "'netcat-openbsd' has been renamed to/replaced by 'libressl.nc'"; # Converted to throw 2022-02-22
+  netease-cloud-music = throw "netease-cloud-music has been removed together with deepin"; # Added 2020-08-31
+  networkmanager_fortisslvpn = throw "'networkmanager_fortisslvpn' has been renamed to/replaced by 'networkmanager-fortisslvpn'"; # Converted to throw 2022-02-22
+  networkmanager_iodine = throw "'networkmanager_iodine' has been renamed to/replaced by 'networkmanager-iodine'"; # Converted to throw 2022-02-22
+  networkmanager_l2tp = throw "'networkmanager_l2tp' has been renamed to/replaced by 'networkmanager-l2tp'"; # Converted to throw 2022-02-22
+  networkmanager_openconnect = throw "'networkmanager_openconnect' has been renamed to/replaced by 'networkmanager-openconnect'"; # Converted to throw 2022-02-22
+  networkmanager_openvpn = throw "'networkmanager_openvpn' has been renamed to/replaced by 'networkmanager-openvpn'"; # Converted to throw 2022-02-22
+  networkmanager_vpnc = throw "'networkmanager_vpnc' has been renamed to/replaced by 'networkmanager-vpnc'"; # Converted to throw 2022-02-22
+  neutral-style = throw "neural-style has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  nfsUtils = throw "'nfsUtils' has been renamed to/replaced by 'nfs-utils'"; # Converted to throw 2022-02-22
+  nginxUnstable = throw "'nginxUnstable' has been renamed to/replaced by 'nginxMainline'"; # Converted to throw 2022-02-22
+  nilfs_utils = throw "'nilfs_utils' has been renamed to/replaced by 'nilfs-utils'"; # Converted to throw 2022-02-22
+  nix-direnv-flakes = nix-direnv;
+  nix-review = nixpkgs-review; # Added 2019-12-22
+  nixFlakes = nixVersions.stable; # Added 2021-05-21
+  nixStable = nixVersions.stable; # Added 2022-01-24
+  nixUnstable = nixVersions.unstable; # Added 2022-01-26
+  nix_2_3 = nixVersions.nix_2_3;
+  nix_2_4 = nixVersions.nix_2_4;
+  nix_2_5 = nixVersions.nix_2_5;
+  nix_2_6 = nixVersions.nix_2_6;
+  nixopsUnstable = nixops_unstable; # Added 2022-03-03
+  nmap-unfree = nmap; # Added 2021-04-06
+  nmap_graphical = throw "'nmap_graphical' has been renamed to/replaced by 'nmap-graphical'"; # Converted to throw 2022-02-22
+  nologin = throw "'nologin' has been renamed to/replaced by 'shadow'"; # Converted to throw 2022-02-22
+  nordic-polar = throw "nordic-polar was removed on 2021-05-27, now integrated in nordic"; # Added 2021-05-27
+  noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16
+  nottetris2 = throw "nottetris2 was removed because it is unmaintained by upstream and broken"; # Added 2022-01-15
+  now-cli = throw "now-cli has been replaced with nodePackages.vercel"; # Added 2021-08-05
+  nxproxy = throw "'nxproxy' has been renamed to/replaced by 'nx-libs'"; # Converted to throw 2022-02-22
+  nylas-mail-bin = throw "nylas-mail-bin was deprecated on 2019-09-11: abandoned by upstream";
+
+  ### O ###
+
+  oracleXE = throw "oracleXE has been removed, as it's heavily outdated and unmaintained."; # Added 2020-10-09
+  OVMF-CSM = throw "OVMF-CSM has been removed in favor of OVMFFull"; # Added 2021-10-16
+  OVMF-secureBoot = throw "OVMF-secureBoot has been removed in favor of OVMFFull"; # Added 2021-10-16
+  oauth2_proxy = oauth2-proxy; # Added 2021-04-18
+  oblogout = throw "oblogout has been removed from nixpkgs, as it's archived upstream."; # Added 2019-12-10
+  octoprint-plugins = throw "octoprint-plugins are now part of the octoprint.python.pkgs package set."; # Added 2021-01-24
+  ocz-ssd-guru = throw "ocz-ssd-guru has been removed due to there being no source available"; # Added 2021-07-12
+  ofp = throw "ofp is not compatible with odp-dpdk";
+  olifant = throw "olifant has been removed from nixpkgs, as it was unmaintained."; # Added 2021-08-05
+  onnxruntime = throw "onnxruntime has been removed due to poor maintainability"; # Added 2020-12-04
+  openbazaar = throw "openbazzar has been removed from nixpkgs as upstream has abandoned the project"; # Added 2022-01-06
+  openbazaar-client = throw "openbazzar-client has been removed from nixpkgs as upstream has abandoned the project"; # Added 2022-01-06
+  opencascade_oce = throw "'opencascade_oce' has been renamed to/replaced by 'opencascade'"; # Converted to throw 2022-02-22
+  opencl-icd = throw "'opencl-icd' has been renamed to/replaced by 'ocl-icd'"; # Converted to throw 2022-02-22
+  openconnect_pa = throw "openconnect_pa fork has been discontinued, support for GlobalProtect is now available in openconnect"; # Added 2021-05-21
+  openelec-dvb-firmware = libreelec-dvb-firmware; # Added 2021-05-10
+  openexr_ctl = throw "'openexr_ctl' has been renamed to/replaced by 'ctl'"; # Converted to throw 2022-02-22
+  openisns = open-isns; # Added 2020-01-28
+  openjpeg_1 = throw "openjpeg_1 has been removed, use openjpeg_2 instead"; # Added 2021-01-24
+  openjpeg_2 = openjpeg; # Added 2021-01-25
+  openmpt123 = libopenmpt; # Added 2021-09-05
+  opensans-ttf = throw "'opensans-ttf' has been renamed to/replaced by 'open-sans'"; # Converted to throw 2022-02-22
+  openssh_with_kerberos = throw "'openssh_with_kerberos' has been renamed to/replaced by 'openssh'"; # Converted to throw 2022-02-22
+  orchis = orchis-theme; # Added 2021-06-09
+  osquery = throw "osquery has been removed."; # Added 2019-11-24
+  osxfuse = macfuse-stubs; # Added 2021-03-20
+  otter-browser = throw "otter-browser has been removed from nixpkgs, as it was unmaintained"; # Added 2020-02-02
+  owncloudclient = throw "'owncloudclient' has been renamed to/replaced by 'owncloud-client'"; # Converted to throw 2022-02-22
+
+  ### P ###
+
+  PPSSPP = throw "'PPSSPP' has been renamed to/replaced by 'ppsspp'"; # Converted to throw 2022-02-22
+
+  p11_kit = throw "'p11_kit' has been renamed to/replaced by 'p11-kit'"; # Converted to throw 2022-02-22
+  packet-cli = metal-cli; # Added 2021-10-25
+  paperless = paperless-ng; # Added 2021-06-06
+  parity = openethereum; # Added 2020-08-01
+  parity-ui = throw "parity-ui was removed because it was broken and unmaintained by upstream"; # Added 2022-01-10
+  parquet-cpp = throw "'parquet-cpp' has been renamed to/replaced by 'arrow-cpp'"; # Converted to throw 2022-02-22
+  pass-otp = throw "'pass-otp' has been renamed to/replaced by 'pass.withExtensions'"; # Converted to throw 2022-02-22
+  pdfmod = throw "pdfmod has been removed"; # Added 2022-01-15
+  pdfread = throw "pdfread has been remove because it is unmaintained for years and the sources are no longer available"; # Added 2021-07-22
+  pdf-redact-tools = throw "pdf-redact-tools has been removed from nixpkgs because the upstream has abandoned the project."; # Added 2022-01-01
+  pdf2htmlEx = throw "pdf2htmlEx has been removed from nixpkgs, as it was unmaintained"; # Added 2020-11-03
+  perlXMLParser = throw "'perlXMLParser' has been renamed to/replaced by 'perlPackages.XMLParser'"; # Converted to throw 2022-02-22
+  perlArchiveCpio = throw "'perlArchiveCpio' has been renamed to/replaced by 'perlPackages.ArchiveCpio'"; # Converted to throw 2022-02-22
+  pgadmin = pgadmin4;
+  pgp-tools = throw "'pgp-tools' has been renamed to/replaced by 'signing-party'"; # Converted to throw 2022-02-22
+  pg_tmp = throw "'pg_tmp' has been renamed to/replaced by 'ephemeralpg'"; # Converted to throw 2022-02-22
+
+  phantomjs = throw "phantomjs 1.9.8 has been dropped due to lack of maintenance and security issues"; # Added 2022-02-20
+
+  # Obsolete PHP version aliases
+  php73 = throw "php73 has been dropped due to the lack of maintanence from upstream for future releases."; # Added 2021-06-03
+  php73Packages = php73; # Added 2021-06-03
+  php73Extensions = php73; # Added 2021-06-03
+
+  php-embed = throw ''
+    php*-embed has been dropped, you can build something similar
+    with the following snippet:
+    php74.override { embedSupport = true; apxs2Support = false; }
+  ''; # Added 2020-04-01
+  php73-embed = php-embed; # Added 2020-04-01
+  php74-embed = php-embed; # Added 2020-04-01
+
+  phpPackages-embed = throw ''
+    php*Packages-embed has been dropped, you can build something
+    similar with the following snippet:
+    (php74.override { embedSupport = true; apxs2Support = false; }).packages
+  ''; # Added 2020-04-01
+  php73Packages-embed = phpPackages-embed;
+  php74Packages-embed = phpPackages-embed;
+
+  php-unit = throw ''
+    php*-unit has been dropped, you can build something similar with
+    the following snippet:
+    php74.override {
+      embedSupport = true;
+      apxs2Support = false;
+      systemdSupport = false;
+      phpdbgSupport = false;
+      cgiSupport = false;
+      fpmSupport = false;
+    }
+  ''; # Added 2020-04-01
+  php73-unit = php-unit; # Added 2020-04-01
+  php74-unit = php-unit; # Added 2020-04-01
+
+  phpPackages-unit = throw ''
+    php*Packages-unit has been dropped, you can build something
+     similar with this following snippet:
+    (php74.override {
+      embedSupport = true;
+      apxs2Support = false;
+      systemdSupport = false;
+      phpdbgSupport = false;
+      cgiSupport = false;
+      fpmSupport = false;
+    }).packages
+  ''; # Added 2020-04-01
+  php73Packages-unit = phpPackages-unit;
+  php74Packages-unit = phpPackages-unit;
+
+  pidgin-with-plugins = throw "'pidgin-with-plugins' has been renamed to/replaced by 'pidgin'"; # Converted to throw 2022-02-22
+  pidginlatex = throw "'pidginlatex' has been renamed to/replaced by 'pidgin-latex'"; # Converted to throw 2022-02-22
+  pidginlatexSF = throw "'pidginlatexSF' has been renamed to/replaced by 'pidgin-latex'"; # Converted to throw 2022-02-22
+  pidginmsnpecan = throw "'pidginmsnpecan' has been renamed to/replaced by 'pidgin-msn-pecan'"; # Converted to throw 2022-02-22
+  pidginosd = throw "'pidginosd' has been renamed to/replaced by 'pidgin-osd'"; # Converted to throw 2022-02-22
+  pidginotr = throw "'pidginotr' has been renamed to/replaced by 'pidgin-otr'"; # Converted to throw 2022-02-22
+  pidginsipe = throw "'pidginsipe' has been renamed to/replaced by 'pidgin-sipe'"; # Converted to throw 2022-02-22
+  pidginwindowmerge = throw "'pidginwindowmerge' has been renamed to/replaced by 'pidgin-window-merge'"; # Converted to throw 2022-02-22
+  pifi = throw "pifi has been removed from nixpkgs, as it is no longer developed."; # Added 2022-01-19
+  piwik = throw "'piwik' has been renamed to/replaced by 'matomo'"; # Converted to throw 2022-02-22
+  pkgconfig = pkg-config; # Added 2018-02-02, moved to aliases.nix 2021-01-18
+  pkgconfigUpstream = throw "'pkgconfigUpstream' has been renamed to/replaced by 'pkg-configUpstream'"; # Converted to throw 2022-02-22
+  planner = throw "planner has been removed from nixpkgs, as it is no longer developed and still uses python2/PyGTK."; # Added 2021-02-02
+  pleroma-otp = pleroma; # Added 2021-07-10
+  plexpy = throw "'plexpy' has been renamed to/replaced by 'tautulli'"; # Converted to throw 2022-02-22
+  pltScheme = racket; # just to be sure
+  pmtools = throw "'pmtools' has been renamed to/replaced by 'acpica-tools'"; # Converted to throw 2022-02-22
+  polarssl = throw "'polarssl' has been renamed to/replaced by 'mbedtls'"; # Converted to throw 2022-02-22
+  polysh = throw "polysh has been removed from nixpkgs as the upstream has abandoned the project."; # Added 2022-01-01
+  poppler_qt5 = throw "'poppler_qt5' has been renamed to/replaced by 'libsForQt5.poppler'"; # Converted to throw 2022-02-22
+
+  # postgresql
+  postgresql96 = postgresql_9_6;
+  postgresql_9_6 = throw "postgresql_9_6 has been removed from nixpkgs, as this version is no longer supported by upstream"; # Added 2021-12-03
+
+  # postgresql plugins
+  cstore_fdw = postgresqlPackages.cstore_fdw;
+  pg_cron = postgresqlPackages.pg_cron;
+  pg_hll = postgresqlPackages.pg_hll;
+  pg_repack = postgresqlPackages.pg_repack;
+  pg_similarity = postgresqlPackages.pg_similarity;
+  pg_topn = postgresqlPackages.pg_topn;
+  pgjwt = postgresqlPackages.pgjwt;
+  pgroonga = postgresqlPackages.pgroonga;
+  pgtap = postgresqlPackages.pgtap;
+  plv8 = postgresqlPackages.plv8;
+  postgis = postgresqlPackages.postgis;
+  tilp2 = throw "tilp2 has been removed"; # Added 2022-01-15
+  timekeeper = throw "timekeeper has been removed"; # Added 2022-01-16
+  timescaledb = postgresqlPackages.timescaledb;
+  tlauncher = throw "tlauncher has been removed because there questionable practices and legality concerns";
+  tsearch_extras = postgresqlPackages.tsearch_extras;
+
+  phonon = throw "phonon: Please use libsForQt5.phonon, as Qt4 support in this package has been removed."; # Added 2019-11-22
+  phonon-backend-gstreamer = throw "phonon-backend-gstreamer: Please use libsForQt5.phonon-backend-gstreamer, as Qt4 support in this package has been removed."; # Added 2019-11-22
+  phonon-backend-vlc = throw "phonon-backend-vlc: Please use libsForQt5.phonon-backend-vlc, as Qt4 support in this package has been removed."; # Added 2019-11-22
+  pinentry_curses = pinentry-curses; # Added 2019-10-14
+  pinentry_emacs = pinentry-emacs; # Added 2019-10-14
+  pinentry_gnome = pinentry-gnome; # Added 2019-10-14
+  pinentry_gtk2 = pinentry-gtk2; # Added 2019-10-14
+  pinentry_qt = pinentry-qt; # Added 2019-10-14
+  pinentry_qt5 = pinentry-qt; # Added 2020-02-11
+  pmenu = throw "pmenu has been removed from nixpkgs, as its maintainer is no longer interested in the package."; # Added 2019-12-10
+  privateer = throw "privateer was removed because it was broken"; # Added 2021-05-18
+  processing3 = processing; # Added 2019-08-16
+  procps-ng = throw "'procps-ng' has been renamed to/replaced by 'procps'"; # Converted to throw 2022-02-22
+  proglodyte-wasm = throw "proglodyte-wasm has been removed from nixpkgs, because it is unmaintained since 5 years with zero github stars"; # Added 2021-06-30
+  proj_5 = throw "Proj-5 has been removed from nixpkgs, use proj instead."; # Added 2021-04-12
+  prometheus-cups-exporter = throw "outdated and broken by design; removed by developer."; # Added 2021-03-16
+  pulseaudioLight = throw "'pulseaudioLight' has been renamed to/replaced by 'pulseaudio'"; # Converted to throw 2022-02-22
+  pulseeffects = throw "Use pulseeffects-legacy if you use PulseAudio and easyeffects if you use PipeWire."; # Added 2021-02-13
+  pulseeffects-pw = easyeffects; # Added 2021-07-07
+  pyIRCt = throw "pyIRCt has been removed from nixpkgs as it is unmaintained and python2-only";
+  pyMAILt = throw "pyMAILt has been removed from nixpkgs as it is unmaintained and python2-only";
+  pybind11 = throw "pybind11 was removed because pythonPackages.pybind11 for the appropriate version of Python should be used"; # Added 2021-05-14
+  pybitmessage = throw "pybitmessage was removed from nixpkgs as it is stuck on python2."; # Added 2022-01-01
+  pygmentex = texlive.bin.pygmentex; # Added 2019-12-15
+  pyload = throw "pyload has been removed from nixpkgs, as it was unmaintained."; # Added 2021-03-21
+  pynagsystemd = throw "pynagsystemd was removed as it was unmaintained and incompatible with recent systemd versions. Instead use its fork check_systemd."; # Added 2020-10-24
+  pyo3-pack = maturin;
+  pyrex = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2."; # Added 2022-01-12
+  pyrex095 = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2."; # Added 2022-01-12
+  pyrex096 = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2."; # Added 2022-01-12
+  pyrit = throw "pyrit has been removed from nixpkgs as the project is still stuck on python2."; # Added 2022-01-01
+  python = python2; # Added 2022-01-11
+  python-swiftclient = swiftclient; # Added 2021-09-09
+  python2nix = throw "python2nix has been removed as it is outdated. Use e.g. nixpkgs-pytools instead."; # Added 2021-03-08
+  pythonFull = python2Full; # Added 2022-01-11
+  pythonPackages = python.pkgs; # Added 2022-01-11
+
+  ### Q ###
+
+  QmidiNet = throw "'QmidiNet' has been renamed to/replaced by 'qmidinet'"; # Converted to throw 2022-02-22
+  qca-qt5 = throw "'qca-qt5' has been renamed to/replaced by 'libsForQt5.qca-qt5'"; # Converted to throw 2022-02-22
+  qcsxcad = libsForQt5.qcsxcad; # Added 2020-11-05
+  qflipper = qFlipper; # Added 2022-02-11
+  qmk_firmware = throw "qmk_firmware has been removed because it was broken"; # Added 2021-04-02
+  qr-filetransfer = throw ''"qr-filetransfer" has been renamed to "qrcp"''; # Added 2020-12-02
+  qt-3 = throw "qt-3 has been removed from nixpkgs, as it's unmaintained and insecure"; # Added 2021-02-15
+  qt-recordmydesktop = throw "qt-recordmydesktop has been removed from nixpkgs, as it's abandoned and uses deprecated libraries"; # Added 2019-12-10
+  qt5ct = libsForQt5.qt5ct; # Added 2021-12-27
+  qtcurve = libsForQt5.qtcurve; # Added 2020-11-07
+  qtkeychain = throw "the qtkeychain attribute (qt4 version) has been removes, use the qt5 version: libsForQt5.qtkeychain"; # Added 2021-08-04
+  quagga = throw "quagga is no longer maintained upstream"; # Added 2021-04-22
+  quake3game = throw "'quake3game' has been renamed to/replaced by 'ioquake3'"; # Converted to throw 2022-02-22
+  quaternion-git = throw "quaternion-git has been removed in favor of the stable version 'quaternion'"; # Added 2020-04-09
+  quilter = throw "quilter has been removed from nixpkgs, as it was unmaintained."; # Added 2021-08-03
+  qvim = throw "qvim has been removed."; # Added 2020-08-31
+  qweechat = throw "qweechat has been removed because it was broken"; # Added 2021-03-08
+  qwt6 = throw "'qwt6' has been renamed to/replaced by 'libsForQt5.qwt'"; # Converted to throw 2022-02-22
+
+  ### R ###
+
+  radare2-cutter = cutter; # Added 2021-03-30
+  raspberrypi-tools = throw "raspberrypi-tools has been removed in favor of identical 'libraspberrypi'"; # Added 2020-12-24
+  rawdog = throw "rawdog has been removed from nixpkgs as it still requires python2."; # Added 2022-01-01
+  rdf4store = throw "rdf4store has been removed from nixpkgs."; # Added 2019-12-21
+  rdiff_backup = throw "'rdiff_backup' has been renamed to/replaced by 'rdiff-backup'"; # Converted to throw 2022-02-22
+  rdmd = throw "'rdmd' has been renamed to/replaced by 'dtools'"; # Converted to throw 2022-02-22
+  readline5 = throw "readline-5 is no longer supported in nixpkgs, please use 'readline' for main supported version"; # Added 2022-02-20
+  readline62 = throw "readline-6.2 is no longer supported in nixpkgs, please use 'readline' for main supported version"; # Added 2022-02-20
+  readline80 = throw "readline-8.0 is no longer supported in nixpkgs, please use 'readline' for main supported version or 'readline81' for most recent version"; # Added 2021-04-22
+  recordmydesktop = throw "recordmydesktop has been removed from nixpkgs, as it's unmaintained and uses deprecated libraries"; # Added 2019-12-10
+  redkite = throw "redkite was archived by upstream"; # Added 2021-04-12
+  redshift-wlr = throw "redshift-wlr has been replaced by gammastep"; # Added 2021-12-25
+  renpy = throw "renpy has been removed from nixpkgs, it was unmaintained and the latest packaged version required python2."; # Added 2022-01-12
+  residualvm = throw "residualvm was merged to scummvm code in 2018-06-15; consider using scummvm"; # Added 2021-11-27
+  retroArchCores = throw "retroArchCores has been removed. Please use overrides instead, e.g.: `retroarch.override { cores = with libretro; [ ... ]; }`"; # Added 2021-11-19
+  retroshare06 = retroshare;
+  rfkill = throw "rfkill has been removed, as it's included in util-linux"; # Added 2020-08-23
+  riak-cs = throw "riak-cs is not maintained anymore"; # Added 2020-10-14
+  rimshot = throw "rimshot has been removed, because it is broken and no longer maintained upstream"; # Added 2022-01-15
+  ring-daemon = jami-daemon; # Added 2021-10-26
+  rkt = throw "rkt was archived by upstream"; # Added 2020-05-16
+  rng_tools = throw "'rng_tools' has been renamed to/replaced by 'rng-tools'"; # Converted to throw 2022-02-22
+  robomongo = throw "'robomongo' has been renamed to/replaced by 'robo3t'"; # Converted to throw 2022-02-22
+  rocm-runtime-ext = throw "rocm-runtime-ext has been removed, since its functionality was added to rocm-runtime"; #added 2020-08-21
+  rpiboot-unstable = rpiboot; # Added 2021-07-30
+  rssglx = throw "'rssglx' has been renamed to/replaced by 'rss-glx'"; # Converted to throw 2022-02-22
+  rssh = throw "rssh has been removed from nixpkgs: no upstream releases since 2012, several known CVEs"; # Added 2020-08-25
+  rtv = throw "rtv was archived by upstream. Consider using tuir, an actively maintained fork"; # Added 2021-08-08
+  rubyMinimal = throw "rubyMinimal was removed due to being unused";
+  runCommandNoCC = runCommand;
+  runCommandNoCCLocal = runCommandLocal;
+  runwayml = throw "runwayml is now a webapp"; # Added 2021-04-17
+  rustracerd = throw "rustracerd has been removed because it is broken and unmaintained"; # Added 2021-10-19
+  rxvt_unicode = rxvt-unicode-unwrapped; # Added 2020-02-02
+  rxvt_unicode-with-plugins = rxvt-unicode; # Added 2020-02-02
+
+  # The alias for linuxPackages*.rtlwifi_new is defined in ./all-packages.nix,
+  # due to it being inside the linuxPackagesFor function.
+  rtlwifi_new-firmware = rtw88-firmware; # Added 2021-03-14
+
+  ### S ###
+
+  s2n = s2n-tls; # Added 2021-03-03
+  s6Dns = throw "'s6Dns' has been renamed to/replaced by 's6-dns'"; # Converted to throw 2022-02-22
+  s6LinuxUtils = throw "'s6LinuxUtils' has been renamed to/replaced by 's6-linux-utils'"; # Converted to throw 2022-02-22
+  s6Networking = throw "'s6Networking' has been renamed to/replaced by 's6-networking'"; # Converted to throw 2022-02-22
+  s6PortableUtils = throw "'s6PortableUtils' has been renamed to/replaced by 's6-portable-utils'"; # Converted to throw 2022-02-22
+  sagemath = throw "'sagemath' has been renamed to/replaced by 'sage'"; # Converted to throw 2022-02-22
+  sam = throw "'sam' has been renamed to/replaced by 'deadpixi-sam'"; # Converted to throw 2022-02-22
+  samsungUnifiedLinuxDriver = throw "'samsungUnifiedLinuxDriver' has been renamed to/replaced by 'samsung-unified-linux-driver'"; # Converted to throw 2022-02-22
+  sane-backends-git = sane-backends; # Added 2021-02-19
+  saneBackends = throw "'saneBackends' has been renamed to/replaced by 'sane-backends'"; # Converted to throw 2022-02-22
+  saneBackendsGit = throw "'saneBackendsGit' has been renamed to/replaced by 'sane-backends'"; # Converted to throw 2022-02-22
+  saneFrontends = throw "'saneFrontends' has been renamed to/replaced by 'sane-frontends'"; # Converted to throw 2022-02-22
+  scaff = throw "scaff is deprecated - replaced by https://gitlab.com/jD91mZM2/inc (not in nixpkgs yet)"; # Added 2020-03-01
+  scallion = throw "scallion has been removed, because it is currently unmaintained upstream"; # added 2021-12-15
+  scim = throw "'scim' has been renamed to/replaced by 'sc-im'"; # Converted to throw 2022-02-22
+  scollector = throw "'scollector' has been renamed to/replaced by 'bosun'"; # Converted to throw 2022-02-22
+  scyther = throw "scyther has been removed since it currently only supports Python 2, see https://github.com/cascremers/scyther/issues/20"; # Added 2021-10-07
+  sdlmame = mame; # Added 2019-10-30
+  seeks = throw "seeks has been removed from nixpkgs, as it was unmaintained"; # Added 2020-06-21
+  seg3d = throw "seg3d has been removed from nixpkgs (2019-11-10)";
+  sepolgen = throw "sepolgen was merged into selinux-python"; # Added 2021-11-11
+  shared_mime_info = throw "'shared_mime_info' has been renamed to/replaced by 'shared-mime-info'"; # Converted to throw 2022-02-22
+  shellinabox = throw "shellinabox has been removed from nixpkgs, as it was unmaintained upstream"; # Added 2021-12-15
+  sickbeard = throw "sickbeard has been removed from nixpkgs, as it was unmaintained."; # Added 2022-01-01
+  sickrage = throw "sickbeard has been removed from nixpkgs, as it was unmaintained."; # Added 2022-01-01
+  sigurlx = throw "sigurlx has been removed (upstream is gone)"; # Added 2022-01-24
+  skrooge2 = throw "'skrooge2' has been renamed to/replaced by 'skrooge'"; # Converted to throw 2022-02-22
+  sky = throw "sky has been removed from nixpkgs (2020-09-16)";
+  skype = throw "'skype' has been renamed to/replaced by 'skypeforlinux'"; # Converted to throw 2022-02-22
+  skype4pidgin = throw "skype4pidgin has been remove from nixpkgs, because it stopped working when classic Skype was retired."; # Added 2021-07-14
+  skype_call_recorder = throw "skype_call_recorder has been removed from nixpkgs, because it stopped working when classic Skype was retired."; # Added 2020-10-31
+  slack-dark = slack; # Added 2020-03-27
+  slic3r-prusa3d = throw "'slic3r-prusa3d' has been renamed to/replaced by 'prusa-slicer'"; # Converted to throw 2022-02-22
+  slim = throw "slim has been removed. Please use a different display-manager"; # Added 2019-11-11
+  slimThemes = throw "slimThemes has been removed because slim has been also"; # Added 2019-11-11
+  slurm-full = throw "'slurm-full' has been renamed to/replaced by 'slurm'"; # Converted to throw 2022-02-22
+  slurm-llnl = slurm; # renamed July 2017
+  slurm-llnl-full = slurm-full; # renamed July 2017
+  smbclient = throw "'smbclient' has been renamed to/replaced by 'samba'"; # Converted to throw 2022-02-22
+  smugline = throw "smugline has been removed from nixpkgs, as it's unmaintained and depends on deprecated libraries."; # Added 2020-11-04
+  solr_8 = solr; # Added 2021-01-30
+
+  # Added 2020-02-10
+  sourceHanSansPackages = {
+    japanese = source-han-sans;
+    korean = source-han-sans;
+    simplified-chinese = source-han-sans;
+    traditional-chinese = source-han-sans;
+  };
+  source-han-sans-japanese = source-han-sans;
+  source-han-sans-korean = source-han-sans;
+  source-han-sans-simplified-chinese = source-han-sans;
+  source-han-sans-traditional-chinese = source-han-sans;
+  sourceHanSerifPackages = {
+    japanese = source-han-serif;
+    korean = source-han-serif;
+    simplified-chinese = source-han-serif;
+    traditional-chinese = source-han-serif;
+  };
+  source-han-serif-japanese = source-han-serif;
+  source-han-serif-korean = source-han-serif;
+  source-han-serif-simplified-chinese = source-han-serif;
+  source-han-serif-traditional-chinese = source-han-serif;
+
+  spaceOrbit = throw "'spaceOrbit' has been renamed to/replaced by 'space-orbit'"; # Converted to throw 2022-02-22
+  spectral = neochat; # Added 2020-12-27
+  speech_tools = throw "'speech_tools' has been renamed to/replaced by 'speech-tools'"; # Converted to throw 2022-02-22
+  speedtest_cli = throw "'speedtest_cli' has been renamed to/replaced by 'speedtest-cli'"; # Converted to throw 2022-02-22
+  spice_gtk = throw "'spice_gtk' has been renamed to/replaced by 'spice-gtk'"; # Converted to throw 2022-02-22
+  spice_protocol = throw "'spice_protocol' has been renamed to/replaced by 'spice-protocol'"; # Converted to throw 2022-02-22
+  spidermonkey_1_8_5 = throw "spidermonkey_1_8_5 has been removed, because it is based on Firefox 4.0 from 2011."; # added 2021-05-03
+  spidermonkey_38 = throw "spidermonkey_38 has been removed. Please use spidermonkey_78 instead."; # Added 2021-03-21
+  spidermonkey_52 = throw "spidermonkey_52 has been removed. Please use spidermonkey_78 instead."; # Added 2019-10-16
+  spidermonkey_60 = throw "spidermonkey_60 has been removed. Please use spidermonkey_78 instead."; # Added 2021-03-21
+  spidermonkey_68 = throw "spidermonkey_68 has been removed. Please use spidermonkey_91 instead."; # added 2022-01-04
+  # spidermonkey is not ABI upwards-compatible, so only allow this for nix-shell
+  spidermonkey = spidermonkey_78; # Added 2020-10-09
+  spring-boot = spring-boot-cli; # added 2020-04-24
+  sqlite3_analyzer = throw "'sqlite3_analyzer' has been renamed to/replaced by 'sqlite-analyzer'"; # Converted to throw 2022-02-22
+  sqliteInteractive = throw "'sqliteInteractive' has been renamed to/replaced by 'sqlite-interactive'"; # Converted to throw 2022-02-22
+  squid4 = squid;  # added 2019-08-22
+  sshfsFuse = throw "'sshfsFuse' has been renamed to/replaced by 'sshfs-fuse'"; # Converted to throw 2022-02-22
+  stanchion = throw "Stanchion was part of riak-cs which is not maintained anymore"; # added 2020-10-14
+  steam-run-native = steam-run; # added 2022-02-21
+  stumpwm-git = throw "stumpwm-git has been broken for a long time and lispPackages.stumpwm follows Quicklisp that is close to git version"; # Added 2021-05-09
+  subversion19 = throw "subversion19 has been removed as it has reached its end of life"; # Added 2021-03-31
+  sundials_3 = throw "sundials_3 was removed in 2020-02. outdated and no longer needed";
+  surf-webkit2 = throw "'surf-webkit2' has been renamed to/replaced by 'surf'"; # Converted to throw 2022-02-22
+  svgcleaner = throw "svgcleaner has been removed."; # Added 2021-11-17
+  swec = throw "swec has been removed; broken and abandoned upstream."; # Added 2021-10-14
+  swfdec = throw "swfdec has been removed as broken and unmaintained."; # Added 2020-08-23
+  swtpm-tpm2 = swtpm; # Added 2021-02-26
+  syncthing-cli = syncthing; # Added 2021-04-06
+  synology-drive = throw "synology-drive has been superseded by synology-drive-client"; # Added 2021-11-26
+  system_config_printer = throw "'system_config_printer' has been renamed to/replaced by 'system-config-printer'"; # Converted to throw 2022-02-22
+  systemd-cryptsetup-generator = throw "systemd-cryptsetup-generator is now included in the systemd package"; # Added 2020-07-12
+  systemd_with_lvm2 = throw "systemd_with_lvm2 is obsolete, enabled by default via the lvm module"; # Added 2020-07-12
+  systool = throw "'systool' has been renamed to/replaced by 'sysfsutils'"; # Converted to throw 2022-02-22
+
+  ### T ###
+
+  tahoelafs = throw "'tahoelafs' has been renamed to/replaced by 'tahoe-lafs'"; # Converted to throw 2022-02-22
+  tangogps = foxtrotgps; # Added 2020-01-26
+  tdm = throw "tdm has been removed because nobody can figure out how to fix OpenAL integration. Use precompiled binary and `steam-run` instead.";
+  telepathy-qt = throw "telepathy-qt no longer supports Qt 4. Please use libsForQt5.telepathy instead."; # Added 2020-07-02
+  telepathy_farstream = throw "'telepathy_farstream' has been renamed to/replaced by 'telepathy-farstream'"; # Converted to throw 2022-02-22
+  telepathy_gabble = throw "'telepathy_gabble' has been renamed to/replaced by 'telepathy-gabble'"; # Converted to throw 2022-02-22
+  telepathy_glib = throw "'telepathy_glib' has been renamed to/replaced by 'telepathy-glib'"; # Converted to throw 2022-02-22
+  telepathy_haze = throw "'telepathy_haze' has been renamed to/replaced by 'telepathy-haze'"; # Converted to throw 2022-02-22
+  telepathy_idle = throw "'telepathy_idle' has been renamed to/replaced by 'telepathy-idle'"; # Converted to throw 2022-02-22
+  telepathy_logger = throw "'telepathy_logger' has been renamed to/replaced by 'telepathy-logger'"; # Converted to throw 2022-02-22
+  telepathy_mission_control = throw "'telepathy_mission_control' has been renamed to/replaced by 'telepathy-mission-control'"; # Converted to throw 2022-02-22
+  telepathy_qt = throw "'telepathy_qt' has been renamed to/replaced by 'telepathy-qt'"; # Converted to throw 2022-02-22
+  telepathy_qt5 = throw "'telepathy_qt5' has been renamed to/replaced by 'libsForQt5.telepathy'"; # Converted to throw 2022-02-22
+  telepathy_salut = throw "'telepathy_salut' has been renamed to/replaced by 'telepathy-salut'"; # Converted to throw 2022-02-22
+  telnet = throw "'telnet' has been renamed to/replaced by 'inetutils'"; # Converted to throw 2022-02-22
+  terminus = throw "terminus has been removed, it was unmaintained in nixpkgs"; # Added 2021-08-21
+  terraform-provider-ibm = throw "'terraform-provider-ibm' has been renamed to/replaced by 'terraform-providers.ibm'"; # Converted to throw 2022-02-22
+  terraform-provider-libvirt = throw "'terraform-provider-libvirt' has been renamed to/replaced by 'terraform-providers.libvirt'"; # Converted to throw 2022-02-22
+  terraform-provider-lxd = terraform-providers.lxd; # Added 2020-03-16
+  terraform_0_12 = throw "terraform_0_12 has been removed from nixpkgs on 2021/01";
+  terraform_1_0 = throw "terraform_1_0 has been renamed to terraform_1"; # Added 2021-12-08
+  terraform_1_0_0 = throw "terraform_1_0_0 has been renamed to terraform_1"; # Added 2021-06-15
+  tesseract_4 = throw "'tesseract_4' has been renamed to/replaced by 'tesseract4'"; # Converted to throw 2022-02-22
+  tex-gyre-bonum-math = throw "'tex-gyre-bonum-math' has been renamed to/replaced by 'tex-gyre-math.bonum'"; # Converted to throw 2022-02-22
+  tex-gyre-pagella-math = throw "'tex-gyre-pagella-math' has been renamed to/replaced by 'tex-gyre-math.pagella'"; # Converted to throw 2022-02-22
+  tex-gyre-schola-math = throw "'tex-gyre-schola-math' has been renamed to/replaced by 'tex-gyre-math.schola'"; # Converted to throw 2022-02-22
+  tex-gyre-termes-math = throw "'tex-gyre-termes-math' has been renamed to/replaced by 'tex-gyre-math.termes'"; # Converted to throw 2022-02-22
+  tftp_hpa = throw "'tftp_hpa' has been renamed to/replaced by 'tftp-hpa'"; # Converted to throw 2022-02-22
+  thunderbird-68 = throw "Thunderbird 68 reached end of life with its final release 68.12.0 on 2020-08-25.";
+  thunderbird-bin-68 = thunderbird-68;
+  timescale-prometheus = promscale; # Added 2020-09-29
+  timetable = throw "timetable has been removed, as the upstream project has been abandoned"; # Added 2021-09-05
+  tkcvs = tkrev; # Added 2022-03-07
+  togglesg-download = throw "togglesg-download was removed 2021-04-30 as it's unmaintained"; # Added 2021-04-30
+  tomboy = throw "tomboy is not actively developed anymore and was removed."; # Added 2022-01-27
+  tomcat7 = throw "tomcat7 has been removed from nixpkgs as it has reached end of life."; # Added 2021-06-16
+  tomcat8 = throw "tomcat8 has been removed from nixpkgs as it has reached end of life."; # Added 2021-06-16
+  tomcat85 = throw "tomcat85 has been removed from nixpkgs as it has reached end of life."; # Added 2020-03-11
+  tor-arm = throw "tor-arm has been removed from nixpkgs as the upstream project has been abandoned."; # Added 2022-01-01
+  torbrowser = throw "'torbrowser' has been renamed to/replaced by 'tor-browser-bundle-bin'"; # Converted to throw 2022-02-22
+  torch = throw "torch has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  torch-hdf5 = throw "torch-hdf5 has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  torch-repl = throw "torch-repl has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  torchPackages = throw "torchPackages has been removed, as the upstream project has been abandoned"; # Added 2020-03-28
+  trang = throw "'trang' has been renamed to/replaced by 'jing-trang'"; # Converted to throw 2022-02-22
+  transfig = fig2dev; # Added 2022-02-15
+  transmission-remote-cli = "transmission-remote-cli has been removed, as the upstream project has been abandoned. Please use tremc instead"; # Added 2020-10-14
+  transmission_gtk = throw "'transmission_gtk' has been renamed to/replaced by 'transmission-gtk'"; # Converted to throw 2022-02-22
+  transmission_remote_gtk = throw "'transmission_remote_gtk' has been renamed to/replaced by 'transmission-remote-gtk'"; # Converted to throw 2022-02-22
+  transporter = throw "transporter has been removed. It was archived upstream, so it's considered abandoned.";
+  trebleshot = throw "trebleshot has been removed. It was archived upstream, so it's considered abandoned.";
+  trilium = throw "trilium has been removed. Please use trilium-desktop instead."; # Added 2020-04-29
+  truecrypt = throw "'truecrypt' has been renamed to/replaced by 'veracrypt'"; # Converted to throw 2022-02-22
+  tshark = throw "'tshark' has been renamed to/replaced by 'wireshark-cli'"; # Converted to throw 2022-02-22
+  tuijam = throw "tuijam has been removed because Google Play Music was discontinued"; # Added 2021-03-07
+  turbo-geth = throw "turbo-geth has been renamed to erigon"; # Added 2021-08-08
+  typora = throw "Newer versions of typora use anti-user encryption and refuse to start. As such it has been removed."; # Added 2021-09-11
+
+  ### U ###
+
+  uberwriter = apostrophe; # Added 2020-04-23
+  ubootBeagleboneBlack = ubootAmx335xEVM; # Added 2020-01-21
+  ucsFonts = throw "'ucsFonts' has been renamed to/replaced by 'ucs-fonts'"; # Converted to throw 2022-02-22
+  ufraw = throw "ufraw is unmaintained and has been removed from nixpkgs. Its successor, nufraw, doesn't seem to be stable enough. Consider using Darktable for now."; # Added 2020-01-11
+  ultrastardx-beta = throw "'ultrastardx-beta' has been renamed to/replaced by 'ultrastardx'"; # Converted to throw 2022-02-22
+  unicorn-emu = unicorn; # Added 2020-10-29
+  unifiStable = unifi6; # Added 2020-12-28
+  untrunc = untrunc-anthwlock; # Added 2021-02-01
+  urxvt_autocomplete_all_the_things = rxvt-unicode-plugins.autocomplete-all-the-things; # Added 2020-02-02
+  urxvt_bidi = rxvt-unicode-plugins.bidi; # Added 2020-02-02
+  urxvt_font_size = rxvt-unicode-plugins.font-size; # Added 2020-02-02
+  urxvt_perl = rxvt-unicode-plugins.perl; # Added 2020-02-02
+  urxvt_perls = rxvt-unicode-plugins.perls; # Added 2020-02-02
+  urxvt_tabbedex = rxvt-unicode-plugins.tabbedex; # Added 2020-02-02
+  urxvt_theme_switch = rxvt-unicode-plugins.theme-switch; # Added 2020-02-02
+  urxvt_vtwheel = rxvt-unicode-plugins.vtwheel; # Added 2020-02-02
+  usb_modeswitch = throw "'usb_modeswitch' has been renamed to/replaced by 'usb-modeswitch'"; # Converted to throw 2022-02-22
+  usbguard-nox = usbguard; # Added 2019-09-04
+  utillinux = util-linux; # Added 2020-11-24
+  uzbl = throw "uzbl has been removed from nixpkgs, as it's unmaintained and uses insecure libraries";
+
+  ### V ###
+
+  v4l_utils = v4l-utils; # Added 2019-08-07
+  v8_3_16_14 = throw "v8_3_16_14 was removed in 2019-11-01: no longer referenced by other packages";
+  vamp = { vampSDK = vamp-plugin-sdk; }; # Added 2020-03-26
+  vapor = throw "vapor was removed because it was unmaintained and upstream service no longer exists";
+  varnish62 = throw "varnish62 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release."; # Added 2021-07-26
+  varnish63 = throw "varnish63 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release."; # Added 2021-07-26
+  varnish65 = throw "varnish65 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release."; # Added 2021-09-15
+  vdirsyncerStable  = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168
+  venus = throw "venus has been removed from nixpkgs, as it's unmaintained"; # Added 2021-02-05
+  vimbWrapper = throw "'vimbWrapper' has been renamed to/replaced by 'vimb'"; # Converted to throw 2022-02-22
+  vimprobable2 = throw "vimprobable2 has been removed from nixpkgs. It relied on webkitgtk24x that has been removed."; # Added 2019-12-05
+  vimprobable2-unwrapped = vimprobable2; # Added 2019-12-05
+  virtinst = throw "virtinst has been removed, as it's included in virt-manager"; # Added 2021-07-21
+  virtuoso = throw "virtuoso has been removed, because it was unmaintained in nixpkgs"; # added 2021-12-15
+  virtmanager = virt-manager; # Added 2019-10-29
+  virtmanager-qt = virt-manager-qt; # Added 2019-10-29
+  virtviewer = throw "'virtviewer' has been renamed to/replaced by 'virt-viewer'"; # Converted to throw 2022-02-22
+  vorbisTools = throw "'vorbisTools' has been renamed to/replaced by 'vorbis-tools'"; # Converted to throw 2022-02-22
+  vtun = throw "vtune has been removed as it's unmaintained upstream."; # Added 2021-10-29
+
+  ### W ###
+
+  way-cooler = throw "way-cooler is abandoned by its author: https://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html"; # Added 2020-01-13
+  webkit = throw "'webkit' has been renamed to/replaced by 'webkitgtk'"; # Converted to throw 2022-02-22
+  webkitgtk24x-gtk2 = throw "webkitgtk24x-gtk2 has been removed because it's insecure. Please use webkitgtk."; # Added 2019-12-05
+  webkitgtk24x-gtk3 = throw "webkitgtk24x-gtk3 has been removed because it's insecure. Please use webkitgtk."; # Added 2019-12-05
+  weechat-matrix-bridge = throw "'weechat-matrix-bridge' has been renamed to/replaced by 'weechatScripts.weechat-matrix-bridge'"; # Converted to throw 2022-02-22
+  whirlpool-gui = throw "whirlpool-gui has been removed as it depended on an insecure version of Electron."; # added 2022-02-08
+  wicd = throw "wicd has been removed as it is abandoned."; # Added 2021-09-11
+  wineFull = throw "'wineFull' has been renamed to/replaced by 'winePackages.full'"; # Converted to throw 2022-02-22
+  wineMinimal = throw "'wineMinimal' has been renamed to/replaced by 'winePackages.minimal'"; # Converted to throw 2022-02-22
+  wineStable = throw "'wineStable' has been renamed to/replaced by 'winePackages.stable'"; # Converted to throw 2022-02-22
+  wineStaging = throw "'wineStaging' has been renamed to/replaced by 'wine-staging'"; # Converted to throw 2022-02-22
+  wineUnstable = throw "'wineUnstable' has been renamed to/replaced by 'winePackages.unstable'"; # Converted to throw 2022-02-22
+  wineWayland = wine-wayland;
+  winswitch = throw "winswitch has been removed from nixpkgs."; # Added 2019-12-10
+  winusb = throw "'winusb' has been renamed to/replaced by 'woeusb'"; # Converted to throw 2022-02-22
+  wireguard = throw "'wireguard' has been renamed to/replaced by 'wireguard-tools'"; # Converted to throw 2022-02-22
+  wireshark-gtk = throw "wireshark-gtk is not supported anymore. Use wireshark-qt or wireshark-cli instead."; # Added 2019-11-18
+  wxmupen64plus = throw "wxmupen64plus was removed because the upstream disappeared."; # Added 2022-01-31
+
+  ### X ###
+
+  x11 = throw "'x11' has been renamed to/replaced by 'xlibsWrapper'"; # Converted to throw 2022-02-22
+  xara = throw "xara has been removed from nixpkgs. Unmaintained since 2006"; # Added 2020-06-24
+  xbmc = throw "'xbmc' has been renamed to/replaced by 'kodi'"; # Converted to throw 2022-02-22
+  xbmc-retroarch-advanced-launchers = kodi-retroarch-advanced-launchers; # Added 2021-11-19
+  xbmcPlain = throw "'xbmcPlain' has been renamed to/replaced by 'kodiPlain'"; # Converted to throw 2022-02-22
+  xbmcPlugins = throw "'xbmcPlugins' has been renamed to/replaced by 'kodiPackages'"; # Converted to throw 2022-02-22
+  xdg_utils = xdg-utils; # Added 2021-02-01
+  xfce4-12 = throw "xfce4-12 has been replaced by xfce4-14"; # Added 2020-03-14
+  xfce4-14 = xfce;
+  xfceUnstable = xfce4-14; # Added 2019-09-17
+  xineLib = xine-lib; # Added 2021-04-27
+  xineUI = xine-ui; # Added 2021-04-27
+  xmonad_log_applet_gnome3 = throw "'xmonad_log_applet_gnome3' has been renamed to/replaced by 'xmonad_log_applet'"; # Converted to throw 2022-02-22
+  xmpppy = throw "xmpppy has been removed from nixpkgs as it is unmaintained and python2-only";
+  xp-pen-g430 = pentablet-driver; # Added 2020-05-03
+  xf86_video_nouveau = throw "'xf86_video_nouveau' has been renamed to/replaced by 'xorg.xf86videonouveau'"; # Converted to throw 2022-02-22
+  xf86_input_mtrack = throw ''
+    xf86_input_mtrack has been removed from nixpkgs as it is broken and
+    unmaintained. Working alternatives are libinput and synaptics.
+  '';
+  xf86_input_multitouch = throw "xf86_input_multitouch has been removed from nixpkgs."; # Added 2020-01-20
+  xlibs = throw "'xlibs' has been renamed to/replaced by 'xorg'"; # Converted to throw 2022-02-22
+  xpraGtk3 = throw "'xpraGtk3' has been renamed to/replaced by 'xpra'"; # Converted to throw 2022-02-22
+  xv = xxv; # Added 2020-02-22
+  xvfb_run = xvfb-run; # Added 2021-05-07
+
+  ### Y ###
+
+  yacc = bison; # moved from top-level 2021-03-14
+  yarssr = throw "yarssr has been removed as part of the python2 deprecation"; # Added 2022-01-15
+  youtubeDL = throw "'youtubeDL' has been renamed to/replaced by 'youtube-dl'"; # Converted to throw 2022-02-22
+  ytop = throw "ytop has been abandoned by upstream. Consider switching to bottom instead";
+  yubikey-neo-manager = throw "yubikey-neo-manager has been removed because it was broken. Use yubikey-manager-qt instead."; # Added 2021-03-08
+  yuzu = yuzu-mainline; # Added 2021-01-25
+
+  ### Z ###
+
+  zabbix30 = throw "Zabbix 3.0.x is end of life, see https://www.zabbix.com/documentation/5.0/manual/installation/upgrade/sources for a direct upgrade path to 5.0.x"; # Added 2021-04-07
+  zdfmediathk = throw "'zdfmediathk' has been renamed to/replaced by 'mediathekview'"; # Converted to throw 2022-02-22
+  zimreader = throw "zimreader has been removed from nixpkgs as it has been replaced by kiwix-serve and stopped working with modern zimlib versions."; # Added 2021-03-28
+
+  # TODO(ekleog): add ‘wasm’ alias to ‘ocamlPackages.wasm’ after 19.03
+  # branch-off
+
+  ocamlPackages_4_00_1 = throw "'ocamlPackages_4_00_1' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_00_1'"; # Converted to throw 2022-02-22
+  ocamlPackages_4_01_0 = throw "'ocamlPackages_4_01_0' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_01_0'"; # Converted to throw 2022-02-22
+  ocamlPackages_4_02 = throw "'ocamlPackages_4_02' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_02'"; # Converted to throw 2022-02-22
+  ocamlPackages_4_03 = throw "'ocamlPackages_4_03' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_03'"; # Converted to throw 2022-02-22
+  ocamlPackages_latest = throw "'ocamlPackages_latest' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_latest'"; # Converted to throw 2022-02-22
+
+  ocaml_4_00_1 = throw "'ocamlPackages_4_00_1.ocaml' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_00_1.ocaml'"; # Converted to throw 2022-02-22
+  ocaml_4_01_0 = throw "'ocamlPackages_4_01_0.ocaml' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_01_0.ocaml'"; # Converted to throw 2022-02-22
+  ocaml_4_02 = throw "'ocamlPackages_4_02.ocaml' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_02.ocaml'"; # Converted to throw 2022-02-22
+  ocaml_4_03 = throw "'ocamlPackages_4_03.ocaml' has been renamed to/replaced by 'ocaml-ng.ocamlPackages_4_03.ocaml'"; # Converted to throw 2022-02-22
+
+  zabbix44 = throw ''
+    Zabbix 4.4 is end of life. For details on upgrading to Zabbix 5.0 look at
+    https://www.zabbix.com/documentation/current/manual/installation/upgrade_notes_500
+  ''; # Added 2020-08-17
+
+  # Added 2019-09-06
+  zeroc_ice = pkgs.zeroc-ice;
+
+  # Added 2020-06-22
+  zeromq3 = throw "zeromq3 has been deprecated by zeromq4.";
+  jzmq = throw "jzmq has been removed from nixpkgs, as it was unmaintained";
+
+  avian = throw ''
+    The package doesn't compile anymore on NixOS and both development &
+    maintenance is abandoned by upstream.
+  ''; # Cleanup before 21.11, Added 2021-05-07
+  ant-dracula-theme = throw "ant-dracula-theme is now dracula-theme, and theme name is Dracula instead of Ant-Dracula.";
+  dina-font-pcf = dina-font; # Added 2020-02-09
+  dnscrypt-proxy = throw "dnscrypt-proxy has been removed. Please use dnscrypt-proxy2."; # Added 2020-02-02
+  gcc-snapshot = throw "gcc-snapshot: Marked as broken for >2 years, additionally this 'snapshot' pointed to a fairly old one from gcc7.";
+  gnatsd = nats-server; # Added 2019-10-28
+
+  obs-gstreamer = throw ''
+    obs-gstreamer has been converted into a plugin for use with wrapOBS.
+    Its new location is obs-studio-plugins.obs-gstreamer.
+  ''; # Added 2021-06-01
+
+  obs-move-transition = throw ''
+    obs-move-transition has been converted into a plugin for use with wrapOBS.
+    Its new location is obs-studio-plugins.obs-move-transition.
+  ''; # Added 2021-06-01
+
+  obs-multi-rtmp = throw ''
+    obs-multi-rtmp has been converted into a plugin for use with wrapOBS.
+    Its new location is obs-studio-plugins.obs-multi-rtmp.
+  ''; # Added 2021-06-01
+
+  obs-ndi = throw ''
+    obs-ndi has been converted into a plugin for use with wrapOBS.
+    Its new location is obs-studio-plugins.obs-ndi.
+  ''; # Added 2021-06-01
+
+  obs-v4l2sink = throw "obs-v4l2sink is integrated into upstream OBS since version 26.1"; # Added 2021-06-01
+
+  obs-wlrobs = throw ''
+    wlrobs has been converted into a plugin for use with wrapOBS.
+    Its new location is obs-studio-plugins.wlrobs.
+  ''; # Added 2021-06-01
+
+  oraclejdk8psu = throw "The *psu versions of oraclejdk are no longer provided by upstream."; # Cleanup before 20.09
+  oraclejre8psu = oraclejdk8psu; # Cleanup before 20.09
+  oraclejdk8psu_distro = oraclejdk8psu; # Cleanup before 20.09
+  posix_man_pages = man-pages-posix; # Added 2021-04-15
+  riot-desktop = throw "riot-desktop is now element-desktop!"; # Cleanup before 21.05
+  riot-web = throw "riot-web is now element-web"; # Cleanup before 21.05
+  sqldeveloper_18 = throw "sqldeveloper_18 is not maintained anymore!"; # Added 2020-02-04
+  todolist = throw "todolist is now ultralist."; # Added 2020-12-27
+  tor-browser-bundle = throw "tor-browser-bundle was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead."; # Added 2020-01-10
+  tor-browser-unwrapped = throw "tor-browser-unwrapped was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead."; # Added 2020-01-10
+  ttyrec = ovh-ttyrec; # Added 2021-01-02
+  zplugin = zinit; # Added 2021-01-30
+
+  inherit (stdenv.hostPlatform) system; # Added 2021-10-22
+
+  # LLVM packages for (integration) testing that should not be used inside Nixpkgs:
+  llvmPackages_git = recurseIntoAttrs (callPackage ../development/compilers/llvm/git {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_git.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_git.libraries;
+  });
+
+  /* If these are in the scope of all-packages.nix, they cause collisions
+  between mixed versions of qt. See:
+  https://github.com/NixOS/nixpkgs/pull/101369 */
+
+  inherit (plasma5Packages)
+    akonadi akregator ark bluedevil bomber bovo breeze-grub breeze-gtk
+    breeze-icons breeze-plymouth breeze-qt5 discover dolphin dragon elisa
+    ffmpegthumbs filelight granatier gwenview k3b kactivitymanagerd kaddressbook
+    kalzium kapman kapptemplate kate katomic kblackbox kblocks kbounce
+    kcachegrind kcalc kcharselect kcolorchooser kde-cli-tools kde-gtk-config
+    kdenlive kdeplasma-addons kdf kdialog kdiamond keditbookmarks kfind kfloppy
+    kgamma5 kget kgpg khelpcenter kig kigo killbots kinfocenter kitinerary
+    kleopatra klettres klines kmag kmail kmenuedit kmines kmix kmplot
+    knavalbattle knetwalk knights kollision kolourpaint kompare konsole kontact
+    korganizer kpkpass krdc kreversi krfb kscreen kscreenlocker kshisen ksquares
+    ksshaskpass ksystemlog kteatime ktimer ktorrent ktouch kturtle kwallet-pam
+    kwalletmanager kwave kwayland-integration kwin kwrited marble milou minuet
+    okular oxygen oxygen-icons5 picmi plasma-browser-integration plasma-desktop
+    plasma-integration plasma-nano plasma-nm plasma-pa plasma-phone-components
+    plasma-systemmonitor plasma-thunderbolt plasma-vault plasma-workspace
+    plasma-workspace-wallpapers polkit-kde-agent powerdevil qqc2-breeze-style
+    sddm-kcm skanlite spectacle systemsettings xdg-desktop-portal-kde yakuake
+    zanshin
+  ;
+
+  inherit (plasma5Packages.thirdParty)
+    krohnkite
+    krunner-ssh
+    krunner-symbols
+    kwin-dynamic-workspaces
+    kwin-tiling
+    plasma-applet-caffeine-plus
+    plasma-applet-virtual-desktop-bar
+  ;
+
+  inherit (libsForQt5)
+    sddm
+  ;
+
+})
diff --git a/nixpkgs/pkgs/top-level/all-packages.nix b/nixpkgs/pkgs/top-level/all-packages.nix
new file mode 100644
index 000000000000..6aca83b2f469
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/all-packages.nix
@@ -0,0 +1,34873 @@
+/* The top-level package collection of nixpkgs.
+ * It is sorted by categories corresponding to the folder names
+ * in the /pkgs folder. Inside the categories packages are roughly
+ * sorted by alphabet, but strict sorting has been long lost due
+ * to merges. Please use the full-text search of your editor. ;)
+ * Hint: ### starts category names.
+ */
+{ lib, noSysDirs, config, overlays }:
+res: pkgs: super:
+
+with pkgs;
+
+{
+
+  # A stdenv capable of building 32-bit binaries.  On x86_64-linux,
+  # it uses GCC compiled with multilib support; on i686-linux, it's
+  # just the plain stdenv.
+  stdenv_32bit = lowPrio (if stdenv.hostPlatform.is32bit then stdenv else multiStdenv);
+
+  stdenvNoCC = stdenv.override (
+    { cc = null; hasCC = false; }
+
+    // lib.optionalAttrs (stdenv.hostPlatform.isDarwin && (stdenv.hostPlatform != stdenv.buildPlatform)) {
+      # TODO: This is a hack to use stdenvNoCC to produce a CF when cross
+      # compiling. It's not very sound. The cross stdenv has:
+      #   extraBuildInputs = [ targetPackages.darwin.apple_sdks.frameworks.CoreFoundation ]
+      # and uses stdenvNoCC. In order to make this not infinitely recursive, we need to exclude
+      # this extraBuildInput.
+      extraBuildInputs = [];
+    }
+  );
+
+  mkStdenvNoLibs = stdenv: let
+    bintools = stdenv.cc.bintools.override {
+      libc = null;
+      noLibc = true;
+    };
+  in stdenv.override {
+    cc = stdenv.cc.override {
+      libc = null;
+      noLibc = true;
+      extraPackages = [];
+      inherit bintools;
+    };
+    allowedRequisites =
+      lib.mapNullable (rs: rs ++ [ bintools ]) (stdenv.allowedRequisites or null);
+  };
+
+  stdenvNoLibs =
+    if stdenv.hostPlatform != stdenv.buildPlatform && (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isDarwin.useLLVM or false)
+    then
+      # We cannot touch binutils or cc themselves, because that will cause
+      # infinite recursion. So instead, we just choose a libc based on the
+      # current platform. That means we won't respect whatever compiler was
+      # passed in with the stdenv stage argument.
+      #
+      # TODO It would be much better to pass the `stdenvNoCC` and *unwrapped*
+      # cc, bintools, compiler-rt equivalent, etc. and create all final stdenvs
+      # as part of the stage. Then we would never be tempted to override a
+      # later thing to to create an earlier thing (leading to infinite
+      # recursion) and we also would still respect the stage arguments choices
+      # for these things.
+      overrideCC stdenv buildPackages.llvmPackages.clangNoCompilerRt
+    else mkStdenvNoLibs stdenv;
+
+  gccStdenvNoLibs = mkStdenvNoLibs gccStdenv;
+  clangStdenvNoLibs = mkStdenvNoLibs clangStdenv;
+
+  # For convenience, allow callers to get the path to Nixpkgs.
+  path = ../..;
+
+
+  ### Helper functions.
+  inherit lib config overlays;
+
+  inherit (lib) lowPrio hiPrio appendToName makeOverridable;
+
+  inherit (lib) recurseIntoAttrs;
+
+  # This is intended to be the reverse of recurseIntoAttrs, as it is
+  # defined now it exists mainly for documentation purposes, but you
+  # can also override this with recurseIntoAttrs to recurseInto all
+  # the Attrs which is useful for testing massive changes. Ideally,
+  # every package subset not marked with recurseIntoAttrs should be
+  # marked with this.
+  inherit (lib) dontRecurseIntoAttrs;
+
+  stringsWithDeps = lib.stringsWithDeps;
+
+  ### Evaluating the entire Nixpkgs naively will fail, make failure fast
+  AAAAAASomeThingsFailToEvaluate = throw ''
+    Please be informed that this pseudo-package is not the only part of
+    Nixpkgs that fails to evaluate. You should not evaluate entire Nixpkgs
+    without some special measures to handle failing packages, like those taken
+    by Hydra.
+  '';
+
+  tests = callPackages ../test {};
+
+  ### Nixpkgs maintainer tools
+
+  nix-generate-from-cpan = callPackage ../../maintainers/scripts/nix-generate-from-cpan.nix { };
+
+  nixpkgs-lint = callPackage ../../maintainers/scripts/nixpkgs-lint.nix { };
+
+  common-updater-scripts = callPackage ../common-updater/scripts.nix { };
+
+  genericUpdater = callPackage ../common-updater/generic-updater.nix { };
+
+  gitUpdater = callPackage ../common-updater/git-updater.nix { };
+
+  httpTwoLevelsUpdater = callPackage ../common-updater/http-two-levels-updater.nix { };
+
+  unstableGitUpdater = callPackage ../common-updater/unstable-updater.nix { };
+
+  nix-update-script = callPackage ../common-updater/nix-update.nix { };
+
+  ### Push NixOS tests inside the fixed point
+
+  nixosTests = import ../../nixos/tests/all-tests.nix {
+    inherit pkgs;
+    system = stdenv.hostPlatform.system;
+    callTest = t: t.test;
+  };
+
+  ### BUILD SUPPORT
+
+  auditBlasHook = makeSetupHook
+    { name = "auto-blas-hook"; deps = [ blas lapack ]; }
+    ../build-support/setup-hooks/audit-blas.sh;
+
+  autoreconfHook = callPackage (
+    { makeSetupHook, autoconf, automake, gettext, libtool }:
+    makeSetupHook
+      { deps = [ autoconf automake gettext libtool ]; }
+      ../build-support/setup-hooks/autoreconf.sh
+  ) { };
+
+  autoreconfHook264 = autoreconfHook.override {
+    autoconf = autoconf264;
+    automake = automake111x;
+  };
+
+  autoreconfHook269 = autoreconfHook.override {
+    autoconf = autoconf269;
+  };
+
+  autorestic = callPackage ../tools/backup/autorestic { };
+
+  autoPatchelfHook = makeSetupHook
+    { name = "auto-patchelf-hook"; deps = [ bintools ]; }
+    ../build-support/setup-hooks/auto-patchelf.sh;
+
+  appflowy = callPackage ../applications/office/appflowy { };
+
+  appimageTools = callPackage ../build-support/appimage {
+    buildFHSUserEnv = buildFHSUserEnvBubblewrap;
+  };
+
+  appindicator-sharp = callPackage ../development/libraries/appindicator-sharp { };
+
+  canonicalize-jar = callPackage ../build-support/java/canonicalize-jar.nix { };
+  canonicalize-jars-hook = makeSetupHook {
+    name = "canonicalize-jars-hook";
+    substitutions = { canonicalize_jar = canonicalize-jar; };
+  } ../build-support/setup-hooks/canonicalize-jars.sh;
+
+  ensureNewerSourcesHook = { year }: makeSetupHook {}
+    (writeScript "ensure-newer-sources-hook.sh" ''
+      postUnpackHooks+=(_ensureNewerSources)
+      _ensureNewerSources() {
+        '${findutils}/bin/find' "$sourceRoot" \
+          '!' -newermt '${year}-01-01' -exec touch -h -d '${year}-01-02' '{}' '+'
+      }
+    '');
+
+  addOpenGLRunpath = callPackage ../build-support/add-opengl-runpath { };
+
+  quickemu = callPackage ../development/quickemu { };
+
+  aether = callPackage ../applications/networking/aether { };
+
+  alda = callPackage ../development/interpreters/alda { };
+
+  align = callPackage ../tools/text/align { };
+
+  althttpd = callPackage ../servers/althttpd { };
+
+  anders = callPackage ../applications/science/logic/anders { };
+
+  ankisyncd = callPackage ../servers/ankisyncd { };
+
+  aocd = with python3Packages; toPythonApplication aocd;
+
+  astrolog = callPackage ../applications/science/astronomy/astrolog { };
+
+  atkinson-hyperlegible = callPackage ../data/fonts/atkinson-hyperlegible { };
+
+  atuin = callPackage ../tools/misc/atuin {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  fiche = callPackage ../servers/fiche { };
+
+  fishnet = callPackage ../servers/fishnet { };
+
+  fission = callPackage ../development/tools/fission { };
+
+  appthreat-depscan = callPackage ../development/tools/appthreat-depscan { };
+
+
+  authy = callPackage ../applications/misc/authy { };
+
+  authz0 = callPackage ../tools/security/authz0 { };
+
+  avro-tools = callPackage ../development/tools/avro-tools { };
+
+  bacnet-stack = callPackage ../tools/networking/bacnet-stack {};
+
+  bada-bib = callPackage ../applications/science/misc/bada-bib {};
+
+  bakelite = callPackage ../tools/backup/bakelite { };
+
+  beyond-identity = callPackage ../tools/security/beyond-identity {};
+
+  bingo = callPackage ../development/tools/bingo {};
+
+  breakpad = callPackage ../development/misc/breakpad { };
+
+  buf = callPackage ../development/tools/buf { };
+
+  elfcat = callPackage ../tools/misc/elfcat { };
+
+  # Zip file format only allows times after year 1980, which makes e.g. Python wheel building fail with:
+  # ValueError: ZIP does not support timestamps before 1980
+  ensureNewerSourcesForZipFilesHook = ensureNewerSourcesHook { year = "1980"; };
+
+  updateAutotoolsGnuConfigScriptsHook = makeSetupHook
+    { substitutions = { gnu_config = gnu-config;}; }
+    ../build-support/setup-hooks/update-autotools-gnu-config-scripts.sh;
+
+  gogUnpackHook = makeSetupHook {
+    name = "gog-unpack-hook";
+    deps = [ innoextract file-rename ]; }
+    ../build-support/setup-hooks/gog-unpack.sh;
+
+  buildEnv = callPackage ../build-support/buildenv { }; # not actually a package
+
+  # TODO: eventually migrate everything to buildFHSUserEnvBubblewrap
+  buildFHSUserEnv = buildFHSUserEnvChroot;
+  buildFHSUserEnvChroot = callPackage ../build-support/build-fhs-userenv { };
+  buildFHSUserEnvBubblewrap = callPackage ../build-support/build-fhs-userenv-bubblewrap { };
+
+  buildMaven = callPackage ../build-support/build-maven.nix {};
+
+  castget = callPackage ../applications/networking/feedreaders/castget { };
+
+  castxml = callPackage ../development/tools/castxml {
+    inherit (llvmPackages) libclang llvm;
+    inherit (python3.pkgs) sphinx;
+  };
+
+  catatonit = callPackage ../applications/virtualization/catatonit { };
+
+  cen64 = callPackage ../applications/emulators/cen64 { };
+
+  btdu = callPackage ../tools/misc/btdu { };
+
+  uxn = callPackage ../applications/emulators/uxn { };
+
+  cereal = callPackage ../development/libraries/cereal { };
+
+  certgraph = callPackage ../tools/security/certgraph { };
+
+  cewl = callPackage ../tools/security/cewl { };
+
+  checkov = callPackage ../development/tools/analysis/checkov {};
+
+  chrysalis = callPackage ../applications/misc/chrysalis { };
+
+  clifm = callPackage ../applications/misc/clifm { };
+
+  clj-kondo = callPackage ../development/tools/clj-kondo { };
+
+  cloak = callPackage ../applications/misc/cloak {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  cmark = callPackage ../development/libraries/cmark { };
+
+  cmark-gfm = callPackage ../development/libraries/cmark-gfm { };
+
+  cm256cc = callPackage ../development/libraries/cm256cc {  };
+
+  cocogitto = callPackage ../development/tools/cocogitto {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  conftest = callPackage ../development/tools/conftest { };
+
+  corgi = callPackage ../development/tools/corgi { };
+
+  colmena = callPackage ../tools/admin/colmena { };
+
+  colorz = callPackage ../tools/misc/colorz { };
+
+  colorpicker = callPackage ../tools/misc/colorpicker { };
+
+  comedilib = callPackage ../development/libraries/comedilib {  };
+
+  commitlint = nodePackages."@commitlint/cli";
+
+  commit-formatter = callPackage ../applications/version-management/commit-formatter { };
+
+  containerpilot = callPackage ../applications/networking/cluster/containerpilot { };
+
+  coordgenlibs  = callPackage ../development/libraries/coordgenlibs { };
+
+  cp437 = callPackage ../tools/misc/cp437 { };
+
+  cpu-x = callPackage ../applications/misc/cpu-x { };
+
+  crackle = callPackage ../tools/networking/crackle { };
+
+  crow-translate = libsForQt5.callPackage ../applications/misc/crow-translate { };
+
+  dhallDirectoryToNix = callPackage ../build-support/dhall/directory-to-nix.nix { };
+
+  dhallPackageToNix = callPackage ../build-support/dhall/package-to-nix.nix { };
+
+  dhallToNix = callPackage ../build-support/dhall/to-nix.nix { };
+
+  deadcode = callPackage ../development/tools/deadcode { };
+
+  deadnix = callPackage ../development/tools/deadnix { };
+
+  each = callPackage ../tools/text/each { };
+
+  eclipse-mat = callPackage ../development/tools/eclipse-mat { };
+
+  evans = callPackage ../development/tools/evans { };
+
+  firefly-desktop = callPackage ../applications/misc/firefly-desktop { };
+
+  frugal = callPackage ../development/tools/frugal { };
+
+  glade = callPackage ../development/tools/glade { };
+
+  gpick = callPackage ../tools/misc/gpick { };
+
+  hobbes = callPackage ../development/tools/hobbes { };
+
+  html5validator = python3Packages.callPackage ../applications/misc/html5validator { };
+
+  buildcatrust = with python3.pkgs; toPythonApplication buildcatrust;
+
+  probe-rs-cli = callPackage ../development/tools/rust/probe-rs-cli {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  probe-run = callPackage ../development/tools/rust/probe-run {
+    inherit (darwin.apple_sdk.frameworks) AppKit IOKit;
+  };
+
+  mix2nix = callPackage ../development/tools/mix2nix { };
+
+  prisma-engines = callPackage ../development/tools/database/prisma-engines {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  pridecat = callPackage ../tools/misc/pridecat { };
+
+  proto-contrib = callPackage ../development/tools/proto-contrib { };
+
+  protoc-gen-doc = callPackage ../development/tools/protoc-gen-doc { };
+
+  protoc-gen-go = callPackage ../development/tools/protoc-gen-go { };
+
+  protoc-gen-go-grpc = callPackage ../development/tools/protoc-gen-go-grpc { };
+
+  protoc-gen-go-vtproto = callPackage ../development/tools/protoc-gen-go-vtproto { };
+
+  protoc-gen-grpc-web = callPackage ../development/tools/protoc-gen-grpc-web { };
+
+  protoc-gen-twirp = callPackage ../development/tools/protoc-gen-twirp { };
+
+  protoc-gen-twirp_php = callPackage ../development/tools/protoc-gen-twirp_php { };
+
+  protoc-gen-twirp_swagger = callPackage ../development/tools/protoc-gen-twirp_swagger { };
+
+  protoc-gen-twirp_typescript = callPackage ../development/tools/protoc-gen-twirp_typescript { };
+
+  protoc-gen-validate = callPackage ../development/tools/protoc-gen-validate { };
+
+  proton-caller = callPackage ../applications/emulators/proton-caller { };
+
+  ptags = callPackage ../development/tools/misc/ptags { };
+
+  ptouch-print = callPackage ../misc/ptouch-print { };
+
+  demoit = callPackage ../servers/demoit { };
+
+  deviceTree = callPackage ../os-specific/linux/device-tree {};
+
+  enum4linux = callPackage ../tools/security/enum4linux {};
+
+  enum4linux-ng = python3Packages.callPackage ../tools/security/enum4linux-ng { };
+
+  onesixtyone = callPackage ../tools/security/onesixtyone {};
+
+  oletools = with python3.pkgs; toPythonApplication oletools;
+
+  credential-detector = callPackage ../tools/security/credential-detector { };
+
+  credslayer = callPackage ../tools/security/credslayer { };
+
+  device-tree_rpi = callPackage ../os-specific/linux/device-tree/raspberrypi.nix {};
+
+  devour = callPackage ../tools/X11/devour {};
+
+  diffPlugins = (callPackage ../build-support/plugins.nix {}).diffPlugins;
+
+  dieHook = makeSetupHook {} ../build-support/setup-hooks/die.sh;
+
+  archiver = callPackage ../applications/misc/archiver { };
+
+  # It segfaults if it uses qt5.15
+  digitalbitbox = libsForQt514.callPackage ../applications/misc/digitalbitbox {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  gretl = callPackage ../applications/science/math/gretl { };
+
+  grsync = callPackage ../applications/misc/grsync { };
+
+  dockerTools = callPackage ../build-support/docker {
+    writePython3 = buildPackages.writers.writePython3;
+  };
+  tarsum = callPackage ../build-support/docker/tarsum.nix { };
+
+  snapTools = callPackage ../build-support/snap { };
+
+  nix-prefetch-docker = callPackage ../build-support/docker/nix-prefetch-docker.nix { };
+
+  docker-compose = python3Packages.callPackage ../applications/virtualization/docker-compose {};
+
+  docker-ls = callPackage ../tools/misc/docker-ls { };
+
+  docker-slim = callPackage ../applications/virtualization/docker-slim { };
+
+  docker-sync = callPackage ../tools/misc/docker-sync { };
+
+  dockle = callPackage ../development/tools/dockle { };
+
+  docui = callPackage ../tools/misc/docui { };
+
+  dotfiles = callPackage ../applications/misc/dotfiles { };
+
+  # Dotnet
+
+  dotnetCorePackages = recurseIntoAttrs (callPackage ../development/compilers/dotnet {});
+
+  dotnet-sdk_2 = dotnetCorePackages.sdk_2_1;
+  dotnet-sdk_3 = dotnetCorePackages.sdk_3_1;
+  dotnet-sdk_5 = dotnetCorePackages.sdk_5_0;
+  dotnet-sdk_6 = dotnetCorePackages.sdk_6_0;
+
+  dotnet-sdk = dotnetCorePackages.sdk_6_0;
+  dotnet-runtime = dotnetCorePackages.runtime_6_0;
+  dotnet-aspnetcore = dotnetCorePackages.aspnetcore_6_0;
+
+  buildDotnetModule = callPackage ../build-support/dotnet/build-dotnet-module { };
+  nuget-to-nix = callPackage ../build-support/dotnet/nuget-to-nix { };
+  mkNugetSource = callPackage ../build-support/dotnet/make-nuget-source { };
+  mkNugetDeps = callPackage ../build-support/dotnet/make-nuget-deps { };
+
+  dotnetenv = callPackage ../build-support/dotnet/dotnetenv {
+    dotnetfx = dotnetfx40;
+  };
+
+  buildDotnetPackage = callPackage ../build-support/dotnet/build-dotnet-package { };
+  fetchNuGet = callPackage ../build-support/dotnet/fetchnuget { };
+  dotnetbuildhelpers = callPackage ../build-support/dotnet/dotnetbuildhelpers { };
+
+  dumb-init = callPackage ../applications/virtualization/dumb-init {};
+
+  umoci = callPackage ../applications/virtualization/umoci {};
+
+  dispad = callPackage ../tools/X11/dispad { };
+
+  dupeguru = callPackage ../applications/misc/dupeguru { };
+
+  dump1090 = callPackage ../applications/radio/dump1090 { };
+
+  ebook2cw = callPackage ../applications/radio/ebook2cw { };
+
+  edwin = callPackage ../data/fonts/edwin { };
+
+  etBook = callPackage ../data/fonts/et-book { };
+
+  fntsample = callPackage ../tools/misc/fntsample { };
+
+  fetchutils = callPackage ../tools/misc/fetchutils { };
+
+  fet-sh = callPackage ../tools/misc/fet-sh { };
+
+  fetchbower = callPackage ../build-support/fetchbower {
+    inherit (nodePackages) bower2nix;
+  };
+
+  fetchbzr = callPackage ../build-support/fetchbzr { };
+
+  fetchcvs = if stdenv.buildPlatform != stdenv.hostPlatform
+    # hack around splicing being crummy with things that (correctly) don't eval.
+    then buildPackages.fetchcvs
+    else callPackage ../build-support/fetchcvs { };
+
+  fetchdarcs = callPackage ../build-support/fetchdarcs { };
+
+  fetchdocker = callPackage ../build-support/fetchdocker { };
+
+  fetchDockerConfig = callPackage ../build-support/fetchdocker/fetchDockerConfig.nix { };
+
+  fetchDockerLayer = callPackage ../build-support/fetchdocker/fetchDockerLayer.nix { };
+
+  fetchfossil = callPackage ../build-support/fetchfossil { };
+
+  fetchgit = (callPackage ../build-support/fetchgit {
+    git = buildPackages.gitMinimal;
+    cacert = buildPackages.cacert;
+    git-lfs = buildPackages.git-lfs;
+  }) // { # fetchgit is a function, so we use // instead of passthru.
+    tests = pkgs.tests.fetchgit;
+  };
+
+  fetchgitLocal = callPackage ../build-support/fetchgitlocal { };
+
+  fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {});
+
+  fetchMavenArtifact = callPackage ../build-support/fetchmavenartifact { };
+
+  inherit (callPackage ../build-support/node/fetch-yarn-deps { })
+    prefetch-yarn-deps
+    fetchYarnDeps;
+
+  find-cursor = callPackage ../tools/X11/find-cursor { };
+
+  flare-floss = callPackage ../tools/security/flare-floss { };
+
+  prefer-remote-fetch = import ../build-support/prefer-remote-fetch;
+
+  global-platform-pro = callPackage ../development/tools/global-platform-pro { };
+
+  graph-easy = callPackage ../tools/graphics/graph-easy { };
+
+  opendrop = python3Packages.callPackage ../tools/networking/opendrop { };
+
+  owl = callPackage ../tools/networking/owl { };
+
+  packer = callPackage ../development/tools/packer { };
+
+  packr = callPackage ../development/libraries/packr { };
+
+  perseus-cli = callPackage ../development/tools/perseus-cli { };
+
+  pet = callPackage ../development/tools/pet { };
+
+  pkger = callPackage ../development/libraries/pkger { };
+
+  tapview = callPackage ../development/tools/tapview { };
+
+  run = callPackage ../development/tools/run { };
+
+  mblock-mlink = callPackage ../development/tools/mblock-mlink { };
+
+  mod = callPackage ../development/tools/mod { };
+
+  broadlink-cli = callPackage ../tools/misc/broadlink-cli {};
+
+  mht2htm = callPackage ../tools/misc/mht2htm { };
+
+  fetchpatch = callPackage ../build-support/fetchpatch { }
+    // {
+      tests = pkgs.tests.fetchpatch;
+    };
+
+  fetchs3 = callPackage ../build-support/fetchs3 { };
+
+  fetchsvn = if stdenv.buildPlatform != stdenv.hostPlatform
+    # hack around splicing being crummy with things that (correctly) don't eval.
+    then buildPackages.fetchsvn
+    else callPackage ../build-support/fetchsvn { };
+
+  fetchsvnrevision = import ../build-support/fetchsvnrevision runCommand subversion;
+
+  fetchsvnssh = callPackage ../build-support/fetchsvnssh { };
+
+  fetchhg = callPackage ../build-support/fetchhg { };
+
+  fetchFirefoxAddon = callPackage ../build-support/fetchfirefoxaddon { }
+    // {
+      tests = pkgs.tests.fetchFirefoxAddon;
+    };
+
+  fetchNextcloudApp = callPackage ../build-support/fetchnextcloudapp {};
+
+  # `fetchurl' downloads a file from the network.
+  fetchurl = if stdenv.buildPlatform != stdenv.hostPlatform
+    then buildPackages.fetchurl # No need to do special overrides twice,
+    else makeOverridable (import ../build-support/fetchurl) {
+      inherit lib stdenvNoCC buildPackages;
+      inherit cacert;
+      curl = buildPackages.curlMinimal.override (old: rec {
+        # break dependency cycles
+        fetchurl = stdenv.fetchurlBoot;
+        zlib = buildPackages.zlib.override { fetchurl = stdenv.fetchurlBoot; };
+        pkg-config = buildPackages.pkg-config.override (old: {
+          pkg-config = old.pkg-config.override {
+            fetchurl = stdenv.fetchurlBoot;
+          };
+        });
+        perl = buildPackages.perl.override { fetchurl = stdenv.fetchurlBoot; };
+        openssl = buildPackages.openssl.override {
+          fetchurl = stdenv.fetchurlBoot;
+          buildPackages = {
+            coreutils = buildPackages.coreutils.override {
+              fetchurl = stdenv.fetchurlBoot;
+              inherit perl;
+              xz = buildPackages.xz.override { fetchurl = stdenv.fetchurlBoot; };
+              gmp = null;
+              aclSupport = false;
+              attrSupport = false;
+            };
+            inherit perl;
+          };
+          inherit perl;
+        };
+        libssh2 = buildPackages.libssh2.override {
+          fetchurl = stdenv.fetchurlBoot;
+          inherit zlib openssl;
+        };
+        # On darwin, libkrb5 needs bootstrap_cmds which would require
+        # converting many packages to fetchurl_boot to avoid evaluation cycles.
+        # So turn gssSupport off there, and on Windows.
+        # On other platforms, keep the previous value.
+        gssSupport =
+          if stdenv.isDarwin || stdenv.hostPlatform.isWindows
+            then false
+            else old.gssSupport or true; # `? true` is the default
+        libkrb5 = buildPackages.libkrb5.override {
+          fetchurl = stdenv.fetchurlBoot;
+          inherit pkg-config perl openssl;
+          keyutils = buildPackages.keyutils.override { fetchurl = stdenv.fetchurlBoot; };
+        };
+        nghttp2 = buildPackages.nghttp2.override {
+          fetchurl = stdenv.fetchurlBoot;
+          inherit zlib pkg-config openssl;
+          c-ares = buildPackages.c-ares.override { fetchurl = stdenv.fetchurlBoot; };
+          libev = buildPackages.libev.override { fetchurl = stdenv.fetchurlBoot; };
+        };
+      });
+    };
+
+  fetchRepoProject = callPackage ../build-support/fetchrepoproject { };
+
+  fetchipfs = import ../build-support/fetchipfs {
+    inherit curl stdenv;
+  };
+
+  fetchzip = callPackage ../build-support/fetchzip { };
+
+  fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { };
+
+  fetchFromGitea = callPackage ../build-support/fetchgitea { };
+
+  fetchFromGitHub = callPackage ../build-support/fetchgithub {};
+
+  fetchFromBitbucket = callPackage ../build-support/fetchbitbucket {};
+
+  fetchFromSavannah = callPackage ../build-support/fetchsavannah {};
+
+  fetchFromSourcehut = callPackage ../build-support/fetchsourcehut { };
+
+  fetchFromGitLab = callPackage ../build-support/fetchgitlab {};
+
+  fetchFromGitiles = callPackage ../build-support/fetchgitiles {};
+
+  fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz {};
+
+  fetchgx = callPackage ../build-support/fetchgx { };
+
+  resolveMirrorURLs = {url}: fetchurl {
+    showURLs = true;
+    inherit url;
+  };
+
+  installShellFiles = callPackage ../build-support/install-shell-files {};
+
+  # See doc/builders/special/invalidateFetcherByDrvHash.section.md or
+  # https://nixos.org/manual/nixpkgs/unstable/#sec-pkgs-invalidateFetcherByDrvHash
+  invalidateFetcherByDrvHash = f: args:
+    let
+      drvPath = (f args).drvPath;
+      # It's safe to discard the context, because we don't access the path.
+      salt = builtins.unsafeDiscardStringContext (lib.substring 0 12 (baseNameOf drvPath));
+      # New derivation incorporating the original drv hash in the name
+      salted = f (args // { name = "${args.name or "source"}-salted-${salt}"; });
+      # Make sure we did change the derivation. If the fetcher ignores `name`,
+      # `invalidateFetcherByDrvHash` doesn't work.
+      checked =
+        if salted.drvPath == drvPath
+        then throw "invalidateFetcherByDrvHash: Adding the derivation hash to the fixed-output derivation name had no effect. Make sure the fetcher's name argument ends up in the derivation name. Otherwise, the fetcher will not be re-run when its implementation changes. This is important for testing."
+        else salted;
+    in checked;
+
+  lazydocker = callPackage ../tools/misc/lazydocker { };
+
+  ld-is-cc-hook = makeSetupHook { name = "ld-is-cc-hook"; }
+    ../build-support/setup-hooks/ld-is-cc-hook.sh;
+
+  libredirect = callPackage ../build-support/libredirect { };
+
+  madonctl = callPackage ../applications/misc/madonctl { };
+
+  copyDesktopItems = makeSetupHook { } ../build-support/setup-hooks/copy-desktop-items.sh;
+
+  makeDesktopItem = callPackage ../build-support/make-desktopitem { };
+
+  makeDarwinBundle = callPackage ../build-support/make-darwin-bundle { };
+
+  makeAutostartItem = callPackage ../build-support/make-startupitem { };
+
+  makeInitrd = callPackage ../build-support/kernel/make-initrd.nix; # Args intentionally left out
+
+  makeWrapper = makeSetupHook
+    { deps = [ dieHook ];
+      substitutions = {
+        shell = targetPackages.runtimeShell;
+        passthru.tests = tests.makeWrapper;
+      };
+    }
+    ../build-support/setup-hooks/make-wrapper.sh;
+
+  makeBinaryWrapper = let
+    f = { cc, sanitizers }: let
+      san = lib.concatMapStringsSep " " (s: "-fsanitize=${s}") sanitizers;
+      script = runCommand "make-binary-wrapper.sh" {} ''
+        substitute ${../build-support/setup-hooks/make-binary-wrapper.sh} $out \
+          --replace " @CC@ " " ${cc}/bin/cc ${san} "
+      '';
+    in
+      makeSetupHook {
+        deps = [ dieHook cc ];
+        substitutions.passthru.tests = callPackage ../test/make-binary-wrapper {
+          makeBinaryWrapper = makeBinaryWrapper.override {
+            sanitizers = (if stdenv.isDarwin && stdenv.isAarch64
+              then [ ]
+              else [ "undefined" "address" ]
+            );
+          };
+        };
+      } script;
+  in
+    lib.makeOverridable f {
+      cc = stdenv.cc;
+      sanitizers = [ ];
+    };
+
+  makeModulesClosure = { kernel, firmware, rootModules, allowMissing ? false }:
+    callPackage ../build-support/kernel/modules-closure.nix {
+      inherit kernel firmware rootModules allowMissing;
+    };
+
+  mkShell = callPackage ../build-support/mkshell { };
+  mkShellNoCC = mkShell.override { stdenv = stdenvNoCC; };
+
+  mokutil = callPackage ../tools/security/mokutil { };
+
+  nixBufferBuilders = import ../build-support/emacs/buffer.nix { inherit lib writeText; inherit (emacs.pkgs) inherit-local; };
+
+  nix-gitignore = callPackage ../build-support/nix-gitignore { };
+
+  numworks-epsilon = callPackage ../applications/science/math/numworks-epsilon { };
+
+  ociTools = callPackage ../build-support/oci-tools { };
+
+  octant = callPackage ../applications/networking/cluster/octant { };
+  octant-desktop = callPackage ../applications/networking/cluster/octant/desktop.nix { };
+  starboard-octant-plugin = callPackage ../applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix { };
+
+  pathsFromGraph = ../build-support/kernel/paths-from-graph.pl;
+
+  pruneLibtoolFiles = makeSetupHook { name = "prune-libtool-files"; }
+    ../build-support/setup-hooks/prune-libtool-files.sh;
+
+  closureInfo = callPackage ../build-support/closure-info.nix { };
+
+  setupSystemdUnits = callPackage ../build-support/setup-systemd-units.nix { };
+
+  shortenPerlShebang = makeSetupHook
+    { deps = [ dieHook ]; }
+    ../build-support/setup-hooks/shorten-perl-shebang.sh;
+
+  singularity-tools = callPackage ../build-support/singularity-tools { };
+
+  sirula = callPackage ../tools/wayland/sirula { };
+
+  srcOnly = callPackage ../build-support/src-only { };
+
+  substitute = callPackage ../build-support/substitute/substitute.nix { };
+
+  substituteAll = callPackage ../build-support/substitute/substitute-all.nix { };
+
+  substituteAllFiles = callPackage ../build-support/substitute-files/substitute-all-files.nix { };
+
+  replaceDependency = callPackage ../build-support/replace-dependency.nix { };
+
+  nukeReferences = callPackage ../build-support/nuke-references {
+    inherit (darwin) signingUtils;
+  };
+
+  referencesByPopularity = callPackage ../build-support/references-by-popularity { };
+
+  removeReferencesTo = callPackage ../build-support/remove-references-to {
+    inherit (darwin) signingUtils;
+  };
+
+  # No callPackage.  In particular, we don't want `img` *package* in parameters.
+  vmTools = makeOverridable (import ../build-support/vm) { inherit pkgs lib; };
+
+  releaseTools = callPackage ../build-support/release { };
+
+  inherit (lib.systems) platforms;
+
+  setJavaClassPath = makeSetupHook { } ../build-support/setup-hooks/set-java-classpath.sh;
+
+  fixDarwinDylibNames = makeSetupHook {
+    substitutions = { inherit (binutils) targetPrefix; };
+  } ../build-support/setup-hooks/fix-darwin-dylib-names.sh;
+
+  writeDarwinBundle = callPackage ../build-support/make-darwin-bundle/write-darwin-bundle.nix { };
+
+  desktopToDarwinBundle = makeSetupHook {
+    deps = [ writeDarwinBundle librsvg imagemagick python3Packages.icnsutil ];
+  } ../build-support/setup-hooks/desktop-to-darwin-bundle.sh;
+
+  keepBuildTree = makeSetupHook { } ../build-support/setup-hooks/keep-build-tree.sh;
+
+  enableGCOVInstrumentation = makeSetupHook { } ../build-support/setup-hooks/enable-coverage-instrumentation.sh;
+
+  makeGCOVReport = makeSetupHook
+    { deps = [ lcov enableGCOVInstrumentation ]; }
+    ../build-support/setup-hooks/make-coverage-analysis-report.sh;
+
+  # intended to be used like nix-build -E 'with import <nixpkgs> {}; enableDebugging fooPackage'
+  enableDebugging = pkg: pkg.override { stdenv = stdenvAdapters.keepDebugInfo pkg.stdenv; };
+
+  findXMLCatalogs = makeSetupHook { } ../build-support/setup-hooks/find-xml-catalogs.sh;
+
+  wrapGAppsHook = callPackage ../build-support/setup-hooks/wrap-gapps-hook { };
+
+  wrapGAppsHook4 = wrapGAppsHook.override { gtk3 = gtk4; };
+
+  wrapGAppsNoGuiHook = wrapGAppsHook.override { isGraphical = false; };
+
+  separateDebugInfo = makeSetupHook { } ../build-support/setup-hooks/separate-debug-info.sh;
+
+  setupDebugInfoDirs = makeSetupHook { } ../build-support/setup-hooks/setup-debug-info-dirs.sh;
+
+  useOldCXXAbi = makeSetupHook { } ../build-support/setup-hooks/use-old-cxx-abi.sh;
+
+  ical2org = callPackage ../tools/misc/ical2org {};
+
+  iconConvTools = callPackage ../build-support/icon-conv-tools {};
+
+  validatePkgConfig = makeSetupHook
+    { name = "validate-pkg-config"; deps = [ findutils pkg-config ]; }
+    ../build-support/setup-hooks/validate-pkg-config.sh;
+
+  #package writers
+  writers = callPackage ../build-support/writers {};
+
+  # lib functions depending on pkgs
+  inherit (import ../pkgs-lib { inherit lib pkgs; }) formats;
+
+  ### TOOLS
+
+  _3llo = callPackage ../tools/misc/3llo { };
+
+  _3mux = callPackage ../tools/misc/3mux { };
+
+  _1password = callPackage ../applications/misc/1password { };
+
+  _1password-gui = callPackage ../applications/misc/1password-gui { };
+
+  _6tunnel = callPackage ../tools/networking/6tunnel { };
+
+  _7zz = callPackage ../tools/archivers/7zz { };
+
+  _9pfs = callPackage ../tools/filesystems/9pfs { };
+
+  aardvark-dns = callPackage ../tools/networking/aardvark-dns { };
+
+  a2ps = callPackage ../tools/text/a2ps { };
+
+  abcm2ps = callPackage ../tools/audio/abcm2ps { };
+
+  abcmidi = callPackage ../tools/audio/abcmidi { };
+
+  abduco = callPackage ../tools/misc/abduco { };
+
+  acct = callPackage ../tools/system/acct { };
+
+  accuraterip-checksum = callPackage ../tools/audio/accuraterip-checksum { };
+
+  acme-sh = callPackage ../tools/admin/acme-sh { };
+
+  acousticbrainz-client = callPackage ../tools/audio/acousticbrainz-client { };
+
+  acoustidFingerprinter = callPackage ../tools/audio/acoustid-fingerprinter { };
+
+  alsaequal = callPackage ../tools/audio/alsaequal { };
+
+  acpica-tools = callPackage ../tools/system/acpica-tools { };
+
+  act = callPackage ../development/tools/misc/act { };
+
+  actdiag = with python3.pkgs; toPythonApplication actdiag;
+
+  actkbd = callPackage ../tools/system/actkbd { };
+
+  adafruit-ampy = callPackage ../tools/misc/adafruit-ampy { };
+
+  adlplug = callPackage ../applications/audio/adlplug {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices WebKit DiscRecording;
+    jack = libjack2;
+  };
+  opnplug = adlplug.override {
+    type = "OPN";
+  };
+
+  arc_unpacker = callPackage ../tools/archivers/arc_unpacker {
+    boost = boost16x; # checkPhase fails with Boost 1.77
+  };
+
+  adminer = callPackage ../servers/adminer { };
+
+  advancecomp = callPackage ../tools/compression/advancecomp {};
+
+  aefs = callPackage ../tools/filesystems/aefs { };
+
+  aegisub = callPackage ../applications/video/aegisub ({
+    wxGTK = wxGTK30;
+  } // (config.aegisub or {}));
+
+  aerc = callPackage ../applications/networking/mailreaders/aerc { };
+
+  aerospike = callPackage ../servers/nosql/aerospike { };
+
+  aespipe = callPackage ../tools/security/aespipe { };
+
+  aescrypt = callPackage ../tools/misc/aescrypt { };
+
+  aether-lv2 = callPackage ../applications/audio/aether-lv2 { };
+
+  acme-client = callPackage ../tools/networking/acme-client { stdenv = gccStdenv; };
+
+  adrgen = callPackage ../tools/misc/adrgen { };
+
+  adriconf = callPackage ../tools/graphics/adriconf { };
+
+  amass = callPackage ../tools/networking/amass { };
+
+  afew = callPackage ../applications/networking/mailreaders/afew { };
+
+  afetch = callPackage ../tools/misc/afetch { };
+
+  afio = callPackage ../tools/archivers/afio { };
+
+  afl = callPackage ../tools/security/afl {
+    stdenv = clangStdenv;
+  };
+
+  honggfuzz = callPackage ../tools/security/honggfuzz { };
+
+  aflplusplus = callPackage ../tools/security/aflplusplus {
+    clang = clang_9;
+    llvm = llvm_9;
+    python = python37;
+    wine = null;
+  };
+
+  libdislocator = callPackage ../tools/security/afl/libdislocator.nix { };
+
+  afpfs-ng = callPackage ../tools/filesystems/afpfs-ng { };
+
+  agate = callPackage ../servers/gemini/agate {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  agda-pkg = callPackage ../development/tools/agda-pkg { };
+
+  agi = callPackage ../tools/graphics/agi { };
+
+  agrep = callPackage ../tools/text/agrep { };
+
+  aha = callPackage ../tools/text/aha { };
+
+  ahcpd = callPackage ../tools/networking/ahcpd { };
+
+  aide = callPackage ../tools/security/aide { };
+
+  aiodnsbrute = python3Packages.callPackage ../tools/security/aiodnsbrute { };
+
+  aircrack-ng = callPackage ../tools/networking/aircrack-ng { };
+
+  airfield = callPackage ../tools/networking/airfield { };
+
+  apache-airflow = with python3.pkgs; toPythonApplication apache-airflow;
+
+  airsonic = callPackage ../servers/misc/airsonic { };
+
+  airspy = callPackage ../applications/radio/airspy { };
+
+  airspyhf = callPackage ../applications/radio/airspyhf { };
+
+  aj-snapshot  = callPackage ../applications/audio/aj-snapshot { };
+
+  ajour = callPackage ../tools/games/ajour {
+    inherit (gnome) zenity;
+    inherit (plasma5Packages) kdialog;
+  };
+
+  akku = callPackage ../tools/package-management/akku { };
+
+  albert = libsForQt5.callPackage ../applications/misc/albert {};
+
+  aquosctl = callPackage ../tools/misc/aquosctl { };
+
+  arch-install-scripts = callPackage ../tools/misc/arch-install-scripts {};
+
+  auditwheel = callPackage ../tools/package-management/auditwheel { };
+
+  amidst = callPackage ../tools/games/minecraft/amidst { };
+
+  cf-vault = callPackage ../tools/admin/cf-vault { };
+
+  cope = callPackage ../tools/misc/cope { };
+
+  ejson2env = callPackage ../tools/admin/ejson2env { };
+
+  gamemode = callPackage ../tools/games/gamemode {
+    libgamemode32 = pkgsi686Linux.gamemode.lib;
+  };
+
+  gay = callPackage ../tools/misc/gay {  };
+
+  elkhound = callPackage ../development/tools/elkhound { };
+
+  weidu = callPackage ../tools/games/weidu { };
+
+  weylus = callPackage ../applications/graphics/weylus  {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa VideoToolbox;
+  };
+
+  gfshare = callPackage ../tools/security/gfshare { };
+
+  glooctl = callPackage ../applications/networking/cluster/glooctl { };
+
+  gobgp = callPackage ../tools/networking/gobgp { };
+
+  goflow = callPackage ../tools/networking/goflow { };
+
+  gofu = callPackage ../applications/misc/gofu { };
+
+  godns = callPackage ../tools/networking/godns { };
+
+  godspeed = callPackage ../tools/networking/godspeed { };
+
+  fwbuilder = libsForQt5.callPackage ../tools/security/fwbuilder { };
+
+  headsetcontrol = callPackage ../tools/audio/headsetcontrol { };
+
+  ksnip = libsForQt5.callPackage ../tools/misc/ksnip { };
+
+  linux-router = callPackage ../tools/networking/linux-router { };
+
+  linux-router-without-wifi = linux-router.override { useWifiDependencies = false; };
+
+  metapixel = callPackage ../tools/graphics/metapixel { };
+
+  midimonster = callPackage ../tools/audio/midimonster { };
+
+  pferd = callPackage ../tools/misc/pferd {};
+
+  qFlipper = libsForQt515.callPackage ../tools/misc/qflipper { };
+
+  quich = callPackage ../tools/misc/quich { } ;
+
+  redfang = callPackage ../tools/networking/redfang { };
+
+  sdlookup = callPackage ../tools/security/sdlookup { };
+
+  sx-go = callPackage ../tools/security/sx-go { };
+
+  tauon = callPackage ../applications/audio/tauon { };
+
+  termusic = callPackage ../applications/audio/termusic { };
+
+  tfk8s = callPackage ../tools/misc/tfk8s { };
+
+  tnat64 = callPackage ../tools/networking/tnat64 { };
+
+  topicctl = callPackage ../tools/misc/topicctl { };
+
+  veikk-linux-driver-gui = libsForQt5.callPackage ../tools/misc/veikk-linux-driver-gui { };
+
+  ventoy-bin = callPackage ../tools/cd-dvd/ventoy-bin { };
+
+  vopono = callPackage ../tools/networking/vopono { };
+
+  winbox = callPackage ../tools/admin/winbox {
+    wine = wineWowPackages.staging;
+    use64 = true;
+  };
+
+  writedisk = callPackage ../tools/misc/writedisk { };
+
+  xcd = callPackage ../tools/misc/xcd { };
+
+  xrootd = callPackage ../tools/networking/xrootd { };
+
+  xtrt = callPackage ../tools/archivers/xtrt { };
+
+  yabridge = callPackage ../tools/audio/yabridge {
+    wine = wineWowPackages.staging;
+  };
+
+  yabridgectl = callPackage ../tools/audio/yabridgectl {
+    wine = wineWowPackages.staging;
+  };
+
+  yafetch = callPackage ../tools/misc/yafetch {
+    stdenv = clangStdenv;
+  };
+
+  archi = callPackage ../tools/misc/archi { };
+
+  breitbandmessung = callPackage ../applications/networking/breitbandmessung { };
+
+  ### APPLICATIONS/TERMINAL-EMULATORS
+
+  alacritty = callPackage ../applications/terminal-emulators/alacritty {
+    inherit (xorg) libXcursor libXxf86vm libXi;
+    inherit (darwin.apple_sdk.frameworks) AppKit CoreGraphics CoreServices CoreText Foundation OpenGL;
+  };
+
+  contour = libsForQt5.callPackage ../applications/terminal-emulators/contour { };
+
+  cool-retro-term = libsForQt5.callPackage ../applications/terminal-emulators/cool-retro-term { };
+
+  ctx = callPackage ../applications/terminal-emulators/ctx { };
+
+  darktile = callPackage ../applications/terminal-emulators/darktile { };
+
+  eterm = callPackage ../applications/terminal-emulators/eterm { };
+
+  foot = callPackage ../applications/terminal-emulators/foot { };
+
+  germinal = callPackage ../applications/terminal-emulators/germinal { };
+
+  guake = callPackage ../applications/terminal-emulators/guake { };
+
+  havoc = callPackage ../applications/terminal-emulators/havoc { };
+
+  hyper = callPackage ../applications/terminal-emulators/hyper { };
+
+  iterm2 = callPackage ../applications/terminal-emulators/iterm2 { };
+
+  kermit-terminal = callPackage ../applications/terminal-emulators/kermit-terminal { };
+
+  kitty = callPackage ../applications/terminal-emulators/kitty {
+    harfbuzz = harfbuzz.override { withCoreText = stdenv.isDarwin; };
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL;
+  };
+
+  kitty-themes  = callPackage ../misc/kitty-themes {};
+
+  lxterminal = callPackage ../applications/terminal-emulators/lxterminal { };
+
+  microcom = callPackage ../applications/terminal-emulators/microcom { };
+
+  mlterm = callPackage ../applications/terminal-emulators/mlterm {
+    libssh2 = null;
+    openssl = null;
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  mrxvt = callPackage ../applications/terminal-emulators/mrxvt { };
+
+  nimmm = callPackage ../applications/terminal-emulators/nimmm { };
+
+  roxterm = callPackage ../applications/terminal-emulators/roxterm { };
+
+  rxvt = callPackage ../applications/terminal-emulators/rxvt { };
+
+  rxvt-unicode = callPackage ../applications/terminal-emulators/rxvt-unicode/wrapper.nix { };
+
+  rxvt-unicode-emoji = rxvt-unicode.override {
+    rxvt-unicode-unwrapped = rxvt-unicode-unwrapped-emoji;
+  };
+
+  rxvt-unicode-plugins = import ../applications/terminal-emulators/rxvt-unicode-plugins { inherit callPackage; };
+
+  rxvt-unicode-unwrapped = callPackage ../applications/terminal-emulators/rxvt-unicode { };
+
+  rxvt-unicode-unwrapped-emoji = rxvt-unicode-unwrapped.override {
+    emojiSupport = true;
+  };
+
+  sakura = callPackage ../applications/terminal-emulators/sakura { };
+
+  st = callPackage ../applications/terminal-emulators/st {
+    conf = config.st.conf or null;
+    patches = config.st.patches or [];
+    extraLibs = config.st.extraLibs or [];
+  };
+  xst = callPackage ../applications/terminal-emulators/st/xst.nix { };
+  lukesmithxyz-st = callPackage ../applications/terminal-emulators/st/lukesmithxyz-st { };
+  mcaimi-st = callPackage ../applications/terminal-emulators/st/mcaimi-st.nix { };
+  siduck76-st = callPackage ../applications/terminal-emulators/st/siduck76-st.nix { };
+
+  stupidterm = callPackage ../applications/terminal-emulators/stupidterm {
+    gtk = gtk3;
+  };
+
+  terminator = callPackage ../applications/terminal-emulators/terminator { };
+
+  termite = callPackage ../applications/terminal-emulators/termite/wrapper.nix {
+    termite = termite-unwrapped;
+  };
+  termite-unwrapped = callPackage ../applications/terminal-emulators/termite { };
+
+  termonad-with-packages = callPackage ../applications/terminal-emulators/termonad { };
+
+  termonad = termonad-with-packages;
+
+  tilda = callPackage ../applications/terminal-emulators/tilda {
+    gtk = gtk3;
+  };
+
+  tilix = callPackage ../applications/terminal-emulators/tilix { };
+
+  wayst = callPackage ../applications/terminal-emulators/wayst { };
+
+  wezterm = callPackage ../applications/terminal-emulators/wezterm {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation;
+  };
+
+  x3270 = callPackage ../applications/terminal-emulators/x3270 { };
+
+  xterm = callPackage ../applications/terminal-emulators/xterm { };
+
+  xtermcontrol = callPackage ../applications/terminal-emulators/xtermcontrol { };
+
+  yaft = callPackage ../applications/terminal-emulators/yaft { };
+
+  writefreely = callPackage ../applications/misc/writefreely { };
+
+  iqueue = callPackage ../development/libraries/iqueue { };
+
+  lifecycled = callPackage ../tools/misc/lifecycled { };
+
+  lilo = callPackage ../tools/misc/lilo { };
+
+  logseq = callPackage ../applications/misc/logseq {
+    electron = electron_15;
+  };
+
+  natls = callPackage ../tools/misc/natls { };
+
+  notion-app-enhanced = callPackage ../applications/office/notion-app-enhanced { };
+
+  pikchr = callPackage ../tools/graphics/pikchr { };
+
+  popsicle = callPackage ../tools/misc/popsicle { };
+
+  terminal-colors = callPackage ../applications/misc/terminal-colors { };
+
+  termsyn = callPackage ../data/fonts/termsyn { };
+
+  timedoctor = callPackage ../applications/office/timedoctor { };
+
+  tvnamer = callPackage ../tools/misc/tvnamer { };
+
+  twine = with python3Packages; toPythonApplication twine;
+
+  aldo = callPackage ../applications/radio/aldo { };
+
+  alglib = callPackage ../development/libraries/alglib { };
+
+  almanah = callPackage ../applications/misc/almanah { };
+
+  alpine-make-vm-image = callPackage ../tools/virtualization/alpine-make-vm-image { };
+
+  amazon-ec2-utils = callPackage ../tools/admin/amazon-ec2-utils { };
+
+  amazon-ecs-cli = callPackage ../tools/virtualization/amazon-ecs-cli { };
+
+  amazon-qldb-shell = callPackage ../development/tools/amazon-qldb-shell { };
+
+  amber = callPackage ../tools/text/amber {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  amber-secret = callPackage ../tools/security/amber {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  inherit (callPackages ../development/tools/ammonite {})
+    ammonite_2_12
+    ammonite_2_13;
+  ammonite = if scala == scala_2_12 then ammonite_2_12 else ammonite_2_13;
+
+  amp = callPackage ../applications/editors/amp {};
+
+  ams = callPackage ../applications/audio/ams {};
+
+  amtterm = callPackage ../tools/system/amtterm {};
+
+  analog = callPackage ../tools/admin/analog {};
+
+  android-backup-extractor = callPackage ../tools/backup/android-backup-extractor {};
+
+  android-tools = lowPrio (callPackage ../tools/misc/android-tools {
+    stdenv = if stdenv.targetPlatform.isAarch64 then gcc10Stdenv else stdenv;
+  });
+
+  anewer = callPackage ../tools/text/anewer { };
+
+  angle-grinder = callPackage ../tools/text/angle-grinder {};
+
+  ansifilter = callPackage ../tools/text/ansifilter {};
+
+  antora = callPackage ../development/tools/documentation/antora {};
+
+  apfs-fuse = callPackage ../tools/filesystems/apfs-fuse { };
+
+  apfsprogs = callPackage ../tools/filesystems/apfsprogs { };
+
+  apk-tools = callPackage ../tools/package-management/apk-tools {
+    lua = lua5_3;
+  };
+
+  apkid = callPackage ../development/tools/apkid { };
+
+  apkleaks = callPackage ../tools/security/apkleaks { };
+
+  apksigcopier = callPackage ../development/tools/apksigcopier { };
+
+  apksigner = callPackage ../development/tools/apksigner {
+    inherit (androidenv.androidPkgs_9_0) build-tools;
+  };
+
+  apktool = callPackage ../development/tools/apktool {
+    inherit (androidenv.androidPkgs_9_0) build-tools;
+  };
+
+  appimage-run = callPackage ../tools/package-management/appimage-run { };
+  appimage-run-tests = callPackage ../tools/package-management/appimage-run/test.nix {
+    appimage-run = appimage-run.override {
+      appimage-run-tests = null; /* break boostrap cycle for passthru.tests */
+    };
+  };
+
+  appimagekit = callPackage ../tools/package-management/appimagekit {};
+
+  apt-cacher-ng = callPackage ../servers/http/apt-cacher-ng { };
+
+  apt-offline = callPackage ../tools/misc/apt-offline { };
+
+  aptly = callPackage ../tools/misc/aptly { };
+
+  ArchiSteamFarm = callPackage ../applications/misc/ArchiSteamFarm { };
+
+  archivebox = callPackage ../applications/misc/archivebox { };
+
+  archivemount = callPackage ../tools/filesystems/archivemount { };
+
+  archivy = python3Packages.callPackage ../applications/misc/archivy { };
+
+  arandr = callPackage ../tools/X11/arandr { };
+
+  inherit (callPackages ../servers/nosql/arangodb {
+    stdenv = gcc8Stdenv;
+  }) arangodb_3_3 arangodb_3_4 arangodb_3_5;
+  arangodb = arangodb_3_4;
+
+  arcanist = callPackage ../development/tools/misc/arcanist { php = php74; };
+
+  arduino = arduino-core.override { withGui = true; };
+
+  arduino-ci = callPackage ../development/embedded/arduino/arduino-ci { };
+
+  arduino-cli = callPackage ../development/embedded/arduino/arduino-cli { };
+
+  arduino-core = callPackage ../development/embedded/arduino/arduino-core/chrootenv.nix { };
+  arduino-core-unwrapped = callPackage ../development/embedded/arduino/arduino-core { };
+
+  arduino-mk = callPackage ../development/embedded/arduino/arduino-mk {};
+
+  apio = python3Packages.callPackage ../development/embedded/fpga/apio { };
+
+  apitrace = libsForQt514.callPackage ../applications/graphics/apitrace {};
+
+  argtable = callPackage ../development/libraries/argtable { };
+
+  arguments = callPackage ../development/libraries/arguments { };
+
+  argus = callPackage ../tools/networking/argus {};
+
+  argus-clients = callPackage ../tools/networking/argus-clients {};
+
+  argyllcms = callPackage ../tools/graphics/argyllcms {};
+
+  arj = callPackage ../tools/archivers/arj {
+    stdenv = gccStdenv;
+  };
+
+  arp-scan = callPackage ../tools/misc/arp-scan { };
+
+  inherit (callPackages ../data/fonts/arphic {})
+    arphic-ukai arphic-uming;
+
+  artyFX = callPackage ../applications/audio/artyFX {};
+
+  oggvideotools = callPackage ../tools/misc/oggvideotools { };
+
+  owl-lisp = callPackage ../development/compilers/owl-lisp {};
+
+  ascii = callPackage ../tools/text/ascii { };
+
+  asciinema = callPackage ../tools/misc/asciinema {};
+
+  asciinema-scenario = callPackage ../tools/misc/asciinema-scenario {};
+
+  asciiquarium = callPackage ../applications/misc/asciiquarium {};
+
+  ashuffle = callPackage ../applications/audio/ashuffle {};
+
+  ashpd-demo = callPackage ../development/tools/ashpd-demo {};
+
+  asls = callPackage ../development/tools/misc/asls { };
+
+  astc-encoder = callPackage ../tools/graphics/astc-encoder { };
+
+  asymptote = callPackage ../tools/graphics/asymptote {
+    texLive = texlive.combine { inherit (texlive) scheme-small epsf cm-super texinfo; };
+    gsl = gsl_1;
+  };
+
+  async = callPackage ../development/tools/async {};
+
+  async-profiler = callPackage ../development/tools/async-profiler { };
+
+  atheme = callPackage ../servers/irc/atheme { };
+
+  atinout = callPackage ../tools/networking/atinout { };
+
+  atomicparsley = callPackage ../tools/video/atomicparsley {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  audiowaveform = callPackage ../tools/audio/audiowaveform { };
+
+  authenticator = callPackage ../applications/misc/authenticator { };
+
+  autoflake = callPackage ../development/tools/analysis/autoflake { };
+
+  autospotting = callPackage ../applications/misc/autospotting { };
+
+  autosuspend = callPackage ../os-specific/linux/autosuspend { };
+
+  avfs = callPackage ../tools/filesystems/avfs { };
+
+  aliyun-cli = callPackage ../tools/admin/aliyun-cli { };
+
+  aws-iam-authenticator = callPackage ../tools/security/aws-iam-authenticator {};
+
+  awscli = callPackage ../tools/admin/awscli { };
+
+  awscli2 = callPackage ../tools/admin/awscli2 { };
+
+  awsebcli = callPackage ../tools/virtualization/awsebcli {};
+
+  awslimitchecker = callPackage ../tools/admin/awslimitchecker { };
+
+  awslogs = callPackage ../tools/admin/awslogs { };
+
+  aws-lambda-rie = callPackage ../tools/admin/aws-lambda-runtime-interface-emulator { };
+
+  aws-env = callPackage ../tools/admin/aws-env { };
+
+  aws-google-auth = python3Packages.callPackage ../tools/admin/aws-google-auth { };
+
+  aws-mfa = python3Packages.callPackage ../tools/admin/aws-mfa { };
+
+  aws-nuke = callPackage ../tools/admin/aws-nuke { };
+
+  aws-okta = callPackage ../tools/security/aws-okta { };
+
+  aws-rotate-key = callPackage ../tools/admin/aws-rotate-key { };
+
+  aws-sam-cli = callPackage ../development/tools/aws-sam-cli { };
+
+  aws-vault = callPackage ../tools/admin/aws-vault { };
+
+  aws-workspaces = callPackage ../applications/networking/remote/aws-workspaces { };
+
+  iamy = callPackage ../tools/admin/iamy { };
+
+  azure-cli = callPackage ../tools/admin/azure-cli { };
+
+  azure-functions-core-tools = callPackage ../development/tools/azure-functions-core-tools { };
+
+  azure-storage-azcopy = callPackage ../development/tools/azcopy { };
+
+  azure-vhd-utils  = callPackage ../tools/misc/azure-vhd-utils { };
+
+  awless = callPackage ../tools/virtualization/awless { };
+
+  berglas = callPackage ../tools/admin/berglas { };
+
+  betterdiscordctl = callPackage ../tools/misc/betterdiscordctl { };
+
+  betterdiscord-installer = callPackage ../tools/misc/betterdiscord-installer { };
+
+  bitwise = callPackage ../tools/misc/bitwise { };
+
+  blanket = callPackage ../applications/audio/blanket { };
+
+  brakeman = callPackage ../development/tools/analysis/brakeman { };
+
+  brewtarget = libsForQt514.callPackage ../applications/misc/brewtarget { } ;
+
+  boxes = callPackage ../tools/text/boxes { };
+
+  boundary = callPackage ../tools/networking/boundary { };
+
+  chamber = callPackage ../tools/admin/chamber {  };
+
+  chaos = callPackage ../tools/networking/chaos {  };
+
+  charm = callPackage ../applications/misc/charm { };
+
+  chars = callPackage ../tools/text/chars {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  checkip = callPackage ../tools/networking/checkip { };
+
+  ec2-api-tools = callPackage ../tools/virtualization/ec2-api-tools { };
+
+  ec2-ami-tools = callPackage ../tools/virtualization/ec2-ami-tools { };
+
+  ec2-metadata-mock = callPackage ../development/tools/ec2-metadata-mock { };
+
+  exoscale-cli = callPackage ../tools/admin/exoscale-cli { };
+
+  altermime = callPackage ../tools/networking/altermime {};
+
+  alttab = callPackage ../tools/X11/alttab { };
+
+  amule = callPackage ../tools/networking/p2p/amule { };
+
+  amule-daemon = amule.override {
+    monolithic = false;
+    enableDaemon = true;
+  };
+
+  amule-gui = amule.override {
+    monolithic = false;
+    client = true;
+  };
+
+  antennas = nodePackages.antennas;
+
+  apg = callPackage ../tools/security/apg { };
+
+  apt-dater = callPackage ../tools/package-management/apt-dater {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  autorevision = callPackage ../tools/misc/autorevision { };
+
+  automirror = callPackage ../tools/misc/automirror { };
+
+  barman = callPackage ../tools/misc/barman { };
+
+  base16-universal-manager = callPackage ../applications/misc/base16-universal-manager { };
+
+  bashate = python3Packages.callPackage ../development/tools/bashate { };
+
+  bash-my-aws = callPackage ../tools/admin/bash-my-aws { };
+
+  bashcards = callPackage ../tools/misc/bashcards { };
+
+  bazarr = callPackage ../servers/bazarr { };
+
+  bcachefs-tools = callPackage ../tools/filesystems/bcachefs-tools { };
+
+  bisq-desktop = callPackage ../applications/blockchains/bisq-desktop { };
+
+  bic = callPackage ../development/interpreters/bic { };
+
+  binance = callPackage ../applications/misc/binance {
+    electron = electron_13;
+  };
+
+  bit = callPackage ../applications/version-management/git-and-tools/bit { };
+
+  bitwarden = callPackage ../tools/security/bitwarden { };
+
+  inherit (nodePackages) bitwarden-cli;
+
+  inherit (nodePackages) concurrently;
+
+  inherit (nodePackages) hyperspace-cli;
+
+  bklk = callPackage ../applications/misc/bklk { };
+
+  bkyml = callPackage ../tools/misc/bkyml { };
+
+  blockbench-electron = callPackage ../applications/graphics/blockbench-electron { };
+
+  blocksat-cli = with python3Packages; toPythonApplication blocksat-cli;
+
+  bmap-tools = callPackage ../tools/misc/bmap-tools { };
+
+  bonnmotion = callPackage ../development/tools/misc/bonnmotion { };
+
+  bonnie = callPackage ../tools/filesystems/bonnie { };
+
+  bonfire = callPackage ../tools/misc/bonfire { };
+
+  botamusique = callPackage ../tools/audio/botamusique { };
+
+  boulder = callPackage ../tools/admin/boulder { };
+
+  btrfs-heatmap = callPackage ../tools/filesystems/btrfs-heatmap { };
+
+  bucklespring = bucklespring-x11;
+  bucklespring-libinput = callPackage ../applications/audio/bucklespring { };
+  bucklespring-x11 = callPackage ../applications/audio/bucklespring { legacy = true; };
+
+  buildbot = with python3Packages; toPythonApplication buildbot;
+  buildbot-ui = with python3Packages; toPythonApplication buildbot-ui;
+  buildbot-full = with python3Packages; toPythonApplication buildbot-full;
+  buildbot-worker = with python3Packages; toPythonApplication buildbot-worker;
+
+  bunyan-rs = callPackage ../development/tools/bunyan-rs { };
+
+  callaudiod = callPackage ../applications/audio/callaudiod { };
+
+  calls = callPackage ../applications/networking/calls { };
+
+  inherit (nodePackages) castnow;
+
+  castty = callPackage ../tools/misc/castty { };
+
+  certigo = callPackage ../tools/admin/certigo { };
+
+  certipy = callPackage ../tools/security/certipy { };
+
+  catcli = python3Packages.callPackage ../tools/filesystems/catcli { };
+
+  chezmoi = callPackage ../tools/misc/chezmoi { };
+
+  chipsec = callPackage ../tools/security/chipsec {
+    kernel = null;
+    withDriver = false;
+  };
+
+  chroma = callPackage ../tools/text/chroma { };
+
+  clair = callPackage ../tools/admin/clair { };
+
+  cloud-sql-proxy = callPackage ../tools/misc/cloud-sql-proxy { };
+
+  cloudsmith-cli = callPackage ../development/tools/cloudsmith-cli { };
+
+  codeql = callPackage ../development/tools/analysis/codeql { };
+
+  container-linux-config-transpiler = callPackage ../development/tools/container-linux-config-transpiler { };
+
+  fedora-backgrounds = callPackage ../data/misc/fedora-backgrounds { };
+
+  ccextractor = callPackage ../applications/video/ccextractor { };
+
+  cconv = callPackage ../tools/text/cconv { };
+
+  go-check = callPackage ../development/tools/check { };
+
+  go-cve-search = callPackage ../tools/security/go-cve-search { };
+
+  chkcrontab = callPackage ../tools/admin/chkcrontab { };
+
+  claws = callPackage ../tools/misc/claws { };
+
+  cloud-custodian = python3Packages.callPackage ../tools/networking/cloud-custodian  { };
+
+  coconut = with python3Packages; toPythonApplication coconut;
+
+  cod = callPackage ../tools/misc/cod { };
+
+  codespell = with python3Packages; toPythonApplication codespell;
+
+  coolreader = libsForQt5.callPackage ../applications/misc/coolreader {};
+
+  corsair = with python3Packages; toPythonApplication corsair-scan;
+
+  cosign = callPackage ../tools/security/cosign {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  cozy = callPackage ../applications/audio/cozy { };
+
+  cpptoml = callPackage ../development/libraries/cpptoml { };
+
+  cpuid = callPackage ../os-specific/linux/cpuid { };
+
+  msr = callPackage ../os-specific/linux/msr { };
+
+  ctrtool = callPackage ../tools/archivers/ctrtool { };
+
+  crowbar = callPackage ../tools/security/crowbar { };
+
+  crumbs = callPackage ../applications/misc/crumbs { };
+
+  crc32c = callPackage ../development/libraries/crc32c { };
+
+  crcpp = callPackage ../development/libraries/crcpp { };
+
+  cudd = callPackage ../development/libraries/cudd { };
+
+  cue = callPackage ../development/tools/cue { };
+
+  cyclone-scheme = callPackage ../development/interpreters/cyclone { };
+
+  cyclonedx-python = callPackage ../tools/misc/cyclonedx-python { };
+
+  dcap = callPackage ../tools/networking/dcap { };
+
+  deltachat-cursed = callPackage ../applications/networking/instant-messengers/deltachat-cursed { };
+
+  deltachat-desktop = callPackage ../applications/networking/instant-messengers/deltachat-desktop {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  deskew = callPackage ../applications/graphics/deskew { };
+
+  detect-secrets = with python3Packages; toPythonApplication detect-secrets;
+
+  dfmt = callPackage ../tools/text/dfmt { };
+
+  diopser = callPackage ../applications/audio/diopser { };
+
+  diskonaut = callPackage ../tools/misc/diskonaut { };
+
+  diskus = callPackage ../tools/misc/diskus {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  distrobox = callPackage ../applications/virtualization/distrobox { };
+
+  djmount = callPackage ../tools/filesystems/djmount { };
+
+  dgsh = callPackage ../shells/dgsh { };
+
+  dkimpy = with python3Packages; toPythonApplication dkimpy;
+
+  dontgo403 = callPackage ../tools/security/dontgo403 { };
+
+  dpt-rp1-py = callPackage ../tools/misc/dpt-rp1-py { };
+
+  dot-http = callPackage ../development/tools/dot-http {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  doona = callPackage ../tools/security/doona { };
+
+  dotter = callPackage ../tools/misc/dotter { };
+
+  droidcam = callPackage ../applications/video/droidcam { };
+
+  ecdsautils = callPackage ../tools/security/ecdsautils { };
+
+  echidna = haskell.lib.compose.justStaticExecutables (haskellPackages.callPackage (../tools/security/echidna) { });
+
+  sedutil = callPackage ../tools/security/sedutil { };
+
+  elvish = callPackage ../shells/elvish { };
+
+  emplace = callPackage ../tools/package-management/emplace { };
+
+  enchive = callPackage ../tools/security/enchive { };
+
+  enjarify = callPackage ../tools/misc/enjarify { };
+
+  enpass = callPackage ../tools/security/enpass { };
+
+  esbuild = callPackage ../development/tools/esbuild { };
+
+  esbuild_netlify = callPackage ../development/tools/esbuild/netlify.nix { };
+
+  essentia-extractor = callPackage ../tools/audio/essentia-extractor { };
+
+  esh = callPackage ../tools/text/esh { };
+
+  ezstream = callPackage ../tools/audio/ezstream { };
+
+  libfx2 = with python3Packages; toPythonApplication fx2;
+
+  fastmod = callPackage ../tools/text/fastmod {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  fitnesstrax = callPackage ../applications/misc/fitnesstrax { };
+
+  flavours = callPackage ../applications/misc/flavours { };
+
+  flirc = libsForQt5.callPackage ../applications/video/flirc { };
+
+  flood = nodePackages.flood;
+
+  font-config-info = callPackage ../tools/misc/font-config-info { };
+
+  foxdot = with python3Packages; toPythonApplication foxdot;
+
+  fspy = callPackage ../applications/misc/fspy { };
+
+  fluffychat = callPackage  ../applications/networking/instant-messengers/fluffychat { };
+
+  fxlinuxprintutil = callPackage ../tools/misc/fxlinuxprintutil { };
+
+  genann = callPackage ../development/libraries/genann { };
+
+  genpass = callPackage ../tools/security/genpass {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  genymotion = callPackage ../development/mobile/genymotion { };
+
+  galene = callPackage ../servers/web-apps/galene { };
+
+  gamecube-tools = callPackage ../development/tools/gamecube-tools { };
+
+  gammy = qt5.callPackage ../tools/misc/gammy { };
+
+  gams = callPackage ../tools/misc/gams (config.gams or {});
+
+  gem = callPackage ../applications/audio/pd-plugins/gem { };
+
+  git-fire = callPackage ../tools/misc/git-fire { };
+
+  git-privacy = callPackage ../development/tools/git-privacy { };
+
+  git-repo-updater = python3Packages.callPackage ../development/tools/git-repo-updater { };
+
+  git-revise = with python3Packages; toPythonApplication git-revise;
+
+  git-town = callPackage ../tools/misc/git-town { };
+
+  github-changelog-generator = callPackage ../development/tools/github-changelog-generator { };
+
+  github-commenter = callPackage ../development/tools/github-commenter { };
+
+  github-desktop = callPackage ../applications/version-management/github-desktop { };
+
+  github-to-sqlite = with python3Packages; toPythonApplication github-to-sqlite;
+
+  gitless = callPackage ../applications/version-management/gitless { };
+
+  gistyc = with python3Packages; toPythonApplication gistyc;
+
+  gitlint = python3Packages.callPackage ../tools/misc/gitlint { };
+
+  gitter = callPackage  ../applications/networking/instant-messengers/gitter { };
+
+  gjs = callPackage ../development/libraries/gjs { };
+
+  gjo = callPackage ../tools/text/gjo { };
+
+  glances = python3Packages.callPackage ../applications/system/glances { };
+
+  glasgow = with python3Packages; toPythonApplication glasgow;
+
+  gmid = callPackage ../servers/gemini/gmid { };
+
+  gmni = callPackage ../applications/networking/browsers/gmni { };
+
+  gmnisrv = callPackage ../servers/gemini/gmnisrv { };
+
+  gmnitohtml = callPackage ../applications/misc/gmnitohtml { };
+
+  goimapnotify = callPackage ../tools/networking/goimapnotify { };
+
+  gojsontoyaml = callPackage ../development/tools/gojsontoyaml { };
+
+  gomatrix = callPackage ../applications/misc/gomatrix { };
+
+  gomapenum = callPackage ../tools/security/gomapenum { };
+
+  gopacked = callPackage ../applications/misc/gopacked { };
+
+  gucci = callPackage ../tools/text/gucci { };
+
+  guglielmo = libsForQt5.callPackage ../applications/radio/guglielmo { };
+
+  grc = python3Packages.callPackage ../tools/misc/grc { };
+
+  green-pdfviewer = callPackage ../applications/misc/green-pdfviewer {
+    SDL = SDL_sixel;
+  };
+
+  gremlin-console = callPackage ../applications/misc/gremlin-console {
+    openjdk = openjdk11;
+  };
+
+  gremlin-server = callPackage ../applications/misc/gremlin-server {
+    openjdk = openjdk11;
+  };
+
+  grex = callPackage ../tools/misc/grex {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  gcsfuse = callPackage ../tools/filesystems/gcsfuse { };
+
+  glyr = callPackage ../tools/audio/glyr { };
+
+  gtklp = callPackage ../tools/misc/gtklp { };
+
+  google-amber = callPackage ../tools/graphics/amber { };
+
+  hakrawler = callPackage ../tools/security/hakrawler { };
+
+  harvid = callPackage ../tools/video/harvid { };
+
+  hilbish = callPackage ../shells/hilbish { };
+
+  hime = callPackage ../tools/inputmethods/hime {};
+
+  hinit = haskell.lib.compose.justStaticExecutables haskellPackages.hinit;
+
+  hostctl = callPackage ../tools/system/hostctl { };
+
+  hp2p = callPackage ../tools/networking/hp2p { };
+
+  hpe-ltfs = callPackage ../tools/backup/hpe-ltfs { };
+
+  http2tcp = callPackage ../tools/networking/http2tcp { };
+
+  httperf = callPackage ../tools/networking/httperf { };
+
+  hwi = with python3Packages; toPythonApplication hwi;
+
+  ili2c = callPackage ../tools/misc/ili2c { };
+
+  imagelol = callPackage ../tools/compression/imagelol { };
+
+  imageworsener = callPackage ../tools/graphics/imageworsener { };
+
+  imgpatchtools = callPackage ../development/mobile/imgpatchtools { };
+
+  imgcrypt = callPackage ../applications/virtualization/imgcrypt { };
+
+  ipgrep = callPackage ../tools/networking/ipgrep { };
+
+  itch = callPackage ../games/itch {};
+
+  itch-setup = callPackage ../games/itch-setup {};
+
+  lastpass-cli = callPackage ../tools/security/lastpass-cli { };
+
+  leetcode-cli = callPackage ../applications/misc/leetcode-cli { };
+
+  lesspass-cli = callPackage ../tools/security/lesspass-cli { };
+
+  lsix = callPackage ../tools/graphics/lsix { };
+
+  mdr = callPackage ../tools/misc/mdr { };
+
+  mobilecoin-wallet = callPackage ../applications/misc/mobilecoin-wallet { };
+
+  mpdevil = callPackage ../applications/audio/mpdevil { };
+
+  pacparser = callPackage ../tools/networking/pacparser { };
+
+  opencbm = callPackage ../tools/misc/opencbm { };
+
+  parquet-tools = callPackage ../tools/misc/parquet-tools { };
+
+  pass = callPackage ../tools/security/pass { };
+
+  passphrase2pgp = callPackage ../tools/security/passphrase2pgp { };
+
+  pass-git-helper = python3Packages.callPackage ../applications/version-management/git-and-tools/pass-git-helper { };
+
+  pass-nodmenu = callPackage ../tools/security/pass {
+    dmenuSupport = false;
+    pass = pass-nodmenu;
+  };
+
+  pass-wayland = callPackage ../tools/security/pass {
+    waylandSupport = true;
+    pass = pass-wayland;
+  };
+
+  passExtensions = recurseIntoAttrs pass.extensions;
+
+  inherd-quake = callPackage ../applications/misc/inherd-quake {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  xjadeo = callPackage ../tools/video/xjadeo { };
+
+  asc-key-to-qr-code-gif = callPackage ../tools/security/asc-key-to-qr-code-gif { };
+
+  go-audit = callPackage ../tools/system/go-audit { };
+
+  gopass = callPackage ../tools/security/gopass { };
+
+  gopass-jsonapi = callPackage ../tools/security/gopass/jsonapi.nix { };
+
+  git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix { };
+
+  gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix { };
+
+  gosh = callPackage ../tools/security/gosh { };
+
+  gospider = callPackage ../tools/security/gospider { };
+
+  browserpass = callPackage ../tools/security/browserpass { };
+
+  passff-host = callPackage ../tools/security/passff-host { };
+
+  oracle-instantclient = callPackage ../development/libraries/oracle-instantclient { };
+
+  goku = callPackage ../os-specific/darwin/goku { };
+
+  kwakd = callPackage ../servers/kwakd { };
+
+  kwm = callPackage ../os-specific/darwin/kwm { };
+
+  khd = callPackage ../os-specific/darwin/khd {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  kjv = callPackage ../applications/misc/kjv { };
+
+  luigi = callPackage ../applications/networking/cluster/luigi { };
+
+  m-cli = callPackage ../os-specific/darwin/m-cli { };
+
+  pebble = callPackage ../tools/admin/pebble { };
+
+  play-with-mpv = callPackage ../tools/video/play-with-mpv { };
+
+  plausible = callPackage ../servers/web-apps/plausible { };
+
+  reattach-to-user-namespace = callPackage ../os-specific/darwin/reattach-to-user-namespace {};
+
+  skhd = callPackage ../os-specific/darwin/skhd {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  qes = callPackage ../os-specific/darwin/qes {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  waydroid = callPackage ../os-specific/linux/waydroid { };
+
+  wiiload = callPackage ../development/tools/wiiload { };
+
+  wiimms-iso-tools = callPackage ../tools/filesystems/wiimms-iso-tools { };
+
+  waypoint = callPackage ../applications/networking/cluster/waypoint { };
+
+  xcodeenv = callPackage ../development/mobile/xcodeenv { };
+
+  gomobile = callPackage ../development/mobile/gomobile {
+    buildGoModule = buildGo116Module;
+  };
+
+  ssh-agents = callPackage ../tools/networking/ssh-agents { };
+
+  ssh-import-id = python3Packages.callPackage ../tools/admin/ssh-import-id { };
+
+  ssh-key-confirmer = callPackage ../tools/networking/ssh-key-confirmer { };
+
+  sshchecker = callPackage ../tools/security/sshchecker { };
+
+  titaniumenv = callPackage ../development/mobile/titaniumenv { };
+
+  abootimg = callPackage ../development/mobile/abootimg {};
+
+  adbfs-rootless = callPackage ../development/mobile/adbfs-rootless {
+    adb = androidenv.androidPkgs_9_0.platform-tools;
+  };
+
+  adb-sync = callPackage ../development/mobile/adb-sync {
+    inherit (androidenv.androidPkgs_9_0) platform-tools;
+  };
+
+  anbox = callPackage ../os-specific/linux/anbox { };
+
+  androidenv = callPackage ../development/mobile/androidenv {
+    pkgs_i686 = pkgsi686Linux;
+  };
+
+  androidndkPkgs = androidndkPkgs_18b;
+  androidndkPkgs_18b = (callPackage ../development/androidndk-pkgs {})."18b";
+  androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21";
+
+  androidsdk_9_0 = androidenv.androidPkgs_9_0.androidsdk;
+
+  webos = recurseIntoAttrs {
+    cmake-modules = callPackage ../development/mobile/webos/cmake-modules.nix { };
+
+    novacom = callPackage ../development/mobile/webos/novacom.nix { };
+    novacomd = callPackage ../development/mobile/webos/novacomd.nix { };
+  };
+
+  anevicon = callPackage ../tools/networking/anevicon {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  apprise = with python3Packages; toPythonApplication apprise;
+
+  aria2 = callPackage ../tools/networking/aria2 {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  aria = aria2;
+
+  as-tree = callPackage ../tools/misc/as-tree { };
+
+  asmfmt = callPackage ../development/tools/asmfmt { };
+
+  asmrepl = callPackage ../development/interpreters/asmrepl { };
+
+  aspcud = callPackage ../tools/misc/aspcud { };
+
+  at = callPackage ../tools/system/at { };
+
+  atftp = callPackage ../tools/networking/atftp { };
+
+  authoscope = callPackage ../tools/security/authoscope {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  autogen = callPackage ../development/tools/misc/autogen { };
+
+  autojump = callPackage ../tools/misc/autojump { };
+
+  automysqlbackup = callPackage ../tools/backup/automysqlbackup { };
+
+  autorandr = callPackage ../tools/misc/autorandr {};
+
+  avahi = callPackage ../development/libraries/avahi (config.avahi or {});
+
+  avahi-compat = callPackage ../development/libraries/avahi ((config.avahi or {}) // {
+    withLibdnssdCompat = true;
+  });
+
+  avro-c = callPackage ../development/libraries/avro-c { };
+
+  avro-cpp = callPackage ../development/libraries/avro-c++ { };
+
+  aws = callPackage ../tools/virtualization/aws { };
+
+  aws_mturk_clt = callPackage ../tools/misc/aws-mturk-clt { };
+
+  awstats = callPackage ../tools/system/awstats { };
+
+  awsweeper = callPackage ../tools/admin/awsweeper { };
+
+  axel = callPackage ../tools/networking/axel {
+    libssl = openssl;
+  };
+
+  axoloti = callPackage ../applications/audio/axoloti {
+    gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc;
+    binutils-arm-embedded = pkgsCross.arm-embedded.buildPackages.binutils;
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  dfu-util-axoloti = callPackage ../applications/audio/axoloti/dfu-util.nix { };
+  libusb1-axoloti = callPackage ../applications/audio/axoloti/libusb1.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  b3sum = callPackage ../tools/security/b3sum {};
+
+  backblaze-b2 = callPackage ../development/tools/backblaze-b2 { };
+
+  bandwhich = callPackage ../tools/networking/bandwhich {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  bar = callPackage ../tools/system/bar {};
+
+  base16-shell-preview = callPackage ../misc/base16-shell-preview { };
+
+  base16-builder = callPackage ../misc/base16-builder { };
+
+  basex = callPackage ../tools/text/xml/basex { };
+
+  bashplotlib = callPackage ../tools/misc/bashplotlib { };
+
+  babeld = callPackage ../tools/networking/babeld { };
+
+  babelfish = callPackage ../shells/fish/babelfish.nix { };
+
+  badchars = python3Packages.callPackage ../tools/security/badchars { };
+
+  badvpn = callPackage ../tools/networking/badvpn {};
+
+  baget = callPackage ../servers/web-apps/baget { };
+
+  barcode = callPackage ../tools/graphics/barcode {};
+
+  bashmount = callPackage ../tools/filesystems/bashmount {};
+
+  bat = callPackage ../tools/misc/bat {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  bat-extras = recurseIntoAttrs (callPackages ../tools/misc/bat-extras { });
+
+  beats = callPackage ../tools/misc/beats { };
+
+  beauty-line-icon-theme = callPackage ../data/icons/beauty-line-icon-theme {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  bc = callPackage ../tools/misc/bc { };
+
+  bdf2psf = callPackage ../tools/misc/bdf2psf { };
+
+  bdf2sfd = callPackage ../tools/misc/bdf2sfd { };
+
+  bcache-tools = callPackage ../tools/filesystems/bcache-tools { };
+
+  bchunk = callPackage ../tools/cd-dvd/bchunk { };
+
+  inherit (callPackages ../misc/logging/beats/6.x.nix { })
+    filebeat6
+    heartbeat6
+    metricbeat6
+    packetbeat6
+    journalbeat6;
+
+  inherit (callPackages ../misc/logging/beats/7.x.nix { })
+    filebeat7
+    heartbeat7
+    metricbeat7
+    packetbeat7;
+
+  filebeat = filebeat6;
+  heartbeat = heartbeat6;
+  metricbeat = metricbeat6;
+  packetbeat = packetbeat6;
+  journalbeat = journalbeat6;
+
+  bfr = callPackage ../tools/misc/bfr { };
+
+  bibtool = callPackage ../tools/misc/bibtool { };
+
+  bibutils = callPackage ../tools/misc/bibutils { };
+
+  bibtex2html = callPackage ../tools/misc/bibtex2html { };
+
+  bicon = callPackage ../applications/misc/bicon { };
+
+  bindfs = callPackage ../tools/filesystems/bindfs { };
+
+  binwalk = with python3Packages; toPythonApplication binwalk;
+
+  birdtray = libsForQt5.callPackage ../applications/misc/birdtray { };
+
+  bitbucket-cli = callPackage ../tools/misc/bitbucket-cli { };
+
+  bitbucket-server-cli = callPackage ../applications/version-management/git-and-tools/bitbucket-server-cli { };
+
+  blitz = callPackage ../development/libraries/blitz { };
+
+  blockbook = callPackage ../servers/blockbook { };
+
+  blockhash = callPackage ../tools/graphics/blockhash { };
+
+  bluemix-cli = callPackage ../tools/admin/bluemix-cli { };
+
+  blur-effect = callPackage ../tools/graphics/blur-effect { };
+
+  bootiso = callPackage ../tools/cd-dvd/bootiso { };
+
+  butane = callPackage ../development/tools/butane { };
+
+  buttercup-desktop = callPackage ../tools/security/buttercup-desktop { };
+
+  charles = charles4;
+  inherit (callPackage ../applications/networking/charles {})
+    charles3
+    charles4
+  ;
+
+  libquotient = libsForQt5.callPackage ../development/libraries/libquotient {};
+
+  quaternion = libsForQt5.callPackage ../applications/networking/instant-messengers/quaternion { };
+
+  mirage-im = libsForQt5.callPackage ../applications/networking/instant-messengers/mirage {};
+
+  tensor = libsForQt5.callPackage ../applications/networking/instant-messengers/tensor { };
+
+  libtensorflow-bin = callPackage ../development/libraries/science/math/tensorflow/bin.nix {
+    cudaSupport = config.cudaSupport or false;
+    cudatoolkit = cudatoolkit_10_0;
+    cudnn = cudnn_7_4_cudatoolkit_10_0;
+  };
+
+  libtensorflow =
+    if python3.pkgs.tensorflow ? libtensorflow
+    then python3.pkgs.tensorflow.libtensorflow
+    else libtensorflow-bin;
+
+  libtorch-bin = callPackage ../development/libraries/science/math/libtorch/bin.nix {
+    cudaSupport = config.cudaSupport or false;
+  };
+
+  tensorflow-lite = callPackage ../development/libraries/science/math/tensorflow-lite { };
+
+  tezos-rust-libs = callPackage ../development/libraries/tezos-rust-libs { };
+
+  behdad-fonts = callPackage ../data/fonts/behdad-fonts { };
+
+  bfetch = callPackage ../tools/misc/bfetch { };
+
+  bless = callPackage ../applications/editors/bless { };
+
+  blink1-tool = callPackage ../tools/misc/blink1-tool { };
+
+  blis = callPackage ../development/libraries/science/math/blis { };
+
+  bliss = callPackage ../applications/science/math/bliss { };
+
+  blobfuse = callPackage ../tools/filesystems/blobfuse { };
+
+  blockdiag = with python3Packages; toPythonApplication blockdiag;
+
+  bluez-alsa = callPackage ../tools/bluetooth/bluez-alsa { };
+
+  bluez-tools = callPackage ../tools/bluetooth/bluez-tools { };
+
+  bmon = callPackage ../tools/misc/bmon { };
+
+  bmake = callPackage ../development/tools/build-managers/bmake { };
+
+  go-mk = callPackage ../development/tools/build-managers/go-mk { };
+
+  boca = callPackage ../development/libraries/boca { };
+
+  bochs = callPackage ../applications/emulators/bochs {
+    wxGTK = wxGTK30;
+  };
+
+  bubblewrap = callPackage ../tools/admin/bubblewrap { };
+
+  borgbackup = callPackage ../tools/backup/borgbackup { };
+
+  borgmatic = callPackage ../tools/backup/borgmatic { };
+
+  boringtun = callPackage ../tools/networking/boringtun { };
+
+  bookstack = callPackage ../servers/web-apps/bookstack { };
+
+  # Upstream recommends qt5.12 and it doesn't build with qt5.15
+  boomerang = libsForQt512.callPackage ../development/tools/boomerang { };
+
+  boost-build = callPackage ../development/tools/boost-build { };
+
+  boot = callPackage ../development/tools/build-managers/boot { };
+
+  bowtie = callPackage ../applications/science/biology/bowtie { };
+
+  bowtie2 = callPackage ../applications/science/biology/bowtie2 { };
+
+  boxfs = callPackage ../tools/filesystems/boxfs { };
+
+  bozohttpd = callPackage ../servers/http/bozohttpd { };
+  bozohttpd-minimal = callPackage ../servers/http/bozohttpd { minimal = true; };
+
+  bpb = callPackage ../tools/security/bpb { inherit (darwin.apple_sdk.frameworks) Security; };
+
+  bpytop = callPackage ../tools/system/bpytop { };
+
+  brasero-original = lowPrio (callPackage ../tools/cd-dvd/brasero { });
+
+  brasero = callPackage ../tools/cd-dvd/brasero/wrapper.nix { };
+
+  brigand = callPackage ../development/libraries/brigand { };
+
+  brltty = callPackage ../tools/misc/brltty { };
+
+  brook = callPackage ../tools/networking/brook { };
+
+  broot = callPackage ../tools/misc/broot {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (xorg) libxcb;
+  };
+
+  bruteforce-luks = callPackage ../tools/security/bruteforce-luks { };
+
+  brutespray = callPackage ../tools/security/brutespray { };
+
+  breakpointHook = assert stdenv.isLinux;
+    makeSetupHook { } ../build-support/setup-hooks/breakpoint-hook.sh;
+
+  py65 = python3Packages.callPackage ../applications/emulators/py65 { };
+
+  simh = callPackage ../applications/emulators/simh { };
+
+  btrfs-progs = callPackage ../tools/filesystems/btrfs-progs { };
+
+  btrfs-snap = callPackage ../tools/filesystems/btrfs-snap { };
+
+  btlejack = python3Packages.callPackage ../applications/radio/btlejack { };
+
+  btrbk = callPackage ../tools/backup/btrbk { };
+
+  buildpack = callPackage ../development/tools/buildpack { };
+
+  bottom-rs = callPackage ../tools/misc/bottom-rs { };
+
+  bsp-layout = callPackage ../tools/misc/bsp-layout {};
+
+  buildtorrent = callPackage ../tools/misc/buildtorrent { };
+
+  bustle = haskellPackages.bustle;
+
+  buttersink = callPackage ../tools/filesystems/buttersink { };
+
+  bwm_ng = callPackage ../tools/networking/bwm-ng { };
+
+  bwbasic = callPackage ../development/interpreters/bwbasic { };
+
+  byobu = callPackage ../tools/misc/byobu {
+    # Choices: [ tmux screen ];
+    textual-window-manager = tmux;
+  };
+
+  bsh = fetchurl {
+    url = "http://www.beanshell.org/bsh-2.0b5.jar";
+    sha256 = "0p2sxrpzd0vsk11zf3kb5h12yl1nq4yypb5mpjrm8ww0cfaijck2";
+  };
+
+  btfs = callPackage ../os-specific/linux/btfs { };
+
+  buildah = callPackage ../development/tools/buildah/wrapper.nix { };
+  buildah-unwrapped = callPackage ../development/tools/buildah { };
+
+  buildkit = callPackage ../development/tools/buildkit { };
+
+  bukubrow = callPackage ../tools/networking/bukubrow { };
+
+  burpsuite = callPackage ../tools/networking/burpsuite {};
+
+  bs-platform = callPackage ../development/compilers/bs-platform {};
+
+  ciano = callPackage ../applications/graphics/ciano {
+    inherit (pantheon) granite;
+    python = python3;
+    gtk = gtk3;
+  };
+
+  c3d = callPackage ../applications/graphics/c3d {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  cue2pops = callPackage ../tools/cd-dvd/cue2pops { };
+
+  cabal2nix-unwrapped = haskell.lib.compose.justStaticExecutables (haskell.lib.compose.generateOptparseApplicativeCompletion "cabal2nix" haskellPackages.cabal2nix);
+
+  cabal2nix = symlinkJoin {
+    inherit (cabal2nix-unwrapped) name meta;
+    nativeBuildInputs = [ makeWrapper ];
+    paths = [ cabal2nix-unwrapped ];
+    postBuild = ''
+      wrapProgram $out/bin/cabal2nix \
+        --prefix PATH ":" "${lib.makeBinPath [ nix nix-prefetch-scripts ]}"
+    '';
+  };
+
+  stack2nix = with haskell.lib; overrideCabal (justStaticExecutables haskellPackages.stack2nix) (_: {
+    executableToolDepends = [ makeWrapper ];
+    postInstall = ''
+      wrapProgram $out/bin/stack2nix \
+        --prefix PATH ":" "${git}/bin:${cabal-install}/bin"
+    '';
+  });
+
+  caddy = callPackage ../servers/caddy { };
+
+  traefik = callPackage ../servers/traefik { };
+
+  traefik-certs-dumper = callPackage ../tools/misc/traefik-certs-dumper { };
+
+  calamares = libsForQt515.callPackage ../tools/misc/calamares {
+    python = python3;
+    boost = boost.override { enablePython = true; python = python3; };
+  };
+
+  calendar-cli = callPackage ../tools/networking/calendar-cli { };
+
+  cameradar = callPackage ../tools/security/cameradar { };
+
+  candle = libsForQt5.callPackage ../applications/misc/candle { };
+
+  capstone = callPackage ../development/libraries/capstone { };
+
+  keystone = callPackage ../development/libraries/keystone { };
+
+  casync = callPackage ../applications/networking/sync/casync {
+    sphinx = python3Packages.sphinx;
+  };
+
+  cataract          = callPackage ../applications/misc/cataract { };
+  cataract-unstable = callPackage ../applications/misc/cataract/unstable.nix { };
+
+  catch = callPackage ../development/libraries/catch { };
+
+  catch2 = callPackage ../development/libraries/catch2 { };
+
+  catdoc = callPackage ../tools/text/catdoc { };
+
+  catdocx = callPackage ../tools/text/catdocx { };
+
+  catclock = callPackage ../applications/misc/catclock { };
+
+  cardpeek = callPackage ../applications/misc/cardpeek { inherit (darwin.apple_sdk.frameworks) PCSC; };
+
+  cawbird = callPackage ../applications/networking/cawbird { };
+
+  cde = callPackage ../tools/package-management/cde { };
+
+  cdemu-daemon = callPackage ../applications/emulators/cdemu/daemon.nix { };
+
+  cdemu-client = callPackage ../applications/emulators/cdemu/client.nix { };
+
+  ceres-solver = callPackage ../development/libraries/ceres-solver {
+    gflags = null; # only required for examples/tests
+  };
+
+  craftos-pc = callPackage ../applications/emulators/craftos-pc { };
+
+  gcdemu = callPackage ../applications/emulators/cdemu/gui.nix { };
+
+  image-analyzer = callPackage ../applications/emulators/cdemu/analyzer.nix { };
+
+  cbor-diag = callPackage ../development/tools/cbor-diag { };
+
+  cassowary = callPackage ../tools/networking/cassowary { };
+
+  croc = callPackage ../tools/networking/croc { };
+
+  cbftp = callPackage ../tools/networking/cbftp { };
+
+  cddl = callPackage ../development/tools/cddl { };
+
+  cedille = callPackage ../applications/science/logic/cedille
+                          { inherit (haskellPackages) alex happy Agda ghcWithPackages;
+                          };
+
+  cfdyndns = callPackage ../applications/networking/dyndns/cfdyndns { };
+
+  cfm = callPackage ../applications/misc/cfm { };
+
+  charliecloud = callPackage ../applications/virtualization/charliecloud { };
+
+  chelf = callPackage ../tools/misc/chelf { };
+
+  chisel = callPackage ../tools/networking/chisel { };
+
+  cht-sh = callPackage ../tools/misc/cht.sh { };
+
+  cinny = callPackage ../applications/networking/instant-messengers/cinny { stdenv = stdenvNoCC; };
+
+  ckbcomp = callPackage ../tools/X11/ckbcomp { };
+
+  clac = callPackage ../tools/misc/clac {};
+
+  clash = callPackage ../tools/networking/clash { };
+
+  clasp = callPackage ../tools/misc/clasp { };
+
+  clevercsv = with python3Packages; toPythonApplication clevercsv;
+
+  clevis = callPackage ../tools/security/clevis {
+    asciidoc = asciidoc-full;
+  };
+
+  cli53 = callPackage ../tools/admin/cli53 { };
+
+  cli-visualizer = callPackage ../applications/misc/cli-visualizer { };
+
+  clickclack = callPackage ../tools/misc/clickclack { };
+
+  clickgen = with python3Packages; toPythonApplication clickgen;
+
+  clog-cli = callPackage ../development/tools/clog-cli { };
+
+  cloud-init = python3.pkgs.callPackage ../tools/virtualization/cloud-init { inherit systemd; };
+
+  cloudbrute = callPackage ../tools/security/cloudbrute { };
+
+  cloudflared = callPackage ../applications/networking/cloudflared { };
+
+  cloudmonkey = callPackage ../tools/virtualization/cloudmonkey { };
+
+  clib = callPackage ../tools/package-management/clib { };
+
+  clingo = callPackage ../applications/science/logic/potassco/clingo.nix { };
+
+  clingcon = callPackage ../applications/science/logic/potassco/clingcon.nix { };
+
+  clprover = callPackage ../applications/science/logic/clprover/clprover.nix { };
+
+  clusterctl = callPackage ../applications/networking/cluster/clusterctl { };
+
+  coloredlogs = with python3Packages; toPythonApplication coloredlogs;
+
+  colord-kde = libsForQt5.callPackage ../tools/misc/colord-kde {};
+
+  colpack = callPackage ../applications/science/math/colpack { };
+
+  cz-cli = callPackage ../applications/version-management/cz-cli {};
+
+  comma = callPackage ../tools/package-management/comma { };
+
+  commitizen = python3Packages.callPackage ../applications/version-management/commitizen { };
+
+  common-licenses = callPackage ../data/misc/common-licenses {};
+
+  compactor = callPackage ../applications/networking/compactor { };
+
+  consul = callPackage ../servers/consul { };
+
+  consul-alerts = callPackage ../servers/monitoring/consul-alerts { };
+
+  consul-template = callPackage ../tools/system/consul-template { };
+
+  copyright-update = callPackage ../tools/text/copyright-update { };
+
+  inherit (callPackage ../tools/misc/coreboot-utils { })
+    msrtool
+    cbmem
+    ifdtool
+    intelmetool
+    cbfstool
+    nvramtool
+    superiotool
+    ectool
+    inteltool
+    amdfwtool
+    acpidump-all
+    coreboot-utils;
+
+  corosync = callPackage ../servers/corosync { };
+
+  cowsay = callPackage ../tools/misc/cowsay { };
+
+  czkawka = callPackage ../tools/misc/czkawka { };
+
+  cherrytree = callPackage ../applications/misc/cherrytree { };
+
+  chntpw = callPackage ../tools/security/chntpw { };
+
+  chopchop = callPackage ../tools/security/chopchop { };
+
+  cliphist = callPackage ../tools/wayland/cliphist { };
+
+  clipman = callPackage ../tools/wayland/clipman { };
+
+  kanshi = callPackage ../tools/wayland/kanshi { };
+
+  oguri = callPackage  ../tools/wayland/oguri { };
+
+  slurp = callPackage ../tools/wayland/slurp { };
+
+  swaykbdd = callPackage ../tools/wayland/swaykbdd { };
+
+  swaycwd = callPackage ../tools/wayland/swaycwd { };
+
+  swayr = callPackage ../tools/wayland/swayr { };
+
+  swaytools = callPackage ../tools/wayland/swaytools { };
+
+  wayland-utils = callPackage ../tools/wayland/wayland-utils { };
+
+  wayland-proxy-virtwl = callPackage ../tools/wayland/wayland-proxy-virtwl { };
+
+  wev = callPackage ../tools/wayland/wev { };
+
+  wdomirror = callPackage ../tools/wayland/wdomirror { };
+
+  wl-clipboard = callPackage ../tools/wayland/wl-clipboard { };
+
+  wl-clipboard-x11 = callPackage ../tools/wayland/wl-clipboard-x11 { };
+
+  wl-mirror = callPackage ../tools/wayland/wl-mirror { };
+
+  wlogout = callPackage ../tools/wayland/wlogout { };
+
+  wlr-randr = callPackage ../tools/wayland/wlr-randr { };
+
+  wlrctl = callPackage ../tools/wayland/wlrctl { };
+
+  wlsunset = callPackage ../tools/wayland/wlsunset { };
+
+  wl-gammactl = callPackage ../tools/wayland/wl-gammactl { };
+
+  wluma = callPackage ../tools/wayland/wluma {  };
+
+  wob = callPackage ../tools/wayland/wob { };
+
+  wshowkeys = callPackage ../tools/wayland/wshowkeys { };
+
+  wtype = callPackage ../tools/wayland/wtype { };
+
+  ydotool = callPackage ../tools/wayland/ydotool { };
+
+  clipster = callPackage ../tools/misc/clipster { };
+
+  clockify = callPackage ../applications/office/clockify {
+    electron = electron_11;
+  };
+
+  contrast = callPackage ../applications/accessibility/contrast { };
+
+  cplex = callPackage ../applications/science/math/cplex (config.cplex or {});
+
+  cpulimit = callPackage ../tools/misc/cpulimit { };
+
+  code-minimap = callPackage ../tools/misc/code-minimap { };
+
+  codesearch = callPackage ../tools/text/codesearch { };
+
+  codec2 = callPackage ../development/libraries/codec2 { };
+
+  contacts = callPackage ../tools/misc/contacts {
+    inherit (darwin.apple_sdk.frameworks) Foundation AddressBook;
+    xcbuildHook = xcbuild6Hook;
+  };
+
+  colorls = callPackage ../tools/system/colorls { };
+
+  coloursum = callPackage ../tools/text/coloursum {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  compsize = callPackage ../os-specific/linux/compsize { };
+
+  cot = with python3Packages; toPythonApplication cot;
+
+  coturn = callPackage ../servers/coturn { };
+
+  coursier = callPackage ../development/tools/coursier {};
+
+  cppclean = callPackage ../development/tools/cppclean {};
+
+  credhub-cli = callPackage ../tools/admin/credhub-cli {};
+
+  crex = callPackage ../tools/misc/crex { };
+
+  cri-tools = callPackage ../tools/virtualization/cri-tools {};
+
+  crip = callPackage ../applications/audio/crip { };
+
+  crosvm = callPackage ../applications/virtualization/crosvm { };
+
+  crunch = callPackage ../tools/security/crunch { };
+
+  crudini = callPackage ../tools/misc/crudini { };
+
+  csv2odf = callPackage ../applications/office/csv2odf { };
+
+  csvdiff = callPackage ../tools/text/csvdiff { };
+
+  csview = callPackage ../tools/text/csview { };
+
+  csvkit = callPackage ../tools/text/csvkit { };
+
+  csvtool = callPackage ../development/ocaml-modules/csv/csvtool.nix { };
+
+  csv2latex = callPackage ../tools/misc/csv2latex { };
+
+  csvs-to-sqlite = callPackage ../tools/misc/csvs-to-sqlite { };
+
+  cucumber = callPackage ../development/tools/cucumber {};
+
+  dabtools = callPackage ../applications/radio/dabtools { };
+
+  daemontools = callPackage ../tools/admin/daemontools { };
+
+  dale = callPackage ../development/compilers/dale { };
+
+  damon = callPackage ../tools/admin/damon { };
+
+  dante = callPackage ../servers/dante { };
+
+  dapr-cli = callPackage ../development/tools/dapr/cli {};
+
+  dasel = callPackage ../applications/misc/dasel { };
+
+  dasher = callPackage ../applications/accessibility/dasher { };
+
+  datamash = callPackage ../tools/misc/datamash { };
+
+  datasette = with python3Packages; toPythonApplication datasette;
+
+  howard-hinnant-date = callPackage ../development/libraries/howard-hinnant-date { };
+
+  datefmt = callPackage ../tools/misc/datefmt { };
+
+  datefudge = callPackage ../tools/system/datefudge { };
+
+  dateutils = callPackage ../tools/misc/dateutils { };
+
+  datovka = libsForQt5.callPackage ../applications/networking/datovka { };
+
+  dave = callPackage ../servers/http/dave { };
+
+  dconf = callPackage ../development/libraries/dconf { };
+
+  dcw-gmt = callPackage ../applications/gis/gmt/dcw.nix { };
+
+  ddar = callPackage ../tools/backup/ddar { };
+
+  ddate = callPackage ../tools/misc/ddate { };
+
+  ddosify = callPackage ../development/tools/ddosify { };
+
+  dduper = callPackage ../tools/filesystems/dduper { };
+
+  dedup = callPackage ../tools/backup/dedup { };
+
+  dehydrated = callPackage ../tools/admin/dehydrated { };
+
+  deja-dup = callPackage ../applications/backup/deja-dup { };
+
+  dejsonlz4 = callPackage ../tools/compression/dejsonlz4 { };
+
+  desync = callPackage ../applications/networking/sync/desync { };
+
+  devdocs-desktop = callPackage ../applications/misc/devdocs-desktop { };
+
+  devmem2 = callPackage ../os-specific/linux/devmem2 { };
+
+  dbus-broker = callPackage ../os-specific/linux/dbus-broker { };
+
+  ioport = callPackage ../os-specific/linux/ioport {};
+
+  dgoss = callPackage ../tools/misc/dgoss { };
+
+  diagrams-builder = callPackage ../tools/graphics/diagrams-builder {
+    inherit (haskellPackages) ghcWithPackages diagrams-builder;
+  };
+
+  dialog = callPackage ../tools/misc/dialog { };
+
+  dialogbox = libsForQt5.callPackage ../tools/misc/dialogbox { };
+
+  dibbler = callPackage ../tools/networking/dibbler { };
+
+  diesel-cli = callPackage ../development/tools/diesel-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  digitemp = callPackage ../tools/misc/digitemp { };
+
+  dijo = callPackage ../tools/misc/dijo {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  ding = callPackage ../applications/misc/ding {
+    aspellDicts_de = aspellDicts.de;
+    aspellDicts_en = aspellDicts.en;
+  };
+
+  dirb = callPackage ../tools/networking/dirb { };
+
+  direnv = callPackage ../tools/misc/direnv { };
+
+  h = callPackage ../tools/misc/h { };
+
+  discount = callPackage ../tools/text/discount { };
+
+  discourse = callPackage ../servers/web-apps/discourse { };
+
+  discourseAllPlugins = discourse.override {
+    plugins = lib.filter (p: p ? pluginName) (builtins.attrValues discourse.plugins);
+  };
+
+  discourse-mail-receiver = callPackage ../servers/web-apps/discourse/mail_receiver { };
+
+  discocss = callPackage ../tools/misc/discocss { };
+
+  disfetch = callPackage ../tools/misc/disfetch { };
+
+  disk-filltest = callPackage ../tools/system/disk-filltest { };
+
+  diskscan = callPackage ../tools/misc/diskscan { };
+
+  disorderfs = callPackage ../tools/filesystems/disorderfs {
+    asciidoc = asciidoc-full;
+  };
+
+  dislocker = callPackage ../tools/filesystems/dislocker { };
+
+  distgen = callPackage ../development/tools/distgen {};
+
+  distrobuilder = callPackage ../tools/virtualization/distrobuilder { };
+
+  ditaa = callPackage ../tools/graphics/ditaa { };
+
+  dino = callPackage ../applications/networking/instant-messengers/dino {
+    inherit (gst_all_1) gstreamer gst-plugins-base;
+    gst-plugins-good = gst_all_1.gst-plugins-good.override { gtkSupport = true; };
+  };
+
+  djv = callPackage ../applications/graphics/djv { };
+
+  dlx = callPackage ../applications/emulators/dlx { };
+
+  dgen-sdl = callPackage ../applications/emulators/dgen-sdl { };
+
+  dnschef = python3Packages.callPackage ../tools/networking/dnschef { };
+
+  doitlive = callPackage ../tools/misc/doitlive { };
+
+  dokuwiki = callPackage ../servers/web-apps/dokuwiki { };
+
+  doppler = callPackage ../tools/security/doppler {};
+
+  dosage = callPackage ../applications/graphics/dosage { };
+
+  dotenv-linter = callPackage ../development/tools/analysis/dotenv-linter { };
+
+  inherit (ocamlPackages) dot-merlin-reader;
+
+  dozenal = callPackage ../applications/misc/dozenal { };
+
+  dpic = callPackage ../tools/graphics/dpic { };
+
+  dragon-drop = callPackage ../tools/X11/dragon-drop {
+    gtk = gtk3;
+  };
+
+  dstp = callPackage ../development/tools/dstp { };
+
+  dsvpn = callPackage ../applications/networking/dsvpn { };
+
+  dtools = callPackage ../development/tools/dtools { };
+
+  dtrx = callPackage ../tools/compression/dtrx { };
+
+  dua = callPackage ../tools/misc/dua {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  duf = callPackage ../tools/misc/duf { };
+
+  inherit (ocaml-ng.ocamlPackages_4_10) dune_1;
+  inherit (ocamlPackages) dune_2 dune_3 dune-release;
+
+  duperemove = callPackage ../tools/filesystems/duperemove { };
+
+  dvc = callPackage ../applications/version-management/dvc { };
+
+  dvc-with-remotes = callPackage ../applications/version-management/dvc {
+    enableGoogle = true;
+    enableAWS = true;
+    enableAzure = true;
+    enableSSH = true;
+  };
+
+  dynamic-colors = callPackage ../tools/misc/dynamic-colors { };
+
+  dyncall = callPackage ../development/libraries/dyncall { };
+
+  dyndnsc = callPackage ../applications/networking/dyndns/dyndnsc { };
+
+  earthly = callPackage ../development/tools/earthly { };
+
+  earlybird = callPackage ../tools/security/earlybird { };
+
+  earlyoom = callPackage ../os-specific/linux/earlyoom { };
+
+  EBTKS = callPackage ../development/libraries/science/biology/EBTKS { };
+
+  ecasound = callPackage ../applications/audio/ecasound { };
+
+  edac-utils = callPackage ../os-specific/linux/edac-utils { };
+
+  eddy = libsForQt5.callPackage ../applications/graphics/eddy { };
+
+  eggdrop = callPackage ../tools/networking/eggdrop { };
+
+  ekam = callPackage ../development/tools/build-managers/ekam { };
+
+  eksctl = callPackage ../tools/admin/eksctl { };
+
+  electronplayer = callPackage ../applications/video/electronplayer/electronplayer.nix { };
+
+  electron-mail = callPackage ../applications/networking/mailreaders/electron-mail { };
+
+  element = callPackage ../applications/science/chemistry/element { };
+
+  element-desktop = callPackage ../applications/networking/instant-messengers/element/element-desktop.nix {
+    inherit (darwin.apple_sdk.frameworks) Security AppKit CoreServices;
+    electron = electron_15;
+  };
+  element-desktop-wayland = writeScriptBin "element-desktop" ''
+    #!/bin/sh
+    NIXOS_OZONE_WL=1 exec ${element-desktop}/bin/element-desktop "$@"
+  '';
+
+  element-web = callPackage ../applications/networking/instant-messengers/element/element-web.nix {
+    conf = config.element-web.conf or {};
+  };
+
+  elementary-xfce-icon-theme = callPackage ../data/icons/elementary-xfce-icon-theme { };
+
+  ell = callPackage ../os-specific/linux/ell { };
+
+  elm-github-install = callPackage ../tools/package-management/elm-github-install { };
+
+  elogind = callPackage ../applications/misc/elogind { };
+
+  elpa = callPackage ../development/libraries/elpa { };
+
+  enca = callPackage ../tools/text/enca { };
+
+  ent = callPackage ../tools/misc/ent { };
+
+  envconsul = callPackage ../tools/system/envconsul { };
+
+  envsubst = callPackage ../tools/misc/envsubst { };
+
+  errcheck = callPackage ../development/tools/errcheck { };
+
+  eschalot = callPackage ../tools/security/eschalot { };
+
+  espanso = callPackage ../applications/office/espanso { };
+
+  esphome = callPackage ../tools/misc/esphome { };
+
+  esptool = callPackage ../tools/misc/esptool { };
+
+  esptool-ck = callPackage ../tools/misc/esptool-ck { };
+
+  ephemeralpg = callPackage ../development/tools/database/ephemeralpg {};
+
+  et = callPackage ../applications/misc/et {};
+
+  ejson = callPackage ../development/tools/ejson {};
+
+  eternal-terminal = callPackage ../tools/networking/eternal-terminal {};
+
+  extrude = callPackage ../tools/security/extrude { };
+
+  f3 = callPackage ../tools/filesystems/f3 { };
+
+  f3d = callPackage ../applications/graphics/f3d {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL;
+  };
+
+  fac = callPackage ../development/tools/fac { };
+
+  facedetect = callPackage ../tools/graphics/facedetect { };
+
+  findimagedupes = callPackage ../tools/graphics/findimagedupes { };
+
+  facter = callPackage ../tools/system/facter { };
+
+  fasd = callPackage ../tools/misc/fasd { };
+
+  fastJson = callPackage ../development/libraries/fastjson { };
+
+  fast-cli = nodePackages.fast-cli;
+
+  fast-cpp-csv-parser = callPackage ../development/libraries/fast-cpp-csv-parser { };
+
+  fast-ssh = callPackage ../tools/networking/fast-ssh {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  faudio = callPackage ../development/libraries/faudio { };
+
+  fd = callPackage ../tools/misc/fd { };
+
+  fdroidserver = python3Packages.callPackage ../development/tools/fdroidserver { };
+
+  filebench = callPackage ../tools/misc/filebench { };
+
+  filebot = callPackage ../applications/video/filebot { };
+
+  fileshare = callPackage ../servers/fileshare {};
+
+  fileshelter = callPackage ../servers/web-apps/fileshelter { };
+
+  fioctl = callPackage ../tools/admin/fioctl { };
+
+  firecracker = callPackage ../applications/virtualization/firecracker { };
+
+  firectl = callPackage ../applications/virtualization/firectl { };
+
+  firestarter = callPackage ../applications/misc/firestarter { };
+
+  fits-cloudctl = callPackage ../tools/admin/fits-cloudctl { };
+
+  flitter = callPackage ../tools/misc/flitter { };
+
+  frangipanni = callPackage ../tools/text/frangipanni { };
+
+  fselect = callPackage ../tools/misc/fselect { };
+
+  fsmon = callPackage ../tools/misc/fsmon { };
+
+  fst = callPackage ../tools/text/fst { };
+
+  fsql = callPackage ../tools/misc/fsql { };
+
+  fop = callPackage ../tools/typesetting/fop {
+    jdk = openjdk8;
+  };
+
+  fondu = callPackage ../tools/misc/fondu { };
+
+  fpp = callPackage ../tools/misc/fpp { };
+
+  fsmark = callPackage ../tools/misc/fsmark { };
+
+  futhark = haskell.lib.compose.justStaticExecutables haskellPackages.futhark;
+
+  inherit (nodePackages) fx;
+
+  tllist = callPackage ../development/libraries/tllist { };
+
+  fcft = callPackage ../development/libraries/fcft { };
+
+  fuzzel = callPackage ../applications/misc/fuzzel { };
+
+  flashfocus = callPackage ../misc/flashfocus { };
+
+  qt-video-wlr = libsForQt5.callPackage ../applications/misc/qt-video-wlr { };
+
+  fwup = callPackage ../tools/misc/fwup {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration;
+  };
+
+  fx_cast_bridge = callPackage ../tools/misc/fx_cast { };
+
+  fzf = callPackage ../tools/misc/fzf { };
+
+  fzf-zsh = callPackage ../shells/zsh/fzf-zsh { };
+
+  fzy = callPackage ../tools/misc/fzy { };
+
+  g2o = libsForQt5.callPackage ../development/libraries/g2o { };
+
+  gb-backup = callPackage ../tools/backup/gamerbackup { };
+
+  gbsplay = callPackage ../applications/audio/gbsplay { };
+
+  gdrive = callPackage ../applications/networking/gdrive { };
+
+  gdu = callPackage ../tools/system/gdu { };
+
+  go-chromecast = callPackage ../applications/video/go-chromecast { };
+
+  go-containerregistry = callPackage ../development/tools/go-containerregistry { };
+  inherit (go-containerregistry) crane gcrane;
+
+  go-rice = callPackage ../tools/misc/go.rice {};
+
+  go-2fa = callPackage ../tools/security/2fa {};
+
+  go-dependency-manager = callPackage ../development/tools/gdm { };
+
+  go-neb = callPackage ../applications/networking/instant-messengers/go-neb { };
+
+  geckodriver = callPackage ../development/tools/geckodriver {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  geekbench = callPackage ../tools/misc/geekbench { };
+
+  gencfsm = callPackage ../tools/security/gencfsm { };
+
+  genromfs = callPackage ../tools/filesystems/genromfs { };
+
+  gh-ost = callPackage ../tools/misc/gh-ost { };
+
+  ghdorker = callPackage ../tools/security/ghdorker { };
+
+  ghidra = callPackage ../tools/security/ghidra/build.nix { };
+
+  ghidra-bin = callPackage ../tools/security/ghidra { };
+
+  gh2md = callPackage ../tools/backup/gh2md { };
+
+  gif-for-cli = callPackage ../tools/misc/gif-for-cli { };
+
+  giph = callPackage ../applications/video/giph { };
+
+  gir-rs = callPackage ../development/tools/gir { };
+
+  gist = callPackage ../tools/text/gist { };
+
+  gitjacker = callPackage ../tools/security/gitjacker { };
+
+  gixy = callPackage ../tools/admin/gixy { };
+
+  glpaper = callPackage ../development/tools/glpaper { };
+
+  gllvm = callPackage ../development/tools/gllvm { };
+
+  glide = callPackage ../development/tools/glide { };
+
+  globalarrays = callPackage ../development/libraries/globalarrays { };
+
+  glock = callPackage ../development/tools/glock { };
+
+  glslviewer = callPackage ../development/tools/glslviewer {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  gmic = callPackage ../tools/graphics/gmic { };
+
+  gmic-qt = libsForQt5.callPackage ../tools/graphics/gmic-qt { };
+
+  # NOTE: If overriding qt version, krita needs to use the same qt version as
+  # well.
+  gmic-qt-krita = gmic-qt.override {
+    variant = "krita";
+  };
+
+  gmt = callPackage ../applications/gis/gmt {
+    inherit (darwin.apple_sdk.frameworks)
+      Accelerate CoreGraphics CoreVideo;
+  };
+
+  gpg-tui = callPackage ../tools/security/gpg-tui {
+    inherit (darwin.apple_sdk.frameworks) AppKit Foundation;
+    inherit (darwin) libobjc libresolv;
+  };
+
+  goa = callPackage ../development/tools/goa { };
+
+  goawk = callPackage ../tools/text/goawk { };
+
+  gohai = callPackage ../tools/system/gohai { };
+
+  gorilla-bin = callPackage ../tools/security/gorilla-bin { };
+
+  godu = callPackage ../tools/misc/godu {
+    buildGoModule = buildGo116Module;
+  };
+
+  goss = callPackage ../tools/misc/goss { };
+
+  gosu = callPackage ../tools/misc/gosu { };
+
+  gotify-cli = callPackage ../tools/misc/gotify-cli { };
+
+  gotify-desktop = callPackage ../tools/misc/gotify-desktop { };
+
+  gping = callPackage ../tools/networking/gping {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  gpu-burn = callPackage ../applications/misc/gpu-burn { };
+
+  greg = callPackage ../applications/audio/greg {
+    pythonPackages = python3Packages;
+  };
+
+  grim = callPackage ../tools/graphics/grim { };
+
+  gringo = callPackage ../tools/misc/gringo { };
+
+  grit = callPackage ../tools/misc/grit { };
+
+  grobi = callPackage ../tools/X11/grobi { };
+
+  gscan2pdf = callPackage ../applications/graphics/gscan2pdf { };
+
+  gsctl = callPackage ../applications/misc/gsctl { };
+
+  gthree = callPackage ../development/libraries/gthree { };
+
+  gtg = callPackage ../applications/office/gtg { };
+
+  gti = callPackage ../tools/misc/gti { };
+
+  hdate = callPackage ../applications/misc/hdate { };
+
+  heatseeker = callPackage ../tools/misc/heatseeker { };
+
+  hebcal = callPackage ../tools/misc/hebcal {};
+
+  hexio = callPackage ../development/tools/hexio { };
+
+  hexyl = callPackage ../tools/misc/hexyl { };
+
+  hid-listen = callPackage ../tools/misc/hid-listen { };
+
+  hidrd = callPackage ../tools/misc/hidrd { };
+
+  hiksink = callPackage ../tools/misc/hiksink {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  hocr-tools = with python3Packages; toPythonApplication hocr-tools;
+
+  home-manager = callPackage ../tools/package-management/home-manager {};
+
+  hostsblock = callPackage ../tools/misc/hostsblock { };
+
+  hottext = callPackage ../tools/text/hottext { };
+
+  hopper = qt5.callPackage ../development/tools/analysis/hopper {};
+
+  hr = callPackage ../applications/misc/hr { };
+
+  humioctl = callPackage ../applications/logging/humioctl {};
+
+  hyx = callPackage ../tools/text/hyx { };
+
+  icdiff = callPackage ../tools/text/icdiff {};
+
+  inchi = callPackage ../development/libraries/inchi {};
+
+  icon-slicer = callPackage ../tools/X11/icon-slicer { };
+
+  ifm = callPackage ../tools/graphics/ifm {};
+
+  iina = callPackage ../applications/video/iina { };
+
+  ink = callPackage ../tools/misc/ink { };
+
+  inklecate = callPackage ../development/compilers/inklecate {};
+
+  intensity-normalization = with python3Packages; toPythonApplication intensity-normalization;
+
+  interactsh = callPackage ../tools/misc/interactsh { };
+
+  interlock = callPackage ../servers/interlock {};
+
+  invoiceplane = callPackage ../servers/web-apps/invoiceplane { };
+
+  iotools = callPackage ../tools/misc/iotools { };
+
+  irpf = callPackage ../applications/finance/irpf { };
+
+  jellycli = callPackage ../applications/audio/jellycli { };
+
+  jellyfin = callPackage ../servers/jellyfin { };
+
+  jellyfin-media-player = libsForQt5.callPackage ../applications/video/jellyfin-media-player {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa CoreAudio MediaPlayer;
+  };
+
+  jellyfin-mpv-shim = python3Packages.callPackage ../applications/video/jellyfin-mpv-shim { };
+
+  jellyfin-web = callPackage ../servers/jellyfin/web.nix { };
+
+  jiten = callPackage ../applications/misc/jiten { };
+
+  kanjidraw = callPackage ../applications/misc/kanjidraw { };
+
+  jotta-cli = callPackage ../applications/misc/jotta-cli { };
+
+  joycond = callPackage ../os-specific/linux/joycond { };
+
+  joystickwake = callPackage ../tools/games/joystickwake {};
+
+  jwt-cli = callPackage ../tools/security/jwt-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  kapacitor = callPackage ../servers/monitoring/kapacitor { };
+
+  kaldi = callPackage ../tools/audio/kaldi { };
+
+  kalker = callPackage ../tools/misc/kalker { };
+
+  kisslicer = callPackage ../tools/misc/kisslicer { };
+
+  klaus = with python3Packages; toPythonApplication klaus;
+
+  klipper = callPackage ../servers/klipper { };
+
+  klog = qt5.callPackage ../applications/radio/klog { };
+
+  krapslog = callPackage ../tools/misc/krapslog { };
+
+  krill = callPackage ../servers/krill {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  lcdproc = callPackage ../servers/monitoring/lcdproc { };
+
+  languagetool = callPackage ../tools/text/languagetool {  };
+
+  lepton = callPackage ../tools/graphics/lepton { };
+
+  lepton-eda = callPackage ../applications/science/electronics/lepton-eda { };
+
+  lexicon = callPackage ../tools/admin/lexicon { };
+
+  lief = callPackage ../development/libraries/lief {
+    python = python3;
+  };
+
+  libnbd = callPackage ../development/libraries/libnbd { };
+
+  libndtypes = callPackage ../development/libraries/libndtypes { };
+
+  libxnd = callPackage ../development/libraries/libxnd { };
+
+  lifeograph = callPackage ../applications/editors/lifeograph { };
+
+  link-grammar = callPackage ../tools/text/link-grammar { };
+
+  linuxptp = callPackage ../os-specific/linux/linuxptp { };
+
+  lisgd = callPackage ../tools/inputmethods/lisgd { };
+
+  lite = callPackage ../applications/editors/lite { };
+
+  lite-xl = callPackage ../applications/editors/lite-xl {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  loadwatch = callPackage ../tools/system/loadwatch { };
+
+  loccount = callPackage ../development/tools/misc/loccount { };
+
+  long-shebang = callPackage ../misc/long-shebang {};
+
+  lowdown = callPackage ../tools/typesetting/lowdown { };
+
+  numatop = callPackage ../os-specific/linux/numatop { };
+
+  numworks-udev-rules = callPackage ../os-specific/linux/numworks-udev-rules { };
+
+  num-utils = callPackage ../tools/text/num-utils { };
+
+  iio-sensor-proxy = callPackage ../os-specific/linux/iio-sensor-proxy { };
+
+  ipvsadm = callPackage ../os-specific/linux/ipvsadm { };
+
+  ir-standard-fonts = callPackage ../data/fonts/ir-standard-fonts { };
+
+  kaggle = with python3Packages; toPythonApplication kaggle;
+
+  lynis = callPackage ../tools/security/lynis { };
+
+  maigret = callPackage ../tools/security/maigret { };
+
+  maliit-framework = libsForQt5.callPackage ../applications/misc/maliit-framework { };
+
+  maliit-keyboard = libsForQt5.callPackage ../applications/misc/maliit-keyboard { };
+
+  mandown = callPackage ../tools/misc/mandown { };
+
+  mapcidr = callPackage ../tools/misc/mapcidr { };
+
+  mapproxy = callPackage ../applications/misc/mapproxy { };
+
+  marl = callPackage ../development/libraries/marl {};
+
+  marlin-calc = callPackage ../tools/misc/marlin-calc {};
+
+  masscan = callPackage ../tools/security/masscan { };
+
+  massren = callPackage ../tools/misc/massren { };
+
+  mat2 = with python3.pkgs; toPythonApplication mat2;
+
+  maxcso = callPackage ../tools/archivers/maxcso {};
+
+  medusa = callPackage ../tools/security/medusa { };
+
+  megasync = libsForQt5.callPackage ../applications/misc/megasync {
+    ffmpeg = ffmpeg-full;
+  };
+
+  megacmd = callPackage ../applications/misc/megacmd { };
+
+  merriweather = callPackage ../data/fonts/merriweather { };
+
+  merriweather-sans = callPackage ../data/fonts/merriweather-sans { };
+
+  meson = callPackage ../development/tools/build-managers/meson { };
+
+  meson-tools = callPackage ../misc/meson-tools { };
+
+  metabase = callPackage ../servers/metabase { };
+
+  midicsv = callPackage ../tools/audio/midicsv { };
+
+  miniscript = callPackage ../applications/blockchains/miniscript { };
+
+  miniserve = callPackage ../tools/misc/miniserve {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  mkspiffs = callPackage ../tools/filesystems/mkspiffs { };
+
+  mkspiffs-presets = recurseIntoAttrs (callPackages ../tools/filesystems/mkspiffs/presets.nix { });
+
+  mlarchive2maildir = callPackage ../applications/networking/mailreaders/mlarchive2maildir { };
+
+  mmctl = callPackage ../tools/misc/mmctl { };
+
+  molly-brown = callPackage ../servers/gemini/molly-brown { };
+
+  monetdb = callPackage ../servers/sql/monetdb { };
+
+  monado = callPackage ../applications/graphics/monado {
+    inherit (gst_all_1) gstreamer gst-plugins-base;
+  };
+
+  mons = callPackage ../tools/misc/mons {};
+
+  monsoon = callPackage ../tools/security/monsoon {};
+
+  moodle-dl = callPackage ../tools/networking/moodle-dl { };
+
+  moonraker = callPackage ../servers/moonraker { };
+
+  morsel = callPackage ../tools/text/morsel {};
+
+  mousetweaks = callPackage ../applications/accessibility/mousetweaks {
+    inherit (xorg) libX11 libXtst libXfixes;
+  };
+
+  mp3blaster = callPackage ../applications/audio/mp3blaster { };
+
+  mp3cat = callPackage ../tools/audio/mp3cat {};
+
+  mp3fs = callPackage ../tools/filesystems/mp3fs { };
+
+  mpdas = callPackage ../tools/audio/mpdas { };
+
+  mpdcron = callPackage ../tools/audio/mpdcron { };
+
+  mpdris2 = callPackage ../tools/audio/mpdris2 { };
+
+  mpd-discord-rpc = callPackage ../tools/audio/mpd-discord-rpc { };
+
+  mpd-mpris = callPackage ../tools/audio/mpd-mpris { };
+
+  mpris-scrobbler = callPackage ../tools/audio/mpris-scrobbler { };
+
+  mq-cli = callPackage ../tools/system/mq-cli { };
+
+  mrkd = with python3Packages; toPythonApplication mrkd;
+
+  nautilus-open-any-terminal = callPackage ../tools/misc/nautilus-open-any-terminal { };
+
+  n2n = callPackage ../tools/networking/n2n { };
+
+  nextdns = callPackage ../applications/networking/nextdns { };
+
+  ngadmin = callPackage ../applications/networking/ngadmin { };
+
+  nfdump = callPackage ../tools/networking/nfdump { };
+
+  nfstrace = callPackage ../tools/networking/nfstrace { };
+
+  nix-direnv = callPackage ../tools/misc/nix-direnv { };
+
+  nix-output-monitor = haskell.lib.compose.justStaticExecutables (haskellPackages.nix-output-monitor);
+
+  nix-template = callPackage ../tools/package-management/nix-template {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  nodepy-runtime = with python3.pkgs; toPythonApplication nodepy-runtime;
+
+  nixpkgs-pytools = with python3.pkgs; toPythonApplication nixpkgs-pytools;
+
+  notemap = callPackage ../tools/networking/notemap { };
+
+  noteshrink = callPackage ../tools/misc/noteshrink { };
+
+  noti = callPackage ../tools/misc/noti {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  notify = callPackage ../tools/misc/notify { };
+
+  nrsc5 = callPackage ../applications/misc/nrsc5 { };
+
+  nsync = callPackage ../development/libraries/nsync { };
+
+  nwipe = callPackage ../tools/security/nwipe { };
+
+  nx2elf = callPackage ../tools/compression/nx2elf { };
+
+  nx-libs = callPackage ../tools/X11/nx-libs { };
+
+  nyx = callPackage ../tools/networking/nyx { };
+
+  oci-cli = callPackage ../tools/admin/oci-cli { };
+
+  ocrmypdf = with python3.pkgs; toPythonApplication ocrmypdf;
+
+  ocrfeeder = callPackage ../applications/graphics/ocrfeeder { };
+
+  onboard = callPackage ../applications/misc/onboard { };
+
+  oneshot = callPackage ../tools/networking/oneshot { };
+
+  orjail = callPackage ../tools/security/orjail { };
+
+  online-judge-tools = with python3.pkgs; toPythonApplication online-judge-tools;
+
+  xkbd = callPackage ../applications/misc/xkbd { };
+
+  libpsm2 = callPackage ../os-specific/linux/libpsm2 { };
+
+  optar = callPackage ../tools/graphics/optar {};
+
+  oni2 = callPackage ../applications/editors/oni2 { };
+
+  obinskit = callPackage ../applications/misc/obinskit {};
+
+  odoo = callPackage ../applications/finance/odoo {};
+
+  odafileconverter = libsForQt5.callPackage ../applications/graphics/odafileconverter {};
+
+  oil-buku = callPackage ../applications/misc/oil-buku { };
+
+  ossutil = callPackage ../tools/admin/ossutil {};
+
+  pastel = callPackage ../applications/misc/pastel {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  patdiff = callPackage ../tools/misc/patdiff { };
+
+  patool = with python3Packages; toPythonApplication patool;
+
+  pbgopy = callPackage ../tools/text/pbgopy { };
+
+  pbzx = callPackage ../tools/compression/pbzx { };
+
+  pcb2gcode = callPackage ../tools/misc/pcb2gcode { };
+
+  persepolis = python3Packages.callPackage ../tools/networking/persepolis {
+    wrapQtAppsHook = qt5.wrapQtAppsHook;
+  };
+
+  pev = callPackage ../development/tools/analysis/pev { };
+
+  phd2 = callPackage ../applications/science/astronomy/phd2 { };
+
+  phoronix-test-suite = callPackage ../tools/misc/phoronix-test-suite { };
+
+  photon = callPackage ../tools/networking/photon { };
+
+  piglit = callPackage ../tools/graphics/piglit { };
+
+  playerctl = callPackage ../tools/audio/playerctl { };
+
+  pn = callPackage ../tools/text/pn { };
+
+  pocket-casts = callPackage ../applications/audio/pocket-casts {
+    electron = electron_14;
+  };
+
+  poweralertd = callPackage ../tools/misc/poweralertd { };
+
+  ps_mem = callPackage ../tools/system/ps_mem { };
+
+  pscale = callPackage ../development/tools/pscale { };
+
+  psstop = callPackage ../tools/system/psstop { };
+
+  precice = callPackage ../development/libraries/precice { };
+
+  precice-config-visualizer = callPackage ../tools/misc/precice-config-visualizer { };
+
+  pueue = callPackage ../applications/misc/pueue {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  pixiecore = callPackage ../tools/networking/pixiecore {};
+
+  waitron = callPackage ../tools/networking/waitron {};
+
+  pyCA = python3Packages.callPackage ../applications/video/pyca {};
+
+  pyznap = python3Packages.callPackage ../tools/backup/pyznap {};
+
+  procs = callPackage ../tools/admin/procs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (darwin) libiconv;
+  };
+
+  procyon = callPackage ../tools/misc/procyon { };
+
+  profetch = callPackage ../tools/misc/profetch { };
+
+  psrecord = python3Packages.callPackage ../tools/misc/psrecord {};
+
+  reg = callPackage ../tools/virtualization/reg { };
+
+  river = callPackage ../applications/window-managers/river { };
+
+  rivercarro = callPackage ../applications/misc/rivercarro { };
+
+  rmapi = callPackage ../applications/misc/remarkable/rmapi { };
+
+  rmview = libsForQt5.callPackage ../applications/misc/remarkable/rmview { };
+
+  rm-improved = callPackage ../applications/misc/rm-improved { };
+
+  remarkable-mouse = python3Packages.callPackage ../applications/misc/remarkable/remarkable-mouse { };
+
+  restream = callPackage ../applications/misc/remarkable/restream { };
+
+  ropgadget = with python3Packages; toPythonApplication ropgadget;
+
+  ryujinx = callPackage ../applications/emulators/ryujinx { };
+
+  scour = with python3Packages; toPythonApplication scour;
+
+  s2png = callPackage ../tools/graphics/s2png { };
+
+  shab = callPackage ../tools/text/shab { };
+
+  shell-hist = callPackage ../tools/misc/shell-hist { };
+
+  shellhub-agent = callPackage ../applications/networking/shellhub-agent { };
+
+  sheesy-cli = callPackage ../tools/security/sheesy-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  simdjson = callPackage ../development/libraries/simdjson { };
+
+  shipyard = callPackage ../tools/virtualization/shipyard { };
+
+  simg2img = callPackage ../tools/filesystems/simg2img { };
+
+  simplenes = callPackage ../applications/emulators/simplenes { };
+
+  snippetpixie = callPackage ../tools/text/snippetpixie { };
+
+  snowcat = callPackage ../tools/security/snowcat { };
+
+  socklog = callPackage ../tools/system/socklog { };
+
+  soju = callPackage ../applications/networking/soju { };
+
+  spacevim = callPackage ../applications/editors/spacevim { };
+
+  ssmsh = callPackage ../tools/admin/ssmsh { };
+
+  stacs = callPackage ../tools/security/stacs { };
+
+  stagit = callPackage ../development/tools/stagit { };
+
+  starboard = callPackage ../applications/networking/cluster/starboard { };
+
+  statserial = callPackage ../tools/misc/statserial { };
+
+  steampipe = callPackage ../tools/misc/steampipe { };
+
+  step-ca = callPackage ../tools/security/step-ca {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  step-cli = callPackage ../tools/security/step-cli { };
+
+  string-machine = callPackage ../applications/audio/string-machine { };
+
+  stripe-cli = callPackage ../tools/admin/stripe-cli { };
+
+  bash-supergenpass = callPackage ../tools/security/bash-supergenpass { };
+
+  swappy = callPackage ../applications/misc/swappy { gtk = gtk3; };
+
+  sweep-visualizer = callPackage ../tools/misc/sweep-visualizer { };
+
+  swego = callPackage ../servers/swego { };
+
+  sydbox = callPackage ../os-specific/linux/sydbox { };
+
+  synth = callPackage ../tools/misc/synth {
+    inherit (darwin.apple_sdk.frameworks) AppKit Security;
+  };
+
+  syscall_limiter = callPackage ../os-specific/linux/syscall_limiter {};
+
+  skeema = callPackage ../tools/system/skeema {};
+
+  syslogng = callPackage ../tools/system/syslog-ng { };
+
+  syslogng_incubator = callPackage ../tools/system/syslog-ng-incubator { };
+
+  svt-av1 = callPackage ../tools/video/svt-av1 { };
+
+  inherit (callPackages ../servers/rainloop { })
+    rainloop-community
+    rainloop-standard;
+
+  rav1e = callPackage ../tools/video/rav1e { };
+
+  razergenie = libsForQt5.callPackage ../applications/misc/razergenie { };
+
+  replay-sorcery = callPackage ../tools/video/replay-sorcery { };
+
+  ripasso-cursive = callPackage ../tools/security/ripasso/cursive.nix {
+    inherit (darwin.apple_sdk.frameworks) AppKit Security;
+  };
+
+  roundcube = callPackage ../servers/roundcube { };
+
+  roundcubePlugins = dontRecurseIntoAttrs (callPackage ../servers/roundcube/plugins { });
+
+  routinator = callPackage ../servers/routinator {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rsbep = callPackage ../tools/backup/rsbep { };
+
+  rsyslog = callPackage ../tools/system/rsyslog {
+    hadoop = null; # Currently Broken
+    libksi = null; # Currently Broken
+  };
+
+  rsyslog-light = rsyslog.override {
+    libkrb5 = null;
+    systemd = null;
+    jemalloc = null;
+    libmysqlclient = null;
+    postgresql = null;
+    libdbi = null;
+    net-snmp = null;
+    libuuid = null;
+    gnutls = null;
+    libgcrypt = null;
+    liblognorm = null;
+    openssl = null;
+    librelp = null;
+    libksi = null;
+    liblogging = null;
+    libnet = null;
+    hadoop = null;
+    rdkafka = null;
+    libmongo-client = null;
+    czmq = null;
+    rabbitmq-c = null;
+    hiredis = null;
+    libmaxminddb = null;
+  };
+
+  rtrtr = callPackage ../servers/rtrtr {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  xmlbeans = callPackage ../tools/misc/xmlbeans { };
+
+  xmlsort = perlPackages.XMLFilterSort;
+
+  xmousepasteblock = callPackage ../tools/X11/xmousepasteblock { };
+
+  mcrypt = callPackage ../tools/misc/mcrypt { };
+
+  mongoaudit = callPackage ../tools/security/mongoaudit { };
+
+  mongodb-compass = callPackage ../tools/misc/mongodb-compass { };
+
+  mongodb-tools = callPackage ../tools/misc/mongodb-tools { };
+
+  moosefs = callPackage ../tools/filesystems/moosefs { };
+
+  mozlz4a = callPackage ../tools/compression/mozlz4a { };
+
+  msr-tools = callPackage ../os-specific/linux/msr-tools { };
+
+  mstflint = callPackage ../tools/misc/mstflint { };
+
+  mslink = callPackage ../tools/misc/mslink { };
+
+  mceinject = callPackage ../os-specific/linux/mceinject { };
+
+  mcelog = callPackage ../os-specific/linux/mcelog {
+    util-linux = util-linuxMinimal;
+  };
+
+  sqlint = callPackage ../development/tools/sqlint { };
+
+  antibody = callPackage ../shells/zsh/antibody { };
+
+  antigen = callPackage ../shells/zsh/antigen { };
+
+  apparix = callPackage ../tools/misc/apparix { };
+
+  appleseed = callPackage ../tools/graphics/appleseed { };
+
+  apple-music-electron = callPackage ../applications/audio/apple-music-electron { };
+
+  arping = callPackage ../tools/networking/arping { };
+
+  arpoison = callPackage ../tools/networking/arpoison { };
+
+  asciidoc = callPackage ../tools/typesetting/asciidoc {
+    inherit (python3.pkgs) matplotlib numpy aafigure recursivePthLoader;
+    enableStandardFeatures = false;
+  };
+
+  asciidoc-full = asciidoc.override {
+    inherit (python3.pkgs) pygments;
+    texlive = texlive.combine { inherit (texlive) scheme-minimal dvipng; };
+    w3m = w3m-batch;
+    enableStandardFeatures = true;
+  };
+
+  asciidoc-full-with-plugins = asciidoc.override {
+    inherit (python3.pkgs) pygments;
+    texlive = texlive.combine { inherit (texlive) scheme-minimal dvipng; };
+    w3m = w3m-batch;
+    enableStandardFeatures = true;
+    enableExtraPlugins = true;
+  };
+
+  asciidoctor = callPackage ../tools/typesetting/asciidoctor { };
+
+  asciidoctor-with-extensions = callPackage ../tools/typesetting/asciidoctor-with-extensions { };
+
+  asciidoctorj = callPackage ../tools/typesetting/asciidoctorj { };
+
+  asunder = callPackage ../applications/audio/asunder { };
+
+  autossh = callPackage ../tools/networking/autossh { };
+
+  assh = callPackage ../tools/networking/assh { };
+
+  b2sum = callPackage ../tools/security/b2sum {
+    inherit (llvmPackages) openmp;
+  };
+
+  bacula = callPackage ../tools/backup/bacula {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit;
+  };
+
+  bacon = callPackage ../development/tools/bacon {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  bareos = callPackage ../tools/backup/bareos { };
+
+  bats = callPackage ../development/interpreters/bats { };
+
+  bbe = callPackage ../tools/misc/bbe { };
+
+  bdsync = callPackage ../tools/backup/bdsync { };
+
+  beamerpresenter = libsForQt5.callPackage ../applications/office/beamerpresenter { };
+
+  beanstalkd = callPackage ../servers/beanstalkd { };
+
+  bee = callPackage ../applications/networking/bee/bee.nix {
+    version = "release";
+  };
+
+  bee-unstable = bee.override {
+    version = "unstable";
+  };
+
+  bee-clef = callPackage ../applications/networking/bee/bee-clef.nix { };
+
+  beets = callPackage ../tools/audio/beets {
+    pythonPackages = python3Packages;
+  };
+
+  beetsExternalPlugins =
+    let
+      pluginArgs = {
+        # This is a stripped down beets for testing of the external plugins.
+        beets = (beets.override {
+          enableAlternatives = false;
+          enableCopyArtifacts = false;
+          enableExtraFiles = false;
+        }).overrideAttrs (lib.const {
+          doInstallCheck = false;
+        });
+        pythonPackages = python3Packages;
+      };
+    in lib.recurseIntoAttrs {
+      alternatives = callPackage ../tools/audio/beets/plugins/alternatives.nix pluginArgs;
+      copyartifacts = callPackage ../tools/audio/beets/plugins/copyartifacts.nix pluginArgs;
+      extrafiles = callPackage ../tools/audio/beets/plugins/extrafiles.nix pluginArgs;
+    };
+
+  bento4 = callPackage ../tools/video/bento4 { };
+
+  bepasty = callPackage ../tools/misc/bepasty { };
+
+  bettercap = callPackage ../tools/security/bettercap { };
+
+  bfg-repo-cleaner = callPackage ../applications/version-management/git-and-tools/bfg-repo-cleaner { };
+
+  bfs = callPackage ../tools/system/bfs { };
+
+  bgs = callPackage ../tools/X11/bgs { };
+
+  bibclean = callPackage ../tools/typesetting/bibclean { };
+
+  biber = callPackage ../tools/typesetting/biber { };
+
+  biblatex-check = callPackage ../tools/typesetting/biblatex-check { };
+
+  binlore = callPackage ../development/tools/analysis/binlore { };
+
+  birdfont = callPackage ../tools/misc/birdfont { };
+  xmlbird = callPackage ../tools/misc/birdfont/xmlbird.nix { stdenv = gccStdenv; };
+
+  blahtexml = callPackage ../tools/typesetting/tex/blahtexml { };
+
+  blueberry = callPackage ../tools/bluetooth/blueberry { };
+
+  blueman = callPackage ../tools/bluetooth/blueman { };
+
+  bmrsa = callPackage ../tools/security/bmrsa/11.nix { };
+
+  bogofilter = callPackage ../tools/misc/bogofilter { };
+
+  bomutils = callPackage ../tools/archivers/bomutils { };
+
+  boofuzz= callPackage ../tools/security/boofuzz { };
+
+  bsdbuild = callPackage ../development/tools/misc/bsdbuild { };
+
+  bsdiff = callPackage ../tools/compression/bsdiff { };
+
+  btar = callPackage ../tools/backup/btar { };
+
+  bud = callPackage ../tools/networking/bud { };
+
+  bump2version = python3Packages.callPackage ../applications/version-management/git-and-tools/bump2version { };
+
+  bumpver = callPackage ../applications/version-management/bumpver { };
+
+  bup = callPackage ../tools/backup/bup { };
+
+  bupstash = callPackage ../tools/backup/bupstash { };
+
+  burp = callPackage ../tools/backup/burp { };
+
+  buku = callPackage ../applications/misc/buku { };
+
+  bukut = callPackage ../applications/misc/bukut { };
+
+  byzanz = callPackage ../applications/video/byzanz {};
+
+  ori = callPackage ../tools/backup/ori { };
+
+  anydesk = callPackage ../applications/networking/remote/anydesk { };
+
+  anystyle-cli = callPackage ../tools/misc/anystyle-cli { };
+
+  atool = callPackage ../tools/archivers/atool { };
+
+  bash_unit = callPackage ../tools/misc/bash_unit { };
+
+  boltbrowser = callPackage ../tools/misc/boltbrowser { };
+
+  bsc = callPackage ../tools/compression/bsc {
+    inherit (llvmPackages) openmp;
+  };
+
+  bzip2 = callPackage ../tools/compression/bzip2 { };
+
+  bzip2_1_1 = callPackage ../tools/compression/bzip2/1_1.nix { };
+
+  cabextract = callPackage ../tools/archivers/cabextract { };
+
+  cadaver = callPackage ../tools/networking/cadaver { };
+
+  davix = callPackage ../tools/networking/davix { };
+
+  davix-copy = davix.override { enableThirdPartyCopy = true; };
+
+  cantata = libsForQt5.callPackage ../applications/audio/cantata { };
+
+  cantoolz = python3Packages.callPackage ../tools/networking/cantoolz { };
+
+  can-utils = callPackage ../os-specific/linux/can-utils { };
+
+  caudec = callPackage ../applications/audio/caudec { };
+
+  ccd2iso = callPackage ../tools/cd-dvd/ccd2iso { };
+
+  ccid = callPackage ../tools/security/ccid { };
+
+  ccrypt = callPackage ../tools/security/ccrypt { };
+
+  ccze = callPackage ../tools/misc/ccze { };
+
+  cdecl = callPackage ../development/tools/cdecl { };
+
+  cdi2iso = callPackage ../tools/cd-dvd/cdi2iso { };
+
+  cdimgtools = callPackage ../tools/cd-dvd/cdimgtools { };
+
+  cdpr = callPackage ../tools/networking/cdpr { };
+
+  cdrdao = callPackage ../tools/cd-dvd/cdrdao { };
+
+  cdrkit = callPackage ../tools/cd-dvd/cdrkit { };
+
+  cdrtools = callPackage ../tools/cd-dvd/cdrtools {
+    inherit (darwin.apple_sdk.frameworks) Carbon IOKit;
+  };
+
+  cemu = qt5.callPackage ../applications/science/math/cemu {
+    stdenv = gcc9Stdenv;
+  };
+
+  isolyzer = callPackage ../tools/cd-dvd/isolyzer { };
+
+  isomd5sum = callPackage ../tools/cd-dvd/isomd5sum { };
+
+  mdf2iso = callPackage ../tools/cd-dvd/mdf2iso { };
+
+  nrg2iso = callPackage ../tools/cd-dvd/nrg2iso { };
+
+  ceph-csi = callPackage ../tools/filesystems/ceph-csi { };
+
+  libceph = ceph.lib;
+  inherit (callPackages ../tools/filesystems/ceph {
+    boost = boost175.override { enablePython = true; python = python3; };
+    lua = lua5_4;
+  })
+    ceph
+    ceph-client;
+  ceph-dev = ceph;
+
+  inherit (callPackages ../tools/security/certmgr { })
+    certmgr certmgr-selfsigned;
+
+  cfdg = callPackage ../tools/graphics/cfdg { };
+
+  cglm = callPackage ../development/libraries/cglm { };
+
+  cgreen = callPackage ../development/libraries/cgreen { };
+
+  checkinstall = callPackage ../tools/package-management/checkinstall { };
+
+  checkmake = callPackage ../development/tools/checkmake { };
+
+  chit = callPackage ../development/tools/chit { };
+
+  chkrootkit = callPackage ../tools/security/chkrootkit { };
+
+  chrony = callPackage ../tools/networking/chrony { };
+
+  chunkfs = callPackage ../tools/filesystems/chunkfs { };
+
+  chunksync = callPackage ../tools/backup/chunksync { };
+
+  cicero-tui = callPackage ../tools/misc/cicero-tui { };
+
+  cilium-cli = callPackage ../applications/networking/cluster/cilium { };
+
+  cipherscan = callPackage ../tools/security/cipherscan {
+    openssl = if stdenv.hostPlatform.system == "x86_64-linux"
+      then openssl-chacha
+      else openssl;
+  };
+
+  cjdns = callPackage ../tools/networking/cjdns { };
+  cjdns-tools = callPackage ../tools/admin/cjdns-tools { };
+
+  cjson = callPackage ../development/libraries/cjson { };
+
+  cksfv = callPackage ../tools/networking/cksfv { };
+
+  clementine = libsForQt514.callPackage ../applications/audio/clementine {
+    gst_plugins =
+      with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-ugly gst-libav ];
+    protobuf = protobuf3_14;
+  };
+
+  clementineUnfree = clementine.unfree;
+
+  mellowplayer = libsForQt5.callPackage ../applications/audio/mellowplayer { };
+
+  ciopfs = callPackage ../tools/filesystems/ciopfs { };
+
+  circleci-cli = callPackage ../development/tools/misc/circleci-cli { };
+
+  circus = callPackage ../tools/networking/circus { };
+
+  citrix_workspace = citrix_workspace_21_12_0;
+
+  inherit (callPackage ../applications/networking/remote/citrix-workspace { })
+    citrix_workspace_20_04_0
+    citrix_workspace_20_06_0
+    citrix_workspace_20_09_0
+    citrix_workspace_20_10_0
+    citrix_workspace_20_12_0
+    citrix_workspace_21_01_0
+    citrix_workspace_21_03_0
+    citrix_workspace_21_06_0
+    citrix_workspace_21_08_0
+    citrix_workspace_21_09_0
+    citrix_workspace_21_12_0
+  ;
+
+  citra = libsForQt5.callPackage ../applications/emulators/citra { };
+
+  cmigemo = callPackage ../tools/text/cmigemo { };
+
+  cmst = libsForQt5.callPackage ../tools/networking/cmst { };
+
+  cmt = callPackage ../applications/audio/cmt {};
+
+  crlfuzz = callPackage ../tools/security/crlfuzz {};
+
+  hedgedoc = callPackage ../servers/web-apps/hedgedoc { };
+
+  colord = callPackage ../tools/misc/colord { };
+
+  colord-gtk = callPackage ../tools/misc/colord-gtk { };
+
+  colord-gtk4 = colord-gtk.override { withGtk4 = true; };
+
+  colordiff = callPackage ../tools/text/colordiff { };
+
+  connect = callPackage ../tools/networking/connect { };
+
+  conspy = callPackage ../os-specific/linux/conspy {};
+
+  inherit (callPackage ../tools/networking/connman {})
+    connman
+    connmanFull
+    connmanMinimal
+  ;
+
+  connman-gtk = callPackage ../tools/networking/connman/connman-gtk { };
+
+  connman-ncurses = callPackage ../tools/networking/connman/connman-ncurses { };
+
+  connman-notify = callPackage ../tools/networking/connman/connman-notify { };
+
+  connman_dmenu = callPackage ../tools/networking/connman/connman_dmenu  { };
+
+  convertlit = callPackage ../tools/text/convertlit { };
+
+  collectd = callPackage ../tools/system/collectd {
+    libsigrok = libsigrok_0_3; # not compatible with >= 0.4.0 yet
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  collectd-data = callPackage ../tools/system/collectd/data.nix { };
+
+  colormake = callPackage ../development/tools/build-managers/colormake { };
+
+  cpuminer = callPackage ../tools/misc/cpuminer { };
+
+  crabz = callPackage ../tools/compression/crabz {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  cryptpad = callPackage ../servers/web-apps/cryptpad {
+    nodejs = nodejs-12_x;
+  };
+
+  ethash = callPackage ../development/libraries/ethash { };
+
+  ethminer = callPackage ../tools/misc/ethminer { cudaSupport = config.cudaSupport or true; };
+  ethminer-cuda = ethminer.override { cudaSupport = true; };
+  ethminer-free = ethminer.override { cudaSupport = false; };
+
+  cuetools = callPackage ../tools/cd-dvd/cuetools { };
+
+  u3-tool = callPackage ../tools/filesystems/u3-tool { };
+
+  unifdef = callPackage ../development/tools/misc/unifdef { };
+
+  uniffi-bindgen = callPackage ../development/tools/uniffi-bindgen { };
+
+  unify = with python3Packages; toPythonApplication unify;
+
+  unionfs-fuse = callPackage ../tools/filesystems/unionfs-fuse { };
+
+  unparam = callPackage ../tools/misc/unparam { };
+
+  inherit (nodePackages) uppy-companion;
+
+  usb-modeswitch = callPackage ../development/tools/misc/usb-modeswitch { };
+  usb-modeswitch-data = callPackage ../development/tools/misc/usb-modeswitch/data.nix { };
+
+  usbsdmux = callPackage ../development/tools/misc/usbsdmux { };
+
+  usbview = callPackage ../tools/misc/usbview { };
+
+  uwuify = callPackage ../tools/misc/uwuify { };
+
+  anthy = callPackage ../tools/inputmethods/anthy { };
+
+  evdevremapkeys = callPackage ../tools/inputmethods/evdevremapkeys { };
+
+  evscript = callPackage ../tools/inputmethods/evscript { };
+
+  gebaar-libinput = callPackage ../tools/inputmethods/gebaar-libinput { };
+
+  kime = callPackage ../tools/inputmethods/kime { };
+
+  libpinyin = callPackage ../development/libraries/libpinyin { };
+
+  inherit (import ../development/libraries/libsbsms pkgs)
+    libsbsms
+    libsbsms_2_0_2
+    libsbsms_2_3_0
+  ;
+
+  libskk = callPackage ../development/libraries/libskk {
+    inherit (gnome) gnome-common;
+  };
+
+  m17n_db = callPackage ../tools/inputmethods/m17n-db { };
+
+  m17n_lib = callPackage ../tools/inputmethods/m17n-lib { };
+
+  libotf = callPackage ../tools/inputmethods/m17n-lib/otf.nix {
+    inherit (xorg) libXaw;
+  };
+
+  netevent = callPackage ../tools/inputmethods/netevent { };
+
+  netplan = callPackage ../tools/admin/netplan { };
+
+  skktools = callPackage ../tools/inputmethods/skk/skktools { };
+  skk-dicts = callPackage ../tools/inputmethods/skk/skk-dicts { };
+
+  libkkc-data = callPackage ../data/misc/libkkc-data { };
+
+  libkkc = callPackage ../tools/inputmethods/libkkc { };
+
+  ibus = callPackage ../tools/inputmethods/ibus { };
+
+  ibus-qt = callPackage ../tools/inputmethods/ibus/ibus-qt.nix { };
+
+  ibus-engines = recurseIntoAttrs {
+    anthy = callPackage ../tools/inputmethods/ibus-engines/ibus-anthy { };
+
+    bamboo = callPackage ../tools/inputmethods/ibus-engines/ibus-bamboo { };
+
+    hangul = callPackage ../tools/inputmethods/ibus-engines/ibus-hangul { };
+
+    kkc = callPackage ../tools/inputmethods/ibus-engines/ibus-kkc { };
+
+    libpinyin = callPackage ../tools/inputmethods/ibus-engines/ibus-libpinyin { };
+
+    libthai = callPackage ../tools/inputmethods/ibus-engines/ibus-libthai { };
+
+    m17n = callPackage ../tools/inputmethods/ibus-engines/ibus-m17n { };
+
+    mozc = callPackage ../tools/inputmethods/ibus-engines/ibus-mozc {
+      stdenv = clangStdenv;
+      protobuf = pkgs.protobuf3_8.overrideDerivation (_: { stdenv = clangStdenv; });
+    };
+
+    rime = callPackage ../tools/inputmethods/ibus-engines/ibus-rime { };
+
+    table = callPackage ../tools/inputmethods/ibus-engines/ibus-table { };
+
+    table-chinese = callPackage ../tools/inputmethods/ibus-engines/ibus-table-chinese {
+      ibus-table = ibus-engines.table;
+    };
+
+    table-others = callPackage ../tools/inputmethods/ibus-engines/ibus-table-others {
+      ibus-table = ibus-engines.table;
+    };
+
+    uniemoji = callPackage ../tools/inputmethods/ibus-engines/ibus-uniemoji { };
+
+    typing-booster-unwrapped = callPackage ../tools/inputmethods/ibus-engines/ibus-typing-booster { };
+
+    typing-booster = callPackage ../tools/inputmethods/ibus-engines/ibus-typing-booster/wrapper.nix {
+      typing-booster = ibus-engines.typing-booster-unwrapped;
+    };
+  };
+
+  ibus-with-plugins = callPackage ../tools/inputmethods/ibus/wrapper.nix { };
+
+  ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { };
+
+  interception-tools = callPackage ../tools/inputmethods/interception-tools { };
+  interception-tools-plugins = {
+    caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.nix { };
+    dual-function-keys = callPackage ../tools/inputmethods/interception-tools/dual-function-keys.nix { };
+  };
+
+  age = callPackage ../tools/security/age { };
+
+  agebox = callPackage ../tools/security/agebox { };
+
+  age-plugin-yubikey = callPackage ../tools/security/age-plugin-yubikey {
+    inherit (pkgs.darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  artim-dark = callPackage ../data/themes/artim-dark {};
+
+  bore = callPackage ../tools/networking/bore {
+    inherit (darwin) Libsystem;
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  brotli = callPackage ../tools/compression/brotli { };
+
+  biodiff = callPackage ../development/tools/biodiff { };
+
+  biosdevname = callPackage ../tools/networking/biosdevname { };
+
+  bluetooth_battery = python3Packages.callPackage ../applications/misc/bluetooth_battery { };
+
+  calyx-vpn = libsForQt5.callPackage ../tools/networking/bitmask-vpn {
+    provider = "calyx";
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  code-browser-qt = libsForQt5.callPackage ../applications/editors/code-browser { withQt = true; };
+  code-browser-gtk2 = callPackage ../applications/editors/code-browser { withGtk2 = true; };
+  code-browser-gtk = callPackage ../applications/editors/code-browser { withGtk3 = true; };
+
+  c14 = callPackage ../applications/networking/c14 { };
+
+  certstrap = callPackage ../tools/security/certstrap { };
+
+  cfssl = callPackage ../tools/security/cfssl { };
+
+  chafa = callPackage ../tools/misc/chafa {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  changetower = callPackage ../tools/networking/changetower { };
+
+  checkbashisms = callPackage ../development/tools/misc/checkbashisms { };
+
+  checkmate = callPackage ../development/tools/checkmate { };
+
+  circup = callPackage ../development/tools/circup { };
+
+  civetweb = callPackage ../development/libraries/civetweb { };
+
+  ckb-next = libsForQt5.callPackage ../tools/misc/ckb-next { };
+
+  clamav = callPackage ../tools/security/clamav {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  clex = callPackage ../tools/misc/clex { };
+
+  client-ip-echo = callPackage ../servers/misc/client-ip-echo { };
+
+  cloc = callPackage ../tools/misc/cloc { };
+
+  cloog = callPackage ../development/libraries/cloog {
+    isl = isl_0_14;
+  };
+
+  cloog_0_18_0 = callPackage ../development/libraries/cloog/0.18.0.nix {
+    isl = isl_0_11;
+  };
+
+  cloogppl = callPackage ../development/libraries/cloog-ppl { };
+
+  cloud-utils = callPackage ../tools/misc/cloud-utils { };
+
+  cloudlist = callPackage ../tools/security/cloudlist { };
+
+  cobalt = callPackage ../applications/misc/cobalt {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  cobang = python3Packages.callPackage ../applications/misc/cobang {
+    gst-plugins-good = gst_all_1.gst-plugins-good.override { gtkSupport = true; };
+  };
+
+  cocoapods = callPackage ../development/mobile/cocoapods { };
+
+  cocoapods-beta = lowPrio (callPackage ../development/mobile/cocoapods { beta = true; });
+
+  cocom = callPackage ../tools/networking/cocom {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  codebraid = callPackage ../tools/misc/codebraid { };
+
+  compass = callPackage ../development/tools/compass { };
+
+  cone = callPackage ../development/compilers/cone {
+    llvmPackages = llvmPackages_7;
+  };
+
+  conda = callPackage ../tools/package-management/conda { };
+
+  console-bridge = callPackage ../development/libraries/console-bridge { };
+
+  convbin = callPackage ../tools/misc/convbin { };
+
+  convimg = callPackage ../tools/misc/convimg { };
+
+  convfont = callPackage ../tools/misc/convfont { };
+
+  convmv = callPackage ../tools/misc/convmv { };
+
+  convoy = callPackage ../tools/filesystems/convoy { };
+
+  cpcfs = callPackage ../tools/filesystems/cpcfs { };
+
+  coreutils =  callPackage ../tools/misc/coreutils { };
+  coreutils-full = coreutils.override { minimal = false; };
+  coreutils-prefixed = coreutils.override { withPrefix = true; singleBinary = false; };
+
+  corkscrew = callPackage ../tools/networking/corkscrew { };
+
+  cowpatty = callPackage ../tools/security/cowpatty { };
+
+  cpio = callPackage ../tools/archivers/cpio { };
+
+  cpufetch = callPackage ../tools/misc/cpufetch { };
+
+  crackxls = callPackage ../tools/security/crackxls { };
+
+  crd2pulumi = callPackage ../development/tools/crd2pulumi { };
+
+  create-cycle-app = nodePackages.create-cycle-app;
+
+  createrepo_c = callPackage ../tools/package-management/createrepo_c { };
+
+  cromfs = callPackage ../tools/archivers/cromfs { };
+
+  cron = callPackage ../tools/system/cron { };
+
+  snooze = callPackage ../tools/system/snooze { };
+
+  cudaPackages = recurseIntoAttrs (callPackage ../development/compilers/cudatoolkit {});
+  inherit (cudaPackages)
+    cudatoolkit_10
+    cudatoolkit_10_0
+    cudatoolkit_10_1
+    cudatoolkit_10_2
+    cudatoolkit_11
+    cudatoolkit_11_0
+    cudatoolkit_11_1
+    cudatoolkit_11_2
+    cudatoolkit_11_3
+    cudatoolkit_11_4
+    cudatoolkit_11_5
+    cudatoolkit_11_6;
+
+  cudatoolkit = cudatoolkit_10;
+
+  cudnnPackages = callPackages ../development/libraries/science/math/cudnn { };
+  inherit (cudnnPackages)
+    cudnn_7_4_cudatoolkit_10_0
+    cudnn_7_6_cudatoolkit_10_2
+    cudnn_7_6_cudatoolkit_10
+    cudnn_8_1_cudatoolkit_11_0
+    cudnn_8_1_cudatoolkit_11_1
+    cudnn_8_1_cudatoolkit_11_2
+    cudnn_8_1_cudatoolkit_11
+    cudnn_8_3_cudatoolkit_11_0
+    cudnn_8_3_cudatoolkit_11_1
+    cudnn_8_3_cudatoolkit_11_2
+    cudnn_8_3_cudatoolkit_11_3
+    cudnn_8_3_cudatoolkit_11_4
+    cudnn_8_3_cudatoolkit_11_5
+    cudnn_8_3_cudatoolkit_11;
+
+  cudnn = cudnn_7_6_cudatoolkit_10;
+
+  cutensorPackages = callPackages ../development/libraries/science/math/cutensor { };
+  inherit (cutensorPackages)
+    cutensor_cudatoolkit_10
+    cutensor_cudatoolkit_10_1
+    cutensor_cudatoolkit_10_2
+    cutensor_cudatoolkit_11
+    cutensor_cudatoolkit_11_0
+    cutensor_cudatoolkit_11_1
+    cutensor_cudatoolkit_11_2
+    cutensor_cudatoolkit_11_3
+    cutensor_cudatoolkit_11_4;
+
+  cutensor = cutensor_cudatoolkit_10;
+
+  curie = callPackage ../data/fonts/curie { };
+
+  curlFull = curl.override {
+    ldapSupport = true;
+    gsaslSupport = true;
+    rtmpSupport = true;
+    pslSupport = true;
+  };
+
+  curlHTTP3 = curl.override {
+    openssl = quictls;
+    http3Support = true;
+  };
+
+  curl = curlMinimal.override ({
+    idnSupport = true;
+    zstdSupport = true;
+  } // lib.optionalAttrs (!stdenv.hostPlatform.isStatic) {
+    gssSupport = true;
+    brotliSupport = true;
+  });
+
+  curlMinimal = callPackage ../tools/networking/curl { };
+
+  curl_unix_socket = callPackage ../tools/networking/curl-unix-socket { };
+
+  curlie = callPackage ../tools/networking/curlie { };
+
+  cunit = callPackage ../tools/misc/cunit { };
+  bcunit = callPackage ../tools/misc/bcunit { };
+
+  curlftpfs = callPackage ../tools/filesystems/curlftpfs { };
+
+  tcp-cutter = callPackage ../tools/networking/tcp-cutter { };
+
+  cwebbin = callPackage ../development/tools/misc/cwebbin { };
+
+  cve-bin-tool = python3Packages.callPackage ../tools/security/cve-bin-tool { };
+
+  cvs-fast-export = callPackage ../applications/version-management/cvs-fast-export { };
+
+  dadadodo = callPackage ../tools/text/dadadodo { };
+
+  daemon = callPackage ../tools/system/daemon { };
+
+  daemonize = callPackage ../tools/system/daemonize { };
+
+  danger-gitlab = callPackage ../applications/version-management/danger-gitlab { };
+
+  daq = callPackage ../applications/networking/ids/daq { };
+
+  dar = callPackage ../tools/backup/dar { };
+
+  darkhttpd = callPackage ../servers/http/darkhttpd { };
+
+  darkstat = callPackage ../tools/networking/darkstat { };
+
+  dav1d = callPackage ../development/libraries/dav1d { };
+
+  davfs2 = callPackage ../tools/filesystems/davfs2 { };
+
+  dbeaver = callPackage ../applications/misc/dbeaver {
+    jdk = jdk11; # AlgorithmId.md5WithRSAEncryption_oid was removed in jdk15
+
+    # TODO: remove once maven uses JDK 11
+    # error: org/eclipse/tycho/core/p2/P2ArtifactRepositoryLayout has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
+    maven = maven.override {
+      jdk = jdk11;
+    };
+  };
+
+  dbench = callPackage ../development/tools/misc/dbench { };
+
+  dclxvi = callPackage ../development/libraries/dclxvi { };
+
+  dconf2nix = callPackage ../development/tools/haskell/dconf2nix { };
+
+  dcraw = callPackage ../tools/graphics/dcraw { };
+
+  dcs = callPackage ../tools/text/dcs { };
+
+  dcfldd = callPackage ../tools/system/dcfldd { };
+
+  debianutils = callPackage ../tools/misc/debianutils { };
+
+  debian-devscripts = callPackage ../tools/misc/debian-devscripts { };
+
+  debootstrap = callPackage ../tools/misc/debootstrap { };
+
+  debugedit = callPackage ../development/tools/misc/debugedit { };
+
+  deer = callPackage ../shells/zsh/zsh-deer { };
+
+  delta = callPackage ../applications/version-management/git-and-tools/delta {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation Security;
+  };
+
+  deno = callPackage ../development/web/deno {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks)
+      Security CoreServices Metal Foundation QuartzCore;
+  };
+
+  detox = callPackage ../tools/misc/detox { };
+
+  devilspie2 = callPackage ../applications/misc/devilspie2 {
+    gtk = gtk3;
+  };
+
+  dex = callPackage ../tools/X11/dex { };
+
+  ddccontrol = callPackage ../tools/misc/ddccontrol { };
+
+  ddccontrol-db = callPackage ../data/misc/ddccontrol-db { };
+
+  ddcui = libsForQt5.callPackage ../applications/misc/ddcui { };
+
+  ddcutil = callPackage ../tools/misc/ddcutil { };
+
+  ddclient = callPackage ../tools/networking/ddclient { };
+
+  dd_rescue = callPackage ../tools/system/dd_rescue { };
+
+  ddrescue = callPackage ../tools/system/ddrescue { };
+
+  ddrescueview = callPackage ../tools/system/ddrescueview { };
+
+  ddrutility = callPackage ../tools/system/ddrutility { };
+
+  deluge-2_x = callPackage ../applications/networking/p2p/deluge {
+    pythonPackages = python3Packages;
+    libtorrent-rasterbar = libtorrent-rasterbar-1_2_x.override { python = python3; };
+  };
+  deluge = deluge-2_x;
+
+  desktop-file-utils = callPackage ../tools/misc/desktop-file-utils { };
+
+  dfc  = callPackage ../tools/system/dfc { };
+
+  dev86 = callPackage ../development/compilers/dev86 { };
+
+  diskrsync = callPackage ../tools/backup/diskrsync { };
+
+  djbdns = callPackage ../tools/networking/djbdns { };
+
+  dnscrypt-proxy2 = callPackage ../tools/networking/dnscrypt-proxy2 { };
+
+  dnscrypt-wrapper = callPackage ../tools/networking/dnscrypt-wrapper { };
+
+  dnscontrol = callPackage ../applications/networking/dnscontrol { };
+
+  dnsenum = callPackage ../tools/security/dnsenum { };
+
+  dnsmasq = callPackage ../tools/networking/dnsmasq { };
+
+  dnspeep = callPackage ../tools/security/dnspeep { };
+
+  dnsproxy = callPackage ../tools/networking/dnsproxy { };
+
+  dnsperf = callPackage ../tools/networking/dnsperf { };
+
+  dnsrecon = callPackage ../tools/security/dnsrecon { };
+
+  dnstop = callPackage ../tools/networking/dnstop { };
+
+  dnsviz = python3Packages.callPackage ../tools/networking/dnsviz { };
+
+  dnsx = callPackage ../tools/security/dnsx { };
+
+  dhcp = callPackage ../tools/networking/dhcp { };
+
+  dhcpdump = callPackage ../tools/networking/dhcpdump { };
+
+  dhcpcd = callPackage ../tools/networking/dhcpcd { };
+
+  dhcping = callPackage ../tools/networking/dhcping { };
+
+  di = callPackage ../tools/system/di { };
+
+  diction = callPackage ../tools/text/diction { };
+
+  diff-so-fancy = callPackage ../applications/version-management/git-and-tools/diff-so-fancy { };
+
+  diffoscopeMinimal = callPackage ../tools/misc/diffoscope {
+    jdk = jdk8;
+  };
+
+  diffoscope = diffoscopeMinimal.override {
+    enableBloat = !stdenv.isDarwin;
+  };
+
+  diffr = callPackage ../tools/text/diffr {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  diffstat = callPackage ../tools/text/diffstat { };
+
+  difftastic = callPackage ../tools/text/difftastic { };
+
+  diffutils = callPackage ../tools/text/diffutils { };
+
+  dir2opus = callPackage ../tools/audio/dir2opus {
+    inherit (python2Packages) mutagen python wrapPython;
+  };
+
+  dirdiff = callPackage ../tools/text/dirdiff {
+    tcl = tcl-8_5;
+    tk = tk-8_5;
+  };
+
+  picoscope = callPackage ../applications/science/electronics/picoscope { };
+
+  picotts = callPackage ../tools/audio/picotts { };
+
+  wgetpaste = callPackage ../tools/text/wgetpaste { };
+
+  dirmngr = callPackage ../tools/security/dirmngr { };
+
+  dismap = callPackage ../tools/security/dismap { };
+
+  dirvish  = callPackage ../tools/backup/dirvish { };
+
+  disper = callPackage ../tools/misc/disper { };
+
+  dleyna-connector-dbus = callPackage ../development/libraries/dleyna-connector-dbus { };
+
+  dleyna-core = callPackage ../development/libraries/dleyna-core { };
+
+  dleyna-renderer = callPackage ../development/libraries/dleyna-renderer { };
+
+  dleyna-server = callPackage ../development/libraries/dleyna-server { };
+
+  dmd = callPackage ../development/compilers/dmd {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  dmg2img = callPackage ../tools/misc/dmg2img { };
+
+  docbook2odf = callPackage ../tools/typesetting/docbook2odf { };
+
+  doas = callPackage ../tools/security/doas { };
+
+  docbook2x = callPackage ../tools/typesetting/docbook2x { };
+
+  docbook2mdoc = callPackage ../tools/misc/docbook2mdoc { };
+
+  docear = callPackage ../applications/office/docear { };
+
+  dockbarx = callPackage ../applications/misc/dockbarx { };
+
+  dog = callPackage ../tools/system/dog { };
+
+  dogdns = callPackage ../tools/networking/dogdns {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  dosfstools = callPackage ../tools/filesystems/dosfstools { };
+
+  dotnetfx35 = callPackage ../development/libraries/dotnetfx35 { };
+
+  dotnetfx40 = callPackage ../development/libraries/dotnetfx40 { };
+
+  dolphin-emu = callPackage ../applications/emulators/dolphin-emu { };
+  dolphin-emu-beta = qt5.callPackage ../applications/emulators/dolphin-emu/master.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreBluetooth ForceFeedback IOKit OpenGL;
+  };
+  dolphin-emu-primehack = qt5.callPackage ../applications/emulators/dolphin-emu/primehack.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreBluetooth ForceFeedback IOKit OpenGL;
+  };
+
+  domoticz = callPackage ../servers/domoticz { };
+
+  doomseeker = qt5.callPackage ../applications/misc/doomseeker { };
+
+  dorkscout = callPackage ../tools/security/dorkscout { };
+
+  downonspot = callPackage ../applications/misc/downonspot { };
+
+  sl1-to-photon = python3Packages.callPackage ../applications/misc/sl1-to-photon { };
+
+  slade = callPackage ../applications/misc/slade {
+    wxGTK = wxGTK30;
+  };
+
+  sladeUnstable = callPackage ../applications/misc/slade/git.nix {
+    wxGTK = wxGTK30;
+  };
+
+  drive = callPackage ../applications/networking/drive { };
+
+  driftnet = callPackage ../tools/networking/driftnet {};
+
+  driftctl = callPackage ../applications/networking/cluster/driftctl { };
+
+  drill = callPackage ../tools/networking/drill {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  drone = callPackage ../development/tools/continuous-integration/drone { };
+  drone-oss = callPackage ../development/tools/continuous-integration/drone {
+    enableUnfree = false;
+  };
+
+  drone-cli = callPackage ../development/tools/continuous-integration/drone-cli { };
+
+  drone-runner-exec = callPackage ../development/tools/continuous-integration/drone-runner-exec { };
+
+  drone-runner-docker = callPackage ../development/tools/continuous-integration/drone-runner-docker { };
+
+  dropbear = callPackage ../tools/networking/dropbear { };
+
+  dsview = libsForQt5.callPackage ../applications/science/electronics/dsview { };
+
+  dtach = callPackage ../tools/misc/dtach { };
+
+  dtc = callPackage ../development/compilers/dtc { };
+
+  dt-schema = python3Packages.callPackage ../development/tools/dt-schema { };
+
+  dub = callPackage ../development/tools/build-managers/dub { };
+
+  duc = callPackage ../tools/misc/duc { };
+
+  duff = callPackage ../tools/filesystems/duff {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  dumptorrent = callPackage ../tools/misc/dumptorrent { };
+
+  duo-unix = callPackage ../tools/security/duo-unix { };
+
+  duplicacy = callPackage ../tools/backup/duplicacy { };
+
+  duplicati = callPackage ../tools/backup/duplicati { };
+
+  duplicity = callPackage ../tools/backup/duplicity { };
+
+  duply = callPackage ../tools/backup/duply { };
+
+  dvd-vr = callPackage ../tools/cd-dvd/dvd-vr { };
+
+  dvdisaster = callPackage ../tools/cd-dvd/dvdisaster { };
+
+  dvdplusrwtools = callPackage ../tools/cd-dvd/dvd+rw-tools { };
+
+  dvgrab = callPackage ../tools/video/dvgrab { };
+
+  dvtm = callPackage ../tools/misc/dvtm {
+    # if you prefer a custom config, write the config.h in dvtm.config.h
+    # and enable
+    # customConfig = builtins.readFile ./dvtm.config.h;
+  };
+
+  dvtm-unstable = callPackage ../tools/misc/dvtm/unstable.nix {};
+
+  ecmtools = callPackage ../tools/cd-dvd/ecm-tools { };
+
+  e2tools = callPackage ../tools/filesystems/e2tools { };
+
+  e2fsprogs = callPackage ../tools/filesystems/e2fsprogs { };
+
+  easyrsa = callPackage ../tools/networking/easyrsa { };
+
+  easyrsa2 = callPackage ../tools/networking/easyrsa/2.x.nix { };
+
+  easysnap = callPackage ../tools/backup/easysnap { };
+
+  ebook_tools = callPackage ../tools/text/ebook-tools { };
+
+  ecryptfs = callPackage ../tools/security/ecryptfs { };
+
+  ecryptfs-helper = callPackage ../tools/security/ecryptfs/helper.nix { };
+
+  edgetpu-compiler = callPackage ../development/libraries/science/robotics/edgetpu-compiler { };
+
+  edid-decode = callPackage ../tools/misc/edid-decode { };
+
+  edid-generator = callPackage ../tools/misc/edid-generator { };
+
+  edir = callPackage ../tools/misc/edir { };
+
+  editres = callPackage ../tools/graphics/editres { };
+
+  edit = callPackage ../applications/editors/edit { };
+
+  edk2 = callPackage ../development/compilers/edk2 { };
+
+  eff = callPackage ../development/interpreters/eff { };
+
+  eflite = callPackage ../applications/audio/eflite {};
+
+  eid-mw = callPackage ../tools/security/eid-mw {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  emote = callPackage ../tools/inputmethods/emote { };
+
+  engauge-digitizer = libsForQt5.callPackage ../applications/science/math/engauge-digitizer { };
+
+  epubcheck = callPackage ../tools/text/epubcheck { };
+
+  luckybackup = libsForQt5.callPackage ../tools/backup/luckybackup {
+    ssh = openssh;
+  };
+
+  kramdown-asciidoc = callPackage ../tools/typesetting/kramdown-asciidoc { };
+
+  lychee = callPackage ../tools/networking/lychee { };
+
+  magic-vlsi = callPackage ../applications/science/electronics/magic-vlsi { };
+
+  mcrcon = callPackage ../tools/networking/mcrcon {};
+
+  mozwire = callPackage ../tools/networking/mozwire {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  pax = callPackage ../tools/archivers/pax {
+    inherit (pkgs.darwin.apple_sdk.libs) utmp;
+  };
+
+  rage = callPackage ../tools/security/rage {
+    inherit (darwin.apple_sdk.frameworks) Foundation Security;
+  };
+
+  rar2fs = callPackage ../tools/filesystems/rar2fs { };
+
+  s9fes = callPackage ../development/interpreters/s9fes { };
+
+  s-tar = callPackage ../tools/archivers/s-tar {};
+
+  solo2-cli = callPackage ../tools/security/solo2-cli {
+    inherit (darwin.apple_sdk.frameworks) PCSC IOKit CoreFoundation AppKit;
+  };
+
+  sonota = callPackage ../tools/misc/sonota { };
+
+  sonobuoy = callPackage ../applications/networking/cluster/sonobuoy { };
+
+  soupault = callPackage ../tools/typesetting/soupault { };
+
+  strawberry = libsForQt5.callPackage ../applications/audio/strawberry { };
+
+  schildichat-desktop = callPackage ../applications/networking/instant-messengers/schildichat/schildichat-desktop.nix {
+    inherit (darwin.apple_sdk.frameworks) Security AppKit CoreServices;
+    electron = electron_15;
+  };
+  schildichat-desktop-wayland = writeScriptBin "schildichat-desktop" ''
+    #!/bin/sh
+    NIXOS_OZONE_WL=1 exec ${schildichat-desktop}/bin/schildichat-desktop "$@"
+  '';
+
+  schildichat-web = callPackage ../applications/networking/instant-messengers/schildichat/schildichat-web.nix {
+    conf = config.schildichat-web.conf or {};
+  };
+
+  tealdeer = callPackage ../tools/misc/tealdeer {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  teamocil = callPackage ../tools/misc/teamocil { };
+
+  the-way = callPackage ../development/tools/the-way {
+    inherit (darwin.apple_sdk.frameworks) AppKit Security;
+  };
+
+  timeline = callPackage ../applications/office/timeline { };
+
+  tsm-client = callPackage ../tools/backup/tsm-client { };
+  tsm-client-withGui = callPackage ../tools/backup/tsm-client { enableGui = true; };
+
+  tracker = callPackage ../development/libraries/tracker { };
+
+  tracker-miners = callPackage ../development/libraries/tracker-miners { };
+
+  tracy = callPackage ../development/tools/tracy {
+    inherit (darwin.apple_sdk.frameworks) Carbon AppKit;
+  };
+
+  tridactyl-native = callPackage ../tools/networking/tridactyl-native { };
+
+  trivy = callPackage ../tools/admin/trivy { };
+
+  trompeloeil = callPackage ../development/libraries/trompeloeil { };
+
+  updog = callPackage ../tools/networking/updog { };
+
+  uudeview = callPackage ../tools/misc/uudeview { };
+
+  uusi = haskell.lib.compose.justStaticExecutables haskellPackages.uusi;
+
+  uutils-coreutils = callPackage ../tools/misc/uutils-coreutils {
+    inherit (python3Packages) sphinx;
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  volctl = callPackage ../tools/audio/volctl { };
+
+  volk = callPackage ../development/libraries/volk { };
+
+  vorta = libsForQt5.callPackage ../applications/backup/vorta { };
+
+  vowpal-wabbit = callPackage ../applications/science/machine-learning/vowpal-wabbit { };
+
+  utahfs = callPackage ../applications/networking/utahfs {
+    buildGoPackage = buildGo116Package;
+  };
+
+  wakeonlan = callPackage ../tools/networking/wakeonlan { };
+
+  wallutils = callPackage ../tools/graphics/wallutils { };
+
+  worker-build = callPackage ../development/tools/worker-build { };
+
+  wrangler = callPackage ../development/tools/wrangler {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Security;
+  };
+
+  snowflake = callPackage ../tools/networking/snowflake { };
+
+  wsl-open = callPackage ../tools/misc/wsl-open { };
+
+  xkcdpass = with python3Packages; toPythonApplication xkcdpass;
+
+  xjobs = callPackage ../tools/misc/xjobs { };
+
+  xob = callPackage ../tools/X11/xob { };
+
+  z-lua = callPackage ../tools/misc/z-lua { };
+
+  zabbix-cli = callPackage ../tools/misc/zabbix-cli { };
+
+  zabbixctl = callPackage ../tools/misc/zabbixctl { };
+
+  zeek = callPackage ../applications/networking/ids/zeek { };
+
+  zoekt = callPackage ../tools/text/zoekt { };
+
+  zoxide = callPackage ../tools/misc/zoxide { };
+
+  zzuf = callPackage ../tools/security/zzuf { };
+
+  ### DEVELOPMENT / EMSCRIPTEN
+
+  buildEmscriptenPackage = callPackage ../development/em-modules/generic { };
+
+  carp = callPackage ../development/compilers/carp { };
+
+  cholmod-extra = callPackage ../development/libraries/science/math/cholmod-extra { };
+
+  choose = callPackage ../tools/text/choose { };
+
+  emscripten = callPackage ../development/compilers/emscripten {
+    llvmPackages = llvmPackages_13;
+  };
+
+  emscriptenPackages = recurseIntoAttrs (callPackage ./emscripten-packages.nix { });
+
+  emscriptenStdenv = stdenv // { mkDerivation = buildEmscriptenPackage; };
+
+  efibootmgr = callPackage ../tools/system/efibootmgr { };
+
+  efivar = callPackage ../tools/system/efivar { };
+
+  evemu = callPackage ../tools/system/evemu { };
+
+  # The latest version used by elasticsearch, logstash, kibana and the the beats from elastic.
+  # When updating make sure to update all plugins or they will break!
+  elk6Version = "6.8.21";
+  elk7Version = "7.16.1";
+
+  elasticsearch6 = callPackage ../servers/search/elasticsearch/6.x.nix {
+    util-linux = util-linuxMinimal;
+    jre_headless = jre8_headless; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  elasticsearch6-oss = callPackage ../servers/search/elasticsearch/6.x.nix {
+    enableUnfree = false;
+    util-linux = util-linuxMinimal;
+    jre_headless = jre8_headless; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  elasticsearch7 = callPackage ../servers/search/elasticsearch/7.x.nix {
+    util-linux = util-linuxMinimal;
+    jre_headless = jdk11_headless; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  elasticsearch = elasticsearch6;
+  elasticsearch-oss = elasticsearch6-oss;
+
+  elasticsearchPlugins = recurseIntoAttrs (
+    callPackage ../servers/search/elasticsearch/plugins.nix {
+      elasticsearch = elasticsearch-oss;
+    }
+  );
+  elasticsearch6Plugins = elasticsearchPlugins.override {
+    elasticsearch = elasticsearch6-oss;
+  };
+  elasticsearch7Plugins = elasticsearchPlugins.override {
+    elasticsearch = elasticsearch7;
+  };
+
+  elasticsearch-curator = callPackage ../tools/admin/elasticsearch-curator {
+    python = python3;
+  };
+
+  embree = callPackage ../development/libraries/embree { };
+  embree2 = callPackage ../development/libraries/embree/2.x.nix { };
+
+  emem = callPackage ../applications/misc/emem { };
+
+  empty = callPackage ../tools/misc/empty { };
+
+  emulsion = callPackage ../applications/graphics/emulsion {
+    inherit (darwin.apple_sdk.frameworks) AppKit CoreGraphics CoreServices Foundation OpenGL;
+  };
+
+  emv = callPackage ../tools/misc/emv { };
+
+  enblend-enfuse = callPackage ../tools/graphics/enblend-enfuse {
+    boost = boost172;
+  };
+
+  endlessh = callPackage ../servers/endlessh { };
+
+  endlessh-go = callPackage ../servers/endlessh-go { };
+
+  ericw-tools = callPackage ../applications/misc/ericw-tools { };
+
+  cryfs = callPackage ../tools/filesystems/cryfs { };
+
+  encfs = callPackage ../tools/filesystems/encfs {
+    tinyxml2 = tinyxml-2;
+  };
+
+  enscript = callPackage ../tools/text/enscript { };
+
+  ensemble-chorus = callPackage ../applications/audio/ensemble-chorus { stdenv = gcc8Stdenv; };
+
+  entr = callPackage ../tools/misc/entr { };
+
+  envchain = callPackage ../tools/misc/envchain { inherit (darwin.apple_sdk.frameworks) Security; };
+
+  eot_utilities = callPackage ../tools/misc/eot-utilities { };
+
+  eplot = callPackage ../tools/graphics/eplot { };
+
+  epstool = callPackage ../tools/graphics/epstool { };
+
+  epsxe = callPackage ../applications/emulators/epsxe { };
+
+  escrotum = callPackage ../tools/graphics/escrotum { };
+
+  etcher = callPackage ../tools/misc/etcher {
+    electron = electron_12;
+  };
+
+  ethercalc = callPackage ../servers/web-apps/ethercalc { };
+
+  ethtool = callPackage ../tools/misc/ethtool { };
+
+  ettercap = callPackage ../applications/networking/sniffers/ettercap { };
+
+  eventstat = callPackage ../os-specific/linux/eventstat { };
+
+  evillimiter = python3Packages.callPackage ../tools/networking/evillimiter { };
+
+  evtest = callPackage ../applications/misc/evtest { };
+
+  evtest-qt = libsForQt5.callPackage ../applications/misc/evtest-qt { };
+
+  eva = callPackage ../tools/misc/eva { };
+
+  exa = callPackage ../tools/misc/exa {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  exempi = callPackage ../development/libraries/exempi {
+    stdenv = if stdenv.isi686 then gcc6Stdenv else stdenv;
+  };
+
+  execline = skawarePackages.execline;
+
+  executor = with python3Packages; toPythonApplication executor;
+
+  exif = callPackage ../tools/graphics/exif { };
+
+  exifprobe = callPackage ../tools/graphics/exifprobe { };
+
+  exiftags = callPackage ../tools/graphics/exiftags { };
+
+  exiftool = perlPackages.ImageExifTool;
+
+  ext4magic = callPackage ../tools/filesystems/ext4magic { };
+
+  extract_url = callPackage ../applications/misc/extract_url { };
+
+  extundelete = callPackage ../tools/filesystems/extundelete { };
+
+  expect = callPackage ../tools/misc/expect { };
+
+  expliot = callPackage ../tools/security/expliot { };
+
+  f2fs-tools = callPackage ../tools/filesystems/f2fs-tools { };
+
+  Fabric = with python3Packages; toPythonApplication Fabric;
+
+  fail2ban = callPackage ../tools/security/fail2ban { };
+
+  fakeroot = callPackage ../tools/system/fakeroot { };
+
+  fakeroute = callPackage ../tools/networking/fakeroute { };
+
+  fakechroot = callPackage ../tools/system/fakechroot { };
+
+  fancy-motd = callPackage ../tools/system/fancy-motd { };
+
+  fastpbkdf2 = callPackage ../development/libraries/fastpbkdf2 { };
+
+  fanficfare = callPackage ../tools/text/fanficfare { };
+
+  fastd = callPackage ../tools/networking/fastd { };
+
+  fatsort = callPackage ../tools/filesystems/fatsort { };
+
+  fcitx = callPackage ../tools/inputmethods/fcitx {
+    plugins = [];
+  };
+
+  fcitx-engines = recurseIntoAttrs {
+
+    anthy = callPackage ../tools/inputmethods/fcitx-engines/fcitx-anthy { };
+
+    chewing = callPackage ../tools/inputmethods/fcitx-engines/fcitx-chewing { };
+
+    hangul = callPackage ../tools/inputmethods/fcitx-engines/fcitx-hangul { };
+
+    unikey = callPackage ../tools/inputmethods/fcitx-engines/fcitx-unikey { };
+
+    rime = callPackage ../tools/inputmethods/fcitx-engines/fcitx-rime { };
+
+    m17n = callPackage ../tools/inputmethods/fcitx-engines/fcitx-m17n { };
+
+    mozc = callPackage ../tools/inputmethods/fcitx-engines/fcitx-mozc {
+      python = python2;
+      inherit (python2Packages) gyp;
+      protobuf = pkgs.protobuf3_8.overrideDerivation (_: { stdenv = clangStdenv; });
+    };
+
+    table-extra = callPackage ../tools/inputmethods/fcitx-engines/fcitx-table-extra { };
+
+    table-other = callPackage ../tools/inputmethods/fcitx-engines/fcitx-table-other { };
+
+    cloudpinyin = callPackage ../tools/inputmethods/fcitx-engines/fcitx-cloudpinyin { };
+
+    libpinyin = libsForQt5.callPackage ../tools/inputmethods/fcitx-engines/fcitx-libpinyin { };
+
+    skk = callPackage ../tools/inputmethods/fcitx-engines/fcitx-skk { };
+  };
+
+  fcitx-configtool = callPackage ../tools/inputmethods/fcitx/fcitx-configtool.nix { };
+
+  chewing-editor = libsForQt5.callPackage ../applications/misc/chewing-editor { };
+
+  fcitx5 = libsForQt5.callPackage ../tools/inputmethods/fcitx5 { };
+
+  fcitx5-with-addons = libsForQt5.callPackage ../tools/inputmethods/fcitx5/with-addons.nix { };
+
+  fcitx5-chinese-addons = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix { };
+
+  fcitx5-mozc = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-mozc.nix {
+    abseil-cpp = abseil-cpp.override {
+      cxxStandard = "17";
+    };
+  };
+
+  fcitx5-unikey = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-unikey.nix { };
+
+  fcitx5-configtool = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-configtool.nix { };
+
+  fcitx5-chewing = callPackage ../tools/inputmethods/fcitx5/fcitx5-chewing.nix { };
+
+  fcitx5-lua = callPackage ../tools/inputmethods/fcitx5/fcitx5-lua.nix { };
+
+  fcitx5-m17n = callPackage ../tools/inputmethods/fcitx5/fcitx5-m17n.nix { };
+
+  fcitx5-gtk = callPackage ../tools/inputmethods/fcitx5/fcitx5-gtk.nix { };
+
+  fcitx5-hangul = callPackage ../tools/inputmethods/fcitx5/fcitx5-hangul.nix { };
+
+  fcitx5-rime = callPackage ../tools/inputmethods/fcitx5/fcitx5-rime.nix { };
+
+  fcitx5-table-extra = callPackage ../tools/inputmethods/fcitx5/fcitx5-table-extra.nix { };
+
+  fcitx5-table-other = callPackage ../tools/inputmethods/fcitx5/fcitx5-table-other.nix { };
+
+  fcppt = callPackage ../development/libraries/fcppt { };
+
+  fcrackzip = callPackage ../tools/security/fcrackzip { };
+
+  fcron = callPackage ../tools/system/fcron { };
+
+  fdm = callPackage ../tools/networking/fdm {};
+
+  fdtools = callPackage ../tools/misc/fdtools { };
+
+  featherpad = qt5.callPackage ../applications/editors/featherpad {};
+
+  feedreader = callPackage ../applications/networking/feedreaders/feedreader {};
+
+  fend = callPackage ../tools/misc/fend { };
+
+  ferm = callPackage ../tools/networking/ferm { };
+
+  ffsend = callPackage ../tools/misc/ffsend {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Security AppKit;
+  };
+
+  fgallery = callPackage ../tools/graphics/fgallery { };
+
+  flannel = callPackage ../tools/networking/flannel { };
+  cni-plugin-flannel = callPackage ../tools/networking/flannel/plugin.nix {};
+
+  flashbench = callPackage ../os-specific/linux/flashbench { };
+
+  flatpak = callPackage ../development/libraries/flatpak { };
+
+  flatpak-builder = callPackage ../development/tools/flatpak-builder {
+    binutils = binutils-unwrapped;
+  };
+
+  fltrdr = callPackage ../tools/misc/fltrdr {
+    icu = icu63;
+  };
+
+  fluent-bit = callPackage ../tools/misc/fluent-bit { };
+
+  flux = callPackage ../development/compilers/flux { };
+
+  fido2luks = callPackage ../tools/security/fido2luks {};
+
+  fierce = callPackage ../tools/security/fierce { };
+
+  figlet = callPackage ../tools/misc/figlet { };
+
+  file = callPackage ../tools/misc/file {
+    inherit (windows) libgnurx;
+  };
+
+  filegive = callPackage ../tools/networking/filegive { };
+
+  fileschanged = callPackage ../tools/misc/fileschanged { };
+
+  filet = callPackage ../applications/misc/filet { };
+
+  findomain = callPackage ../tools/networking/findomain {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  findutils = callPackage ../tools/misc/findutils { };
+
+  finger_bsd = callPackage ../tools/networking/bsd-finger { };
+
+  iprange = callPackage ../applications/networking/firehol/iprange.nix {};
+
+  firehol = callPackage ../applications/networking/firehol {};
+
+  fio = callPackage ../tools/system/fio { };
+
+  firebird-emu = libsForQt5.callPackage ../applications/emulators/firebird-emu { };
+
+  flamerobin = callPackage ../applications/misc/flamerobin { };
+
+  flashrom = callPackage ../tools/misc/flashrom { };
+
+  flent = python3Packages.callPackage ../applications/networking/flent { };
+
+  flexoptix-app = callPackage ../tools/misc/flexoptix-app { };
+
+  flpsed = callPackage ../applications/editors/flpsed { };
+
+  fluentd = callPackage ../tools/misc/fluentd { };
+
+  flvstreamer = callPackage ../tools/networking/flvstreamer { };
+
+  frr = callPackage ../servers/frr { };
+
+  hmetis = pkgsi686Linux.callPackage ../applications/science/math/hmetis { };
+
+  libbsd = callPackage ../development/libraries/libbsd { };
+
+  libbladeRF = callPackage ../development/libraries/libbladeRF { };
+
+  libbtbb = callPackage ../development/libraries/libbtbb { };
+
+  lp_solve = callPackage ../applications/science/math/lp_solve {
+    inherit (darwin) cctools;
+  };
+
+  fabric-installer = callPackage ../tools/games/minecraft/fabric-installer { };
+
+  faraday-agent-dispatcher = callPackage ../tools/security/faraday-agent-dispatcher { };
+
+  faraday-cli = callPackage ../tools/security/faraday-cli { };
+
+  fastlane = callPackage ../tools/admin/fastlane { };
+
+  fatresize = callPackage ../tools/filesystems/fatresize {};
+
+  fdk_aac = callPackage ../development/libraries/fdk-aac { };
+
+  fdk-aac-encoder = callPackage ../applications/audio/fdkaac { };
+
+  feedgnuplot = callPackage ../tools/graphics/feedgnuplot { };
+
+  fbcat = callPackage ../tools/misc/fbcat { };
+
+  fbv = callPackage ../tools/graphics/fbv { };
+
+  fbvnc = callPackage ../tools/admin/fbvnc {};
+
+  fim = callPackage ../tools/graphics/fim { };
+
+  flac123 = callPackage ../applications/audio/flac123 { };
+
+  flamegraph = callPackage ../development/tools/flamegraph { };
+
+  flawfinder = callPackage ../development/tools/flawfinder { };
+
+  flintlock = callPackage ../applications/virtualization/flintlock { };
+
+  flip-link = callPackage ../development/tools/flip-link { };
+
+  flips = callPackage ../tools/compression/flips { };
+
+  flowblade = callPackage ../applications/video/flowblade { };
+
+  flvtool2 = callPackage ../tools/video/flvtool2 {
+    ruby = ruby_2_2;
+  };
+
+  fmbt = callPackage ../development/tools/fmbt {
+    python = python2;
+  };
+
+  fontfor = callPackage ../tools/misc/fontfor { };
+
+  fontforge = lowPrio (callPackage ../tools/misc/fontforge {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+    python = python3;
+  });
+  fontforge-gtk = fontforge.override {
+    withSpiro = true;
+    withGTK = true;
+    gtk3 = gtk3-x11;
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  fontforge-fonttools = callPackage ../tools/misc/fontforge/fontforge-fonttools.nix {};
+
+  fontmatrix = libsForQt514.callPackage ../applications/graphics/fontmatrix {};
+
+  footswitch = callPackage ../tools/inputmethods/footswitch { };
+
+  foremost = callPackage ../tools/system/foremost { };
+
+  forktty = callPackage ../os-specific/linux/forktty {};
+
+  fortune = callPackage ../tools/misc/fortune { };
+
+  fox = callPackage ../development/libraries/fox {
+    libpng = libpng12;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  fox_1_6 = callPackage ../development/libraries/fox/fox-1.6.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  fpart = callPackage ../tools/misc/fpart { };
+
+  fping = callPackage ../tools/networking/fping {};
+
+  fpm = callPackage ../tools/package-management/fpm { };
+
+  fprintd = callPackage ../tools/security/fprintd { };
+
+  fprintd-tod = callPackage ../tools/security/fprintd/tod.nix { };
+
+  ferdi = callPackage ../applications/networking/instant-messengers/ferdi {
+    mkFranzDerivation = callPackage ../applications/networking/instant-messengers/franz/generic.nix { };
+  };
+
+  fq = callPackage ../development/tools/fq { };
+
+  franz = callPackage ../applications/networking/instant-messengers/franz {
+    mkFranzDerivation = callPackage ../applications/networking/instant-messengers/franz/generic.nix { };
+  };
+
+  freac = callPackage ../applications/audio/freac { };
+
+  freebind = callPackage ../tools/networking/freebind { };
+
+  freeipmi = callPackage ../tools/system/freeipmi {};
+
+  freetalk = callPackage ../applications/networking/instant-messengers/freetalk {
+    guile = guile_2_0;
+  };
+
+  freetds = callPackage ../development/libraries/freetds { };
+
+  freetube = callPackage ../applications/video/freetube { };
+
+  freqtweak = callPackage ../applications/audio/freqtweak {
+    wxGTK = wxGTK31-gtk2;
+  };
+
+  frescobaldi = python3Packages.callPackage ../misc/frescobaldi {};
+
+  freshfetch = callPackage ../tools/misc/freshfetch {
+    inherit (darwin.apple_sdk.frameworks) AppKit CoreFoundation DiskArbitration Foundation IOKit;
+  };
+
+  frostwire = callPackage ../applications/networking/p2p/frostwire { };
+  frostwire-bin = callPackage ../applications/networking/p2p/frostwire/frostwire-bin.nix { };
+
+  ftgl = callPackage ../development/libraries/ftgl {
+    inherit (darwin.apple_sdk.frameworks) OpenGL GLUT;
+  };
+
+  ftop = callPackage ../os-specific/linux/ftop { };
+
+  ftxui = callPackage ../development/libraries/ftxui { };
+
+  fsarchiver = callPackage ../tools/archivers/fsarchiver { };
+
+  fsfs = callPackage ../tools/filesystems/fsfs { };
+
+  fstl = qt5.callPackage ../applications/graphics/fstl { };
+
+  fswebcam = callPackage ../os-specific/linux/fswebcam { };
+
+  fulcio = callPackage ../tools/security/fulcio { };
+
+  fuseiso = callPackage ../tools/filesystems/fuseiso { };
+
+  fusuma = callPackage ../tools/inputmethods/fusuma {};
+
+  fdbPackages = dontRecurseIntoAttrs (callPackage ../servers/foundationdb {
+    openjdk = openjdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  });
+
+  inherit (fdbPackages)
+    foundationdb51
+    foundationdb52
+    foundationdb60
+    foundationdb61
+  ;
+
+  foundationdb = foundationdb61;
+
+  fuse-7z-ng = callPackage ../tools/filesystems/fuse-7z-ng { };
+
+  fuse-overlayfs = callPackage ../tools/filesystems/fuse-overlayfs {};
+
+  fusee-interfacee-tk = callPackage ../applications/misc/fusee-interfacee-tk { };
+
+  fusee-launcher = callPackage ../development/tools/fusee-launcher { };
+
+  fverb = callPackage ../applications/audio/fverb { };
+
+  fwknop = callPackage ../tools/security/fwknop {
+    texinfo = texinfo6_7; # Uses @setcontentsaftertitlepage, removed in 6.8.
+  };
+
+  exfat = callPackage ../tools/filesystems/exfat { };
+
+  exfatprogs = callPackage ../tools/filesystems/exfatprogs { };
+
+  dos2unix = callPackage ../tools/text/dos2unix { };
+
+  uni2ascii = callPackage ../tools/text/uni2ascii { };
+
+  uniscribe = callPackage ../tools/text/uniscribe { };
+
+  galculator = callPackage ../applications/misc/galculator {
+    gtk = gtk3;
+  };
+
+  free42 = callPackage ../applications/misc/free42 { };
+
+  galen = callPackage ../development/tools/galen {};
+
+  gallery-dl = python3Packages.callPackage ../applications/misc/gallery-dl { };
+
+  gandi-cli = python3Packages.callPackage ../tools/networking/gandi-cli { };
+
+  gandom-fonts = callPackage ../data/fonts/gandom-fonts { };
+
+  gaphor = python3Packages.callPackage ../tools/misc/gaphor { };
+
+  garage = callPackage ../tools/filesystems/garage { };
+
+  garmin-plugin = callPackage ../applications/misc/garmin-plugin {};
+
+  garmintools = callPackage ../development/libraries/garmintools {};
+
+  gau = callPackage ../tools/security/gau { };
+
+  gauge = callPackage ../development/tools/gauge { };
+
+  gawk = callPackage ../tools/text/gawk {
+    inherit (darwin) locale;
+  };
+
+  gawk-with-extensions = callPackage ../tools/text/gawk/gawk-with-extensions.nix {
+    extensions = gawkextlib.full;
+  };
+  gawkextlib = callPackage ../tools/text/gawk/gawkextlib.nix {};
+
+  gawkInteractive = gawk.override { interactive = true; };
+
+  gawp = callPackage ../tools/misc/gawp { };
+
+  gbdfed = callPackage ../tools/misc/gbdfed {
+    gtk = gtk2-x11;
+  };
+
+  gdmap = callPackage ../tools/system/gdmap { };
+
+  gelasio = callPackage ../data/fonts/gelasio { };
+
+  gemget = callPackage ../tools/networking/gemget {};
+
+  gen-oath-safe = callPackage ../tools/security/gen-oath-safe { };
+
+  genext2fs = callPackage ../tools/filesystems/genext2fs { };
+
+  gengetopt = callPackage ../development/tools/misc/gengetopt { };
+
+  genimage = callPackage ../tools/filesystems/genimage { };
+
+  genmap = callPackage ../applications/science/biology/genmap { };
+
+  geonkick = callPackage ../applications/audio/geonkick {};
+
+  gerrit = callPackage ../applications/version-management/gerrit { };
+
+  geteltorito = callPackage ../tools/misc/geteltorito { };
+
+  getmail6 = callPackage ../tools/networking/getmail6 { };
+
+  getopt = callPackage ../tools/misc/getopt { };
+
+  gexiv2 = callPackage ../development/libraries/gexiv2 { };
+
+  gftp = callPackage ../applications/networking/ftp/gftp {
+    gtk = gtk2;
+  };
+
+  gfs2-utils = callPackage ../tools/filesystems/gfs2-utils { };
+
+  gfbgraph = callPackage ../development/libraries/gfbgraph { };
+
+  gfold = callPackage ../applications/version-management/git-and-tools/gfold { };
+
+  ggobi = callPackage ../tools/graphics/ggobi { };
+
+  gh = callPackage ../applications/version-management/git-and-tools/gh { };
+
+  ghorg = callPackage ../applications/version-management/git-and-tools/ghorg { };
+
+  ghost = callPackage ../tools/security/ghost { };
+
+  ghostunnel = callPackage ../tools/networking/ghostunnel { };
+
+  ghq = callPackage ../applications/version-management/git-and-tools/ghq { };
+
+  gst = callPackage ../applications/version-management/git-and-tools/gst { };
+
+  ghr = callPackage ../applications/version-management/git-and-tools/ghr { };
+
+  ghrepo-stats = with python3Packages; toPythonApplication ghrepo-stats;
+
+  gibberish-detector = with python3Packages; toPythonApplication gibberish-detector;
+
+  gibo = callPackage ../tools/misc/gibo { };
+
+  gifsicle = callPackage ../tools/graphics/gifsicle { };
+
+  gifski = callPackage ../tools/graphics/gifski { };
+
+  git-absorb = callPackage ../applications/version-management/git-and-tools/git-absorb {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  inherit (haskellPackages) git-annex;
+
+  git-annex-metadata-gui = libsForQt5.callPackage ../applications/version-management/git-and-tools/git-annex-metadata-gui {
+    inherit (python3Packages) buildPythonApplication pyqt5 git-annex-adapter;
+  };
+
+  git-annex-remote-b2 = callPackage ../applications/version-management/git-and-tools/git-annex-remote-b2 { };
+
+  git-annex-remote-dbx = callPackage ../applications/version-management/git-and-tools/git-annex-remote-dbx {
+    inherit (python3Packages)
+    buildPythonApplication
+    fetchPypi
+    dropbox
+    annexremote
+    humanfriendly;
+  };
+
+  git-annex-remote-googledrive = callPackage ../applications/version-management/git-and-tools/git-annex-remote-googledrive {
+    inherit (python3Packages)
+    buildPythonApplication
+    fetchPypi
+    annexremote
+    drivelib
+    GitPython
+    tenacity
+    humanfriendly;
+  };
+
+  git-annex-remote-rclone = callPackage ../applications/version-management/git-and-tools/git-annex-remote-rclone { };
+
+  git-annex-utils = callPackage ../applications/version-management/git-and-tools/git-annex-utils { };
+
+  git-appraise = callPackage ../applications/version-management/git-and-tools/git-appraise {};
+
+  git-backup = callPackage ../applications/version-management/git-backup {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-big-picture = callPackage ../applications/version-management/git-and-tools/git-big-picture { };
+
+  git-branchless = callPackage ../applications/version-management/git-and-tools/git-branchless {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  inherit (haskellPackages) git-brunch;
+
+  git-bug = callPackage ../applications/version-management/git-and-tools/git-bug { };
+
+  git-chglog = callPackage ../applications/version-management/git-and-tools/git-chglog { };
+
+  git-cinnabar = callPackage ../applications/version-management/git-and-tools/git-cinnabar { };
+
+  git-cliff = callPackage ../applications/version-management/git-and-tools/git-cliff {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-codeowners = callPackage ../applications/version-management/git-and-tools/git-codeowners { };
+
+  git-codereview = callPackage ../applications/version-management/git-and-tools/git-codereview { };
+
+  git-cola = callPackage ../applications/version-management/git-and-tools/git-cola { };
+
+  git-credential-1password = callPackage ../applications/version-management/git-and-tools/git-credential-1password { };
+
+  git-crecord = callPackage ../applications/version-management/git-crecord { };
+
+  git-crypt = callPackage ../applications/version-management/git-and-tools/git-crypt { };
+
+  git-delete-merged-branches = callPackage ../applications/version-management/git-and-tools/git-delete-merged-branches { };
+
+  git-dit = callPackage ../applications/version-management/git-and-tools/git-dit {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  git-extras = callPackage ../applications/version-management/git-and-tools/git-extras { };
+
+  git-fame = callPackage ../applications/version-management/git-and-tools/git-fame {};
+
+  git-fast-export = callPackage ../applications/version-management/git-and-tools/fast-export { };
+
+  git-filter-repo = with python3Packages; toPythonApplication git-filter-repo;
+
+  git-gone = callPackage ../applications/version-management/git-and-tools/git-gone {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-hound = callPackage ../tools/security/git-hound { };
+
+  git-hub = callPackage ../applications/version-management/git-and-tools/git-hub { };
+
+  git-ignore = callPackage ../applications/version-management/git-and-tools/git-ignore { };
+
+  git-imerge = python3Packages.callPackage ../applications/version-management/git-and-tools/git-imerge { };
+
+  git-interactive-rebase-tool = callPackage ../applications/version-management/git-and-tools/git-interactive-rebase-tool {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-lfs = lowPrio (callPackage ../applications/version-management/git-lfs { });
+
+  git-lfs1 = callPackage ../applications/version-management/git-lfs/1.nix { };
+
+  git-ftp = callPackage ../development/tools/git-ftp { };
+
+  git-machete = python3Packages.callPackage ../applications/version-management/git-and-tools/git-machete { };
+
+  git-my = callPackage ../applications/version-management/git-and-tools/git-my { };
+
+  git-octopus = callPackage ../applications/version-management/git-and-tools/git-octopus { };
+
+  git-open = callPackage ../applications/version-management/git-and-tools/git-open { };
+
+  git-quickfix = callPackage ../applications/version-management/git-and-tools/git-quickfix {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  git-radar = callPackage ../applications/version-management/git-and-tools/git-radar { };
+
+  git-recent = callPackage ../applications/version-management/git-and-tools/git-recent {
+    util-linux = if stdenv.isLinux then util-linuxMinimal else util-linux;
+  };
+
+  git-remote-codecommit = python3Packages.callPackage ../applications/version-management/git-and-tools/git-remote-codecommit { };
+
+  git-remote-gcrypt = callPackage ../applications/version-management/git-and-tools/git-remote-gcrypt { };
+
+  git-remote-hg = callPackage ../applications/version-management/git-and-tools/git-remote-hg { };
+
+  git-reparent = callPackage ../applications/version-management/git-and-tools/git-reparent { };
+
+  git-secret = callPackage ../applications/version-management/git-and-tools/git-secret { };
+
+  git-secrets = callPackage ../applications/version-management/git-and-tools/git-secrets { };
+
+  git-series = callPackage ../development/tools/git-series { };
+
+  git-sizer = callPackage ../applications/version-management/git-sizer { };
+
+  git-standup = callPackage ../applications/version-management/git-and-tools/git-standup { };
+
+  git-stree = callPackage ../applications/version-management/git-and-tools/git-stree { };
+
+  git-subrepo = callPackage ../applications/version-management/git-and-tools/git-subrepo { };
+
+  git-subset = callPackage ../applications/version-management/git-and-tools/git-subset {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-subtrac = callPackage ../applications/version-management/git-and-tools/git-subtrac { };
+
+  git-sync = callPackage ../applications/version-management/git-and-tools/git-sync { };
+
+  git-test = callPackage ../applications/version-management/git-and-tools/git-test { };
+
+  git-trim = callPackage ../applications/version-management/git-and-tools/git-trim {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-up = callPackage ../applications/version-management/git-up {
+    pythonPackages = python3Packages;
+  };
+
+  git-vanity-hash = callPackage ../applications/version-management/git-and-tools/git-vanity-hash { };
+
+  git-vendor = callPackage ../applications/version-management/git-and-tools/git-vendor { };
+
+  git-when-merged = callPackage ../applications/version-management/git-and-tools/git-when-merged { };
+
+  git-workspace = callPackage ../applications/version-management/git-and-tools/git-workspace {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git2cl = callPackage ../applications/version-management/git-and-tools/git2cl { };
+
+  gita = python3Packages.callPackage ../applications/version-management/git-and-tools/gita { };
+
+  gitbatch = callPackage ../applications/version-management/git-and-tools/gitbatch { };
+
+  gitflow = callPackage ../applications/version-management/git-and-tools/gitflow { };
+
+  gitfs = callPackage ../tools/filesystems/gitfs { };
+
+  github-backup = callPackage ../tools/misc/github-backup { };
+
+  github-runner = callPackage ../development/tools/continuous-integration/github-runner { };
+
+  gitkraken = callPackage ../applications/version-management/gitkraken { };
+
+  gitlab = callPackage ../applications/version-management/gitlab { };
+  gitlab-ee = callPackage ../applications/version-management/gitlab {
+    gitlabEnterprise = true;
+  };
+
+  gitlab-runner = callPackage ../development/tools/continuous-integration/gitlab-runner { };
+
+  gitlab-shell = callPackage ../applications/version-management/gitlab/gitlab-shell { };
+
+  gitlab-triage = callPackage ../applications/version-management/gitlab-triage { };
+
+  gitlab-workhorse = callPackage ../applications/version-management/gitlab/gitlab-workhorse { };
+
+  gitleaks = callPackage ../tools/security/gitleaks { };
+
+  gitaly = callPackage ../applications/version-management/gitlab/gitaly { };
+
+  gitqlient = libsForQt5.callPackage ../applications/version-management/gitqlient { };
+
+  gitstats = callPackage ../applications/version-management/gitstats { };
+
+  gitstatus = callPackage ../applications/version-management/git-and-tools/gitstatus { };
+
+  gitty = callPackage ../applications/version-management/git-and-tools/gitty { };
+
+  gitui = callPackage ../applications/version-management/git-and-tools/gitui {
+    inherit (darwin.apple_sdk.frameworks) Security AppKit;
+  };
+
+  gogs = callPackage ../applications/version-management/gogs { };
+
+  git-latexdiff = callPackage ../tools/typesetting/git-latexdiff { };
+
+  gitea = callPackage ../applications/version-management/gitea { };
+
+  gokart = callPackage ../development/tools/gokart { };
+
+  gl2ps = callPackage ../development/libraries/gl2ps { };
+
+  glab = callPackage ../applications/version-management/git-and-tools/glab { };
+
+  glitter = callPackage ../applications/version-management/git-and-tools/glitter { };
+
+  glusterfs = callPackage ../tools/filesystems/glusterfs { };
+
+  glmark2 = callPackage ../tools/graphics/glmark2 { };
+
+  glogg = libsForQt5.callPackage ../tools/text/glogg { };
+
+  glxinfo = callPackage ../tools/graphics/glxinfo { };
+
+  gmrender-resurrect = callPackage ../tools/networking/gmrender-resurrect {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav;
+  };
+
+  gnirehtet = callPackage ../tools/networking/gnirehtet { };
+
+  gnome-2048 = callPackage ../desktops/gnome/games/gnome-2048 { };
+
+  gnome-builder = callPackage ../applications/editors/gnome-builder { };
+
+  gnome-feeds = callPackage ../applications/networking/feedreaders/gnome-feeds {};
+
+  gnome-keysign = callPackage ../tools/security/gnome-keysign { };
+
+  gnome-secrets = callPackage ../applications/misc/gnome-secrets { };
+
+  gnome-podcasts = callPackage ../applications/audio/gnome-podcasts { };
+
+  gnome-photos = callPackage ../applications/graphics/gnome-photos { };
+
+  gnome-randr = callPackage ../tools/wayland/gnome-randr { };
+
+  gnokii = callPackage ../tools/misc/gnokii { };
+
+  gnuapl = callPackage ../development/interpreters/gnu-apl { };
+
+  gnu-shepherd = callPackage ../misc/gnu-shepherd { };
+
+  dapl = callPackage ../development/interpreters/dzaima-apl {
+    buildNativeImage = false;
+    stdenv = stdenvNoCC;
+    jdk = jre;
+  };
+  dapl-native = callPackage ../development/interpreters/dzaima-apl {
+    buildNativeImage = true;
+    jdk = graalvm11-ce;
+  };
+
+  gnucap = callPackage ../applications/science/electronics/gnucap { };
+
+  gnu-cobol = callPackage ../development/compilers/gnu-cobol { };
+
+  gnuclad = callPackage ../applications/graphics/gnuclad { };
+
+  gnufdisk = callPackage ../tools/system/fdisk {
+    guile = guile_1_8;
+  };
+
+  gnugrep = callPackage ../tools/text/gnugrep { };
+
+  gnulib = callPackage ../development/tools/gnulib { };
+
+  gnupatch = callPackage ../tools/text/gnupatch { };
+
+  gnupg1orig = callPackage ../tools/security/gnupg/1.nix { };
+  gnupg1compat = callPackage ../tools/security/gnupg/1compat.nix { };
+  gnupg1 = gnupg1compat;    # use config.packageOverrides if you prefer original gnupg1
+  gnupg23 = callPackage ../tools/security/gnupg/23.nix {
+    guiSupport = stdenv.isDarwin;
+    pinentry = if stdenv.isDarwin then pinentry_mac else pinentry-gtk2;
+  };
+  gnupg = gnupg23;
+
+  gnupg-pkcs11-scd = callPackage ../tools/security/gnupg-pkcs11-scd { };
+
+  gnuplot = libsForQt5.callPackage ../tools/graphics/gnuplot { };
+
+  gnuplot_qt = gnuplot.override { withQt = true; };
+
+  # must have AquaTerm installed separately
+  gnuplot_aquaterm = gnuplot.override { aquaterm = true; };
+
+  gnu-pw-mgr = callPackage ../tools/security/gnu-pw-mgr { };
+
+  gnused = if !stdenv.hostPlatform.isWindows
+    then callPackage ../tools/text/gnused { } # broken on Windows
+    else gnused_422;
+  # This is an easy work-around for [:space:] problems.
+  gnused_422 = callPackage ../tools/text/gnused/422.nix { };
+
+  gnutar = callPackage ../tools/archivers/gnutar { };
+
+  goaccess = callPackage ../tools/misc/goaccess { };
+
+  gocryptfs = callPackage ../tools/filesystems/gocryptfs { };
+
+  godot = callPackage ../development/tools/godot {};
+
+  godot-export-templates = callPackage ../development/tools/godot/export-templates.nix { };
+
+  godot-headless = callPackage ../development/tools/godot/headless.nix { };
+
+  godot-server = callPackage ../development/tools/godot/server.nix { };
+
+  goklp = callPackage ../tools/networking/goklp {};
+
+  go-mtpfs = callPackage ../tools/filesystems/go-mtpfs { };
+
+  goofys = callPackage ../tools/filesystems/goofys {
+    buildGoModule = buildGo116Module;
+  };
+
+  go-sct = callPackage ../tools/X11/go-sct { };
+
+  # rename to upower-notify?
+  go-upower-notify = callPackage ../tools/misc/upower-notify { };
+
+  goattracker = callPackage ../applications/audio/goattracker { };
+
+  goattracker-stereo = callPackage ../applications/audio/goattracker {
+    isStereo = true;
+  };
+
+  google-app-engine-go-sdk = callPackage ../development/tools/google-app-engine-go-sdk { };
+
+  google-authenticator = callPackage ../os-specific/linux/google-authenticator { };
+
+  google-cloud-sdk = callPackage ../tools/admin/google-cloud-sdk {
+    python = python3;
+  };
+  google-cloud-sdk-gce = google-cloud-sdk.override {
+    python = python38;
+    with-gce = true;
+  };
+
+  google-fonts = callPackage ../data/fonts/google-fonts { };
+
+  google-clasp = nodePackages."@google/clasp";
+
+  google-compute-engine = with python38.pkgs; toPythonApplication google-compute-engine;
+
+  google-guest-oslogin = callPackage ../tools/virtualization/google-guest-oslogin { };
+
+  google-cloud-cpp = callPackage ../development/libraries/google-cloud-cpp { };
+
+  google-java-format = callPackage ../development/tools/google-java-format { };
+
+  google-guest-agent = callPackage ../tools/virtualization/google-guest-agent { };
+
+  google-guest-configs = callPackage ../tools/virtualization/google-guest-configs { };
+
+  gdown = with python3Packages; toPythonApplication gdown;
+
+  gopro = callPackage ../tools/video/gopro { };
+
+  goreleaser = callPackage ../tools/misc/goreleaser { };
+
+  goreplay = callPackage ../tools/networking/goreplay { };
+
+  gost = callPackage ../tools/networking/gost { };
+
+  gource = callPackage ../applications/version-management/gource { };
+
+  govc = callPackage ../tools/virtualization/govc { };
+
+  goverlay = callPackage ../tools/graphics/goverlay {
+    inherit (qt5) wrapQtAppsHook;
+    inherit (plasma5Packages) breeze-qt5;
+  };
+
+  gpart = callPackage ../tools/filesystems/gpart { };
+
+  gparted = callPackage ../tools/misc/gparted { };
+
+  gpt2tc = callPackage ../tools/text/gpt2tc { };
+
+  gptman = callPackage ../tools/system/gptman { };
+
+  ldmtool = callPackage ../tools/misc/ldmtool { };
+
+  gphotos-sync = callPackage ../tools/backup/gphotos-sync { };
+
+  gpodder = callPackage ../applications/audio/gpodder { };
+
+  gpp = callPackage ../development/tools/gpp { };
+
+  gpredict = callPackage ../applications/science/astronomy/gpredict {
+    hamlib = hamlib_4;
+  };
+
+  gprojector = callPackage ../applications/science/astronomy/gprojector { };
+
+  gptfdisk = callPackage ../tools/system/gptfdisk { };
+
+  grafx2 = callPackage ../applications/graphics/grafx2 {};
+
+  grails = callPackage ../development/web/grails { jdk = null; };
+
+  graylog = callPackage ../tools/misc/graylog { };
+  graylogPlugins = recurseIntoAttrs (
+    callPackage ../tools/misc/graylog/plugins.nix { }
+  );
+
+  graphviz = callPackage ../tools/graphics/graphviz {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  graphviz-nox = graphviz.override {
+    withXorg = false;
+    libdevil = libdevil-nox;
+  };
+
+  grin = callPackage ../tools/text/grin { };
+
+  igrep = callPackage ../tools/text/igrep {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ripgrep = callPackage ../tools/text/ripgrep {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ripgrep-all = callPackage ../tools/text/ripgrep-all {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  robodoc = callPackage ../tools/text/robodoc { };
+
+  ucg = callPackage ../tools/text/ucg { };
+
+  grive2 = callPackage ../tools/filesystems/grive2 { };
+
+  groff = callPackage ../tools/text/groff {
+    ghostscript = null;
+    psutils = null;
+    netpbm = null;
+  };
+
+  gromit-mpx = callPackage ../tools/graphics/gromit-mpx {
+    gtk = gtk3;
+    libappindicator = libappindicator-gtk3;
+    inherit (xorg) libXdmcp;
+  };
+
+  gron = callPackage ../development/tools/gron { };
+
+  groonga = callPackage ../servers/search/groonga { };
+
+  grpcurl = callPackage ../tools/networking/grpcurl { };
+
+  grpcui = callPackage ../tools/networking/grpcui { };
+
+  grpc-tools = callPackage ../development/tools/misc/grpc-tools { };
+
+  grub = pkgsi686Linux.callPackage ../tools/misc/grub ({
+    stdenv = overrideCC stdenv buildPackages.pkgsi686Linux.gcc6;
+  } // (config.grub or {}));
+
+  grv = callPackage ../applications/version-management/git-and-tools/grv { };
+
+  trustedGrub = pkgsi686Linux.callPackage ../tools/misc/grub/trusted.nix { };
+
+  trustedGrub-for-HP = pkgsi686Linux.callPackage ../tools/misc/grub/trusted.nix { for_HP_laptop = true; };
+
+  grub2 = grub2_full;
+
+  grub2_full = callPackage ../tools/misc/grub/2.0x.nix {
+    # update breaks grub2
+    gnulib = pkgs.gnulib.overrideAttrs (_: rec {
+      version = "20200223";
+      src = fetchgit {
+        url = "https://git.savannah.gnu.org/r/gnulib.git";
+        rev = "292fd5d6ff5ecce81ec3c648f353732a9ece83c0";
+        sha256 = "0hkg3nql8nsll0vrqk4ifda0v4kpi67xz42r8daqsql6c4rciqnw";
+      };
+    });
+  };
+
+  grub2_efi = grub2.override {
+    efiSupport = true;
+  };
+
+  grub2_light = grub2.override {
+    zfsSupport = false;
+  };
+
+  grub2_xen = grub2_full.override {
+    xenSupport = true;
+  };
+
+  grub2_pvgrub_image = callPackage ../tools/misc/grub/pvgrub_image { };
+
+  grub4dos = callPackage ../tools/misc/grub4dos {
+    stdenv = stdenv_32bit;
+  };
+
+  gruut = with python3.pkgs; toPythonApplication gruut;
+
+  gruut-ipa = with python3.pkgs; toPythonApplication gruut-ipa;
+
+  gx = callPackage ../tools/package-management/gx { };
+  gx-go = callPackage ../tools/package-management/gx/go { };
+
+  efitools = callPackage ../tools/security/efitools { };
+
+  sbsigntool = callPackage ../tools/security/sbsigntool { };
+
+  gsmartcontrol = callPackage ../tools/misc/gsmartcontrol { };
+
+  gsmlib = callPackage ../development/libraries/gsmlib {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  gssdp = callPackage ../development/libraries/gssdp { };
+
+  gssdp-tools = callPackage ../development/libraries/gssdp/tools.nix { };
+
+  grype = callPackage ../tools/security/grype { };
+
+  gt5 = callPackage ../tools/system/gt5 { };
+
+  gtest = callPackage ../development/libraries/gtest { };
+
+  gbenchmark = callPackage ../development/libraries/gbenchmark {};
+
+  gkraken = callPackage ../tools/system/gkraken { };
+
+  gtkdatabox = callPackage ../development/libraries/gtkdatabox {};
+
+  gtdialog = callPackage ../development/libraries/gtdialog {};
+
+  gtkd = callPackage ../development/libraries/gtkd { };
+
+  gtkgnutella = callPackage ../tools/networking/p2p/gtk-gnutella { };
+
+  gtkperf = callPackage ../development/tools/misc/gtkperf { };
+
+  gtk-frdp = callPackage ../development/libraries/gtk-frdp {};
+
+  gtk-vnc = callPackage ../tools/admin/gtk-vnc {};
+
+  gtmess = callPackage ../applications/networking/instant-messengers/gtmess {
+    openssl = openssl_1_0_2;
+  };
+
+  gup = callPackage ../development/tools/build-managers/gup {};
+
+  gupnp = callPackage ../development/libraries/gupnp { };
+
+  gupnp-av = callPackage ../development/libraries/gupnp-av {};
+
+  gupnp-dlna = callPackage ../development/libraries/gupnp-dlna {};
+
+  gupnp-igd = callPackage ../development/libraries/gupnp-igd {};
+
+  gupnp-tools = callPackage ../tools/networking/gupnp-tools {};
+
+  gvm-tools = with python3.pkgs; toPythonApplication gvm-tools;
+
+  gvpe = callPackage ../tools/networking/gvpe {};
+
+  gvolicon = callPackage ../tools/audio/gvolicon {};
+
+  gvproxy = callPackage ../tools/networking/gvproxy { };
+
+  gzip = callPackage ../tools/compression/gzip { };
+
+  gzrt = callPackage ../tools/compression/gzrt { };
+
+  httplab = callPackage ../tools/networking/httplab { };
+
+  lucky-cli = callPackage ../development/web/lucky-cli { };
+
+  partclone = callPackage ../tools/backup/partclone { };
+
+  partimage = callPackage ../tools/backup/partimage { };
+
+  pgf_graphics = callPackage ../tools/graphics/pgf { };
+
+  pgformatter = callPackage ../development/tools/pgformatter { };
+
+  pgloader = callPackage ../development/tools/pgloader { };
+
+  pgtop = callPackage ../development/tools/pgtop { };
+
+  pigz = callPackage ../tools/compression/pigz { };
+
+  pixz = callPackage ../tools/compression/pixz { };
+
+  plplot = callPackage ../development/libraries/plplot {
+    inherit (xorg) libX11;
+  };
+
+  pxattr = callPackage ../tools/archivers/pxattr { };
+
+  pxz = callPackage ../tools/compression/pxz { };
+
+  hans = callPackage ../tools/networking/hans { };
+
+  h2 = callPackage ../servers/h2 { };
+
+  h5utils = callPackage ../tools/misc/h5utils {
+    libmatheval = null;
+    hdf4 = null;
+  };
+
+  haproxy = callPackage ../tools/networking/haproxy { };
+
+  hackertyper = callPackage ../tools/misc/hackertyper { };
+
+  haveged = callPackage ../tools/security/haveged { };
+
+  habitat = callPackage ../applications/networking/cluster/habitat { };
+
+  hardlink = callPackage ../tools/system/hardlink { };
+
+  hashcash = callPackage ../tools/security/hashcash { };
+
+  hashcat = callPackage ../tools/security/hashcat { };
+
+  hashcat-utils = callPackage ../tools/security/hashcat-utils { };
+
+  hash_extender = callPackage ../tools/security/hash_extender { };
+
+  hash-identifier = callPackage ../tools/security/hash-identifier { };
+
+  hash-slinger = callPackage ../tools/security/hash-slinger { };
+
+  haskell-language-server = callPackage ../development/tools/haskell/haskell-language-server/withWrapper.nix { };
+
+  hasmail = callPackage ../applications/networking/mailreaders/hasmail { };
+
+  haste-client = callPackage ../tools/misc/haste-client { };
+
+  hal-hardware-analyzer = libsForQt5.callPackage ../applications/science/electronics/hal-hardware-analyzer { };
+
+  half = callPackage ../development/libraries/half { };
+
+  halibut = callPackage ../tools/typesetting/halibut { };
+
+  halide = callPackage ../development/compilers/halide {
+    llvmPackages = llvmPackages_9;
+  };
+
+  ham = pkgs.perlPackages.ham;
+
+  hardinfo = callPackage ../tools/system/hardinfo { };
+
+  hcl2json = callPackage ../applications/misc/hcl2json { };
+
+  hcxtools = callPackage ../tools/security/hcxtools { };
+
+  hcxdumptool = callPackage ../tools/security/hcxdumptool { };
+
+  hdapsd = callPackage ../os-specific/linux/hdapsd { };
+
+  hdaps-gl = callPackage ../tools/misc/hdaps-gl { };
+
+  hddtemp = callPackage ../tools/misc/hddtemp { };
+
+  hdf4 = callPackage ../tools/misc/hdf4 { };
+
+  hdf5 = callPackage ../tools/misc/hdf5 {
+    fortranSupport = false;
+    fortran = gfortran;
+  };
+
+  hdf5_1_10 = callPackage ../tools/misc/hdf5/1.10.nix { };
+
+  hdf5-mpi = hdf5.override { mpiSupport = true; };
+
+  hdf5-cpp = hdf5.override { cppSupport = true; };
+
+  hdf5-fortran = hdf5.override { fortranSupport = true; };
+
+  hdf5-threadsafe = hdf5.override { threadsafe = true; };
+
+  hdf5-blosc = callPackage ../development/libraries/hdf5-blosc { };
+
+  hdfview = callPackage ../tools/misc/hdfview {
+    hdf5 = hdf5_1_10;
+  };
+
+  hecate = callPackage ../applications/editors/hecate { };
+
+  heaptrack = libsForQt5.callPackage ../development/tools/profiling/heaptrack {};
+
+  heimdall = libsForQt5.callPackage ../tools/misc/heimdall { };
+
+  heimdall-gui = heimdall.override { enableGUI = true; };
+
+  headscale = callPackage ../servers/headscale { };
+
+  heisenbridge = callPackage ../servers/heisenbridge { };
+
+  helio-workstation = callPackage ../applications/audio/helio-workstation { };
+
+  hevea = callPackage ../tools/typesetting/hevea { };
+
+  hexd = callPackage ../tools/misc/hexd { };
+  pixd = callPackage ../tools/misc/pixd { };
+
+  hey = callPackage ../tools/networking/hey { };
+
+  hhpc = callPackage ../tools/misc/hhpc { };
+
+  hiera-eyaml = callPackage ../tools/system/hiera-eyaml { };
+
+  hivemind = callPackage ../applications/misc/hivemind { };
+
+  hobbits = libsForQt5.callPackage ../tools/graphics/hobbits { };
+
+  hfsprogs = callPackage ../tools/filesystems/hfsprogs { };
+
+  highlight = callPackage ../tools/text/highlight ({
+    lua = lua5;
+  });
+
+  hockeypuck = callPackage ../servers/hockeypuck/server.nix { };
+
+  hockeypuck-web = callPackage ../servers/hockeypuck/web.nix { };
+
+  homesick = callPackage ../tools/misc/homesick { };
+
+  honcho = callPackage ../tools/system/honcho { };
+
+  horst = callPackage ../tools/networking/horst { };
+
+  host = bind.host;
+
+  hostess = callPackage ../development/tools/hostess {};
+
+  hotpatch = callPackage ../development/libraries/hotpatch { };
+
+  hotspot = libsForQt5.callPackage ../development/tools/analysis/hotspot { };
+
+  hping = callPackage ../tools/networking/hping { };
+
+  hqplayer-desktop = libsForQt5.callPackage ../applications/audio/hqplayer-desktop { };
+
+  html-proofer = callPackage ../tools/misc/html-proofer { };
+
+  htmlq = callPackage ../development/tools/htmlq {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  htpdate = callPackage ../tools/networking/htpdate { };
+
+  http-prompt = callPackage ../tools/networking/http-prompt { };
+
+  http-getter = callPackage ../applications/networking/flent/http-getter.nix { };
+
+  httpdirfs = callPackage ../tools/filesystems/httpdirfs { };
+
+  httpdump = callPackage ../tools/security/httpdump { };
+
+  httpie = callPackage ../tools/networking/httpie { };
+
+  httping = callPackage ../tools/networking/httping {};
+
+  httplz = callPackage ../tools/networking/httplz {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  httpfs2 = callPackage ../tools/filesystems/httpfs { };
+
+  httpstat = callPackage ../tools/networking/httpstat { };
+
+  httptunnel = callPackage ../tools/networking/httptunnel { };
+
+  httpx = callPackage ../tools/security/httpx { };
+
+  hurl = callPackage ../tools/networking/hurl { };
+
+  hub = callPackage ../applications/version-management/git-and-tools/hub { };
+
+  hubicfuse = callPackage ../tools/filesystems/hubicfuse { };
+
+  humanfriendly = with python3Packages; toPythonApplication humanfriendly;
+
+  hwinfo = callPackage ../tools/system/hwinfo { };
+
+  hybridreverb2 = callPackage ../applications/audio/hybridreverb2 {
+    stdenv = gcc8Stdenv;
+  };
+
+  hylafaxplus = callPackage ../servers/hylafaxplus { };
+
+  hyphen = callPackage ../development/libraries/hyphen { };
+
+  i2c-tools = callPackage ../os-specific/linux/i2c-tools { };
+
+  i2p = callPackage ../tools/networking/i2p {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  i2pd = callPackage ../tools/networking/i2pd { };
+
+  iannix = libsForQt5.callPackage ../applications/audio/iannix { };
+
+  jamulus = libsForQt5.callPackage ../applications/audio/jamulus { };
+
+  ibm-sw-tpm2 = callPackage ../tools/security/ibm-sw-tpm2 { };
+
+  ibniz = callPackage ../tools/graphics/ibniz { };
+
+  icecast = callPackage ../servers/icecast { };
+
+  icemon = libsForQt5.callPackage ../applications/networking/icemon { };
+
+  icepeak = haskell.lib.compose.justStaticExecutables haskellPackages.icepeak;
+
+  iceshelf = callPackage ../tools/backup/iceshelf { };
+
+  darkice = callPackage ../tools/audio/darkice { };
+
+  deco = callPackage ../applications/misc/deco { };
+
+  icoutils = callPackage ../tools/graphics/icoutils { };
+
+  idutils = callPackage ../tools/misc/idutils { };
+
+  idle3tools = callPackage ../tools/system/idle3tools { };
+
+  ifcopenshell = with python3Packages; toPythonApplication ifcopenshell;
+
+  iftop = callPackage ../tools/networking/iftop { };
+
+  ifuse = callPackage ../tools/filesystems/ifuse { };
+  ideviceinstaller = callPackage ../tools/misc/ideviceinstaller { };
+  idevicerestore = callPackage ../tools/misc/idevicerestore {
+    inherit (darwin) IOKit;
+  };
+
+  inherit (callPackages ../tools/filesystems/irods rec {
+    stdenv = llvmPackages.libcxxStdenv;
+    libcxx = llvmPackages.libcxx;
+    boost = boost17x.override { inherit stdenv; };
+    fmt = fmt_8.override { inherit stdenv; };
+    nanodbc_llvm = nanodbc.override { inherit stdenv; };
+    avro-cpp_llvm = avro-cpp.override { inherit stdenv boost; };
+  })
+    irods
+    irods-icommands;
+
+  ignite = callPackage ../applications/virtualization/ignite { };
+
+  igmpproxy = callPackage ../tools/networking/igmpproxy { };
+
+  ihaskell = callPackage ../development/tools/haskell/ihaskell/wrapper.nix {
+    inherit (haskellPackages) ghcWithPackages;
+
+    jupyter = python3.withPackages (ps: [ ps.jupyter ps.notebook ]);
+
+    packages = config.ihaskell.packages or (_: []);
+  };
+
+  ijq = callPackage ../development/tools/ijq { };
+
+  iruby = callPackage ../applications/editors/jupyter-kernels/iruby { };
+
+  ike-scan = callPackage ../tools/security/ike-scan { };
+
+  imapsync = callPackage ../tools/networking/imapsync { };
+
+  imgur-screenshot = callPackage ../tools/graphics/imgur-screenshot { };
+
+  imgurbash2 = callPackage ../tools/graphics/imgurbash2 { };
+
+  in-formant = callPackage ../applications/audio/in-formant { };
+
+  inadyn = callPackage ../tools/networking/inadyn { };
+
+  incron = callPackage ../tools/system/incron { };
+
+  industrializer = callPackage ../applications/audio/industrializer { };
+
+  inetutils = callPackage ../tools/networking/inetutils { };
+
+  inferno = callPackage ../development/tools/inferno { };
+
+  inform6 = callPackage ../development/compilers/inform6 { };
+
+  inform7 = callPackage ../development/compilers/inform7 { };
+
+  infamousPlugins = callPackage ../applications/audio/infamousPlugins { };
+
+  innernet = callPackage ../tools/networking/innernet {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  innoextract = callPackage ../tools/archivers/innoextract { };
+
+  input-remapper = python3Packages.callPackage ../tools/inputmethods/input-remapper { };
+
+  input-utils = callPackage ../os-specific/linux/input-utils { };
+
+  inql = callPackage ../tools/security/inql { };
+
+  intecture-agent = callPackage ../tools/admin/intecture/agent.nix { };
+
+  intecture-auth = callPackage ../tools/admin/intecture/auth.nix { };
+
+  intecture-cli = callPackage ../tools/admin/intecture/cli.nix {
+    openssl = openssl_1_0_2;
+  };
+
+  intel-media-sdk = callPackage ../development/libraries/intel-media-sdk { };
+
+  intermodal = callPackage ../tools/misc/intermodal { };
+
+  internetarchive = with python3Packages; toPythonApplication internetarchive;
+
+  invidious = callPackage ../servers/invidious {
+    # needs a specific version of lsquic
+    lsquic = callPackage ../servers/invidious/lsquic.nix { };
+  };
+
+  invoice2data  = callPackage ../tools/text/invoice2data  { };
+
+  inxi = callPackage ../tools/system/inxi { };
+
+  iodine = callPackage ../tools/networking/iodine { };
+
+  ioccheck = callPackage ../tools/security/ioccheck { };
+
+  ioping = callPackage ../tools/system/ioping { };
+
+  ior = callPackage ../tools/system/ior { };
+
+  iouyap = callPackage ../tools/networking/iouyap { };
+
+  ioztat = callPackage ../tools/filesystems/ioztat { };
+
+  ip2location = callPackage ../tools/networking/ip2location { };
+
+  ip2unix = callPackage ../tools/networking/ip2unix { };
+
+  ipad_charge = callPackage ../tools/misc/ipad_charge { };
+
+  iperf2 = callPackage ../tools/networking/iperf/2.nix { };
+  iperf3 = callPackage ../tools/networking/iperf/3.nix { };
+  iperf = iperf3;
+
+  ipfs = callPackage ../applications/networking/ipfs {
+    buildGoModule = buildGo116Module;
+  };
+  ipfs-cluster = callPackage ../applications/networking/ipfs-cluster { };
+
+  ipfs-migrator-all-fs-repo-migrations = callPackage ../applications/networking/ipfs-migrator/all-migrations.nix {
+    buildGoModule = buildGo116Module;
+  };
+  ipfs-migrator-unwrapped = callPackage ../applications/networking/ipfs-migrator/unwrapped.nix { };
+  ipfs-migrator = callPackage ../applications/networking/ipfs-migrator { };
+
+  ipget = callPackage ../applications/networking/ipget { };
+
+  i-pi = with python3Packages; toPythonApplication i-pi;
+
+  iptsd = callPackage ../applications/misc/iptsd { };
+
+  ipmitool = callPackage ../tools/system/ipmitool {};
+
+  ipmiutil = callPackage ../tools/system/ipmiutil {};
+
+  ipmicfg = callPackage ../applications/misc/ipmicfg {};
+
+  ipmiview = callPackage ../applications/misc/ipmiview {};
+
+  ipcalc = callPackage ../tools/networking/ipcalc {};
+
+  netmask = callPackage ../tools/networking/netmask {};
+
+  netifd = callPackage ../tools/networking/netifd {};
+
+  ipinfo = callPackage ../tools/networking/ipinfo {};
+
+  ipscan = callPackage ../tools/security/ipscan { };
+
+  ipv6calc = callPackage ../tools/networking/ipv6calc {};
+
+  ipxe = callPackage ../tools/misc/ipxe { };
+
+  irker = callPackage ../servers/irker { };
+
+  ised = callPackage ../tools/misc/ised {};
+
+  isl = isl_0_20;
+  isl_0_11 = callPackage ../development/libraries/isl/0.11.1.nix { };
+  isl_0_14 = callPackage ../development/libraries/isl/0.14.1.nix { };
+  isl_0_17 = callPackage ../development/libraries/isl/0.17.1.nix { };
+  isl_0_20 = callPackage ../development/libraries/isl/0.20.0.nix { };
+  isl_0_24 = callPackage ../development/libraries/isl/0.24.0.nix { };
+
+  ispike = callPackage ../development/libraries/science/robotics/ispike {
+    boost = boost16x;
+  };
+
+  isrcsubmit = callPackage ../tools/audio/isrcsubmit { };
+
+  isync = callPackage ../tools/networking/isync {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  itm-tools = callPackage ../development/tools/misc/itm-tools { };
+
+  ite-backlight = callPackage ../misc/ite-backlight { };
+
+  iwgtk = callPackage ../tools/networking/iwgtk { };
+
+  ix = callPackage ../tools/misc/ix { };
+
+  jaaa = callPackage ../applications/audio/jaaa { };
+
+  jackett = callPackage ../servers/jackett { };
+
+  jade = callPackage ../tools/text/sgml/jade { };
+
+  jadx = callPackage ../tools/security/jadx { };
+
+  jamesdsp = libsForQt5.callPackage ../applications/audio/jamesdsp { };
+
+  jazzy = callPackage ../development/tools/jazzy { };
+
+  jc = with python3Packages; toPythonApplication jc;
+
+  jd = callPackage ../development/tools/jd { };
+
+  jd-diff-patch = callPackage ../development/tools/jd-diff-patch { };
+
+  jd-gui = callPackage ../tools/security/jd-gui { };
+
+  jdiskreport = callPackage ../tools/misc/jdiskreport { };
+
+  jekyll = callPackage ../applications/misc/jekyll { };
+
+  jet = callPackage ../development/tools/jet { };
+
+  jfmt = callPackage ../development/tools/jfmt { };
+
+  jfsutils = callPackage ../tools/filesystems/jfsutils { };
+
+  jhead = callPackage ../tools/graphics/jhead { };
+
+  jid = callPackage ../development/tools/jid { };
+
+  jing = res.jing-trang;
+  jing-trang = callPackage ../tools/text/xml/jing-trang {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  jira-cli = callPackage ../development/tools/jira_cli { };
+
+  jirafeau = callPackage ../servers/web-apps/jirafeau { };
+
+  jitterentropy = callPackage ../development/libraries/jitterentropy { };
+
+  jl = haskellPackages.callPackage ../development/tools/jl { };
+
+  jless = callPackage ../development/tools/jless {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  jmespath = callPackage ../development/tools/jmespath { };
+
+  jmtpfs = callPackage ../tools/filesystems/jmtpfs { };
+
+  jnettop = callPackage ../tools/networking/jnettop { };
+
+  jsvc = callPackage ../tools/system/jsvc { };
+
+  junkie = callPackage ../tools/networking/junkie { };
+
+  just = callPackage ../development/tools/just { };
+
+  go-jira = callPackage ../applications/misc/go-jira { };
+
+  john = callPackage ../tools/security/john { };
+
+  joplin = nodePackages.joplin;
+
+  joplin-desktop = callPackage ../applications/misc/joplin-desktop { };
+
+  journaldriver = callPackage ../tools/misc/journaldriver { };
+
+  jp = callPackage ../development/tools/jp { };
+
+  jp2a = callPackage ../applications/misc/jp2a { };
+
+  jpeg-archive = callPackage ../applications/graphics/jpeg-archive { };
+
+  jpegexiforient = callPackage ../tools/graphics/jpegexiforient { };
+
+  jpeginfo = callPackage ../applications/graphics/jpeginfo { };
+
+  jpegoptim = callPackage ../applications/graphics/jpegoptim { };
+
+  jpegrescan = callPackage ../applications/graphics/jpegrescan { };
+
+  jpylyzer = with python3Packages; toPythonApplication jpylyzer;
+
+  jq = callPackage ../development/tools/jq { };
+
+  jiq = callPackage ../development/tools/misc/jiq { };
+
+  jql = callPackage ../development/tools/jql { };
+
+  jo = callPackage ../development/tools/jo { };
+
+  joshuto = callPackage ../applications/misc/joshuto {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  jrnl = callPackage ../applications/misc/jrnl { };
+
+  jsawk = callPackage ../tools/text/jsawk { };
+
+  jscoverage = callPackage ../development/tools/misc/jscoverage { };
+
+  jsduck = callPackage ../development/tools/jsduck { };
+
+  json-schema-for-humans = with python3Packages; toPythonApplication json-schema-for-humans;
+
+  jsonwatch = callPackage ../tools/misc/jsonwatch {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  jtc = callPackage ../development/tools/jtc { };
+
+  jumpapp = callPackage ../tools/X11/jumpapp {};
+
+  jove = callPackage ../applications/editors/jove {};
+
+  jucipp = callPackage ../applications/editors/jucipp { };
+
+  jugglinglab = callPackage ../tools/misc/jugglinglab { };
+
+  jupp = callPackage ../applications/editors/jupp { };
+
+  jupyter = callPackage ../applications/editors/jupyter { };
+
+  jupyter-kernel = callPackage ../applications/editors/jupyter/kernel.nix { };
+
+  jwhois = callPackage ../tools/networking/jwhois { };
+
+  k2pdfopt = callPackage ../applications/misc/k2pdfopt { };
+
+  kargo = callPackage ../tools/misc/kargo { };
+
+  kazam = callPackage ../applications/video/kazam { };
+
+  kalibrate-rtl = callPackage ../applications/radio/kalibrate-rtl { };
+
+  kalibrate-hackrf = callPackage ../applications/radio/kalibrate-hackrf { };
+
+  wrapKakoune = kakoune: attrs: callPackage ../applications/editors/kakoune/wrapper.nix (attrs // { inherit kakoune; });
+  kakounePlugins = recurseIntoAttrs (callPackage ../applications/editors/kakoune/plugins { });
+
+  kakoune-unwrapped = callPackage ../applications/editors/kakoune { };
+  kakoune = wrapKakoune kakoune-unwrapped {
+    plugins = [ ];  # override with the list of desired plugins
+  };
+  kakouneUtils = callPackage ../applications/editors/kakoune/plugins/kakoune-utils.nix { };
+
+  kaffeine = libsForQt5.callPackage ../applications/video/kaffeine { };
+
+  kak-lsp = callPackage ../tools/misc/kak-lsp {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  kakoune-cr = callPackage ../tools/misc/kakoune-cr { };
+
+  kbdd = callPackage ../applications/window-managers/kbdd { };
+
+  kbs2 = callPackage ../tools/security/kbs2 {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  kdbplus = pkgsi686Linux.callPackage ../applications/misc/kdbplus { };
+
+  keepalived = callPackage ../tools/networking/keepalived { };
+
+  kexec-tools = callPackage ../os-specific/linux/kexec-tools { };
+
+  keepkey_agent = with python3Packages; toPythonApplication keepkey_agent;
+
+  kexpand = callPackage ../development/tools/kexpand { };
+
+  kent = callPackage ../applications/science/biology/kent { };
+
+  keybase = callPackage ../tools/security/keybase {
+    # Reasoning for the inherited apple_sdk.frameworks:
+    # 1. specific compiler errors about: AVFoundation, AudioToolbox, MediaToolbox
+    # 2. the rest are added from here: https://github.com/keybase/client/blob/68bb8c893c5214040d86ea36f2f86fbb7fac8d39/go/chat/attachments/preview_darwin.go#L7
+    #      #cgo LDFLAGS: -framework AVFoundation -framework CoreFoundation -framework ImageIO -framework CoreMedia  -framework Foundation -framework CoreGraphics -lobjc
+    #    with the exception of CoreFoundation, due to the warning in https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/darwin/apple-sdk/frameworks.nix#L25
+    inherit (darwin.apple_sdk.frameworks) AVFoundation AudioToolbox ImageIO CoreMedia Foundation CoreGraphics MediaToolbox;
+  };
+
+  kbfs = callPackage ../tools/security/keybase/kbfs.nix { };
+
+  keybase-gui = callPackage ../tools/security/keybase/gui.nix { };
+
+  keychain = callPackage ../tools/misc/keychain { };
+
+  keyfuzz = callPackage ../tools/inputmethods/keyfuzz { };
+
+  keyscope = callPackage ../tools/security/keyscope {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation IOKit Security;
+  };
+
+  keystore-explorer = callPackage ../applications/misc/keystore-explorer {
+    jdk = jdk11;
+  };
+
+  kfctl = callPackage ../applications/networking/cluster/kfctl { };
+
+  kibana6 = callPackage ../development/tools/misc/kibana/6.x.nix { };
+  kibana6-oss = callPackage ../development/tools/misc/kibana/6.x.nix {
+    enableUnfree = false;
+  };
+  kibana7 = callPackage ../development/tools/misc/kibana/7.x.nix { };
+  kibana = kibana6;
+  kibana-oss = kibana6-oss;
+
+  kibi = callPackage ../applications/editors/kibi { };
+
+  kio-fuse = libsForQt5.callPackage ../tools/filesystems/kio-fuse { };
+
+  kismet = callPackage ../applications/networking/sniffers/kismet { };
+
+  kiterunner = callPackage ../tools/security/kiterunner { };
+
+  klick = callPackage ../applications/audio/klick { };
+
+  klystrack = callPackage ../applications/audio/klystrack { };
+
+  knockpy = callPackage ../tools/security/knockpy { };
+
+  kore = callPackage ../development/web/kore { };
+
+  krakenx = callPackage ../tools/system/krakenx { };
+
+  partition-manager = libsForQt5.callPackage ../tools/misc/partition-manager { };
+
+  kpcli = callPackage ../tools/security/kpcli { };
+
+  kratos = callPackage ../applications/misc/kratos { };
+
+  krename = libsForQt5.callPackage ../applications/misc/krename { };
+
+  krunner-pass = libsForQt5.callPackage ../tools/security/krunner-pass { };
+
+  kronometer = libsForQt5.callPackage ../tools/misc/kronometer { };
+
+  krop = callPackage ../applications/graphics/krop { };
+
+  kdiff3 = libsForQt5.callPackage ../tools/text/kdiff3 { };
+
+  kube-router = callPackage ../applications/networking/cluster/kube-router { };
+
+  kubepug = callPackage ../development/tools/kubepug { };
+
+  kubergrunt = callPackage ../applications/networking/cluster/kubergrunt { };
+
+  kwalletcli = libsForQt5.callPackage ../tools/security/kwalletcli { };
+
+  peruse = libsForQt5.callPackage ../tools/misc/peruse { };
+
+  ksmoothdock = libsForQt5.callPackage ../applications/misc/ksmoothdock { };
+
+  kstars = libsForQt5.callPackage ../applications/science/astronomy/kstars { };
+
+  kytea = callPackage ../tools/text/kytea { };
+
+  k6 = callPackage ../development/tools/k6 { };
+
+  l2md = callPackage ../tools/text/l2md { };
+
+  lab = callPackage ../applications/version-management/git-and-tools/lab { };
+
+  lalezar-fonts = callPackage ../data/fonts/lalezar-fonts { };
+
+  last-resort = callPackage ../data/fonts/last-resort {};
+
+  ldc = callPackage ../development/compilers/ldc { };
+
+  ligo = callPackage ../development/compilers/ligo {
+    coq = coq_8_14;
+  };
+
+  ldgallery = callPackage ../tools/graphics/ldgallery {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  lefthook = callPackage ../applications/version-management/git-and-tools/lefthook { };
+
+  lego = callPackage ../tools/admin/lego { };
+
+  leocad = libsForQt5.callPackage ../applications/graphics/leocad { };
+
+  less = callPackage ../tools/misc/less { };
+
+  lf = callPackage ../tools/misc/lf {};
+
+  lha = callPackage ../tools/archivers/lha { };
+
+  lhasa = callPackage ../tools/compression/lhasa {};
+
+  libcpuid = callPackage ../tools/misc/libcpuid { };
+
+  libcsptr = callPackage ../development/libraries/libcsptr { };
+
+  libgovirt = callPackage ../applications/virtualization/libgovirt { };
+
+  libscrypt = callPackage ../development/libraries/libscrypt { };
+
+  libcloudproviders = callPackage ../development/libraries/libcloudproviders { };
+
+  libcoap = callPackage ../applications/networking/libcoap {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  libcryptui = callPackage ../development/libraries/libcryptui {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    gtk3 = if stdenv.isDarwin then gtk3-x11 else gtk3;
+  };
+
+  libshumate = callPackage ../development/libraries/libshumate { };
+
+  libsmartcols = callPackage ../development/libraries/libsmartcols { };
+
+  libsmi = callPackage ../development/libraries/libsmi { };
+
+  libgen-cli = callPackage ../tools/misc/libgen-cli { };
+
+  licensor = callPackage ../tools/misc/licensor { };
+
+  lesspipe = callPackage ../tools/misc/lesspipe { };
+
+  liquidsoap = callPackage ../tools/audio/liquidsoap/full.nix {
+    ffmpeg = ffmpeg-full;
+  };
+
+  lfs = callPackage ../tools/filesystems/lfs { };
+
+  lksctp-tools = callPackage ../os-specific/linux/lksctp-tools { };
+
+  lldpd = callPackage ../tools/networking/lldpd { };
+
+  lnav = callPackage ../tools/misc/lnav { };
+
+  lnch = callPackage ../tools/misc/lnch { };
+
+  loadlibrary = callPackage ../tools/misc/loadlibrary { };
+
+  loc = callPackage ../development/misc/loc { };
+
+  lockfileProgs = callPackage ../tools/misc/lockfile-progs { };
+
+  logstash6 = callPackage ../tools/misc/logstash/6.x.nix {
+    # https://www.elastic.co/support/matrix#logstash-and-jvm
+    jre = jdk11_headless;
+  };
+  logstash6-oss = callPackage ../tools/misc/logstash/6.x.nix {
+    enableUnfree = false;
+    # https://www.elastic.co/support/matrix#logstash-and-jvm
+    jre = jdk11_headless;
+  };
+  logstash7 = callPackage ../tools/misc/logstash/7.x.nix {
+    # https://www.elastic.co/support/matrix#logstash-and-jvm
+    jre = jdk11_headless;
+  };
+  logstash7-oss = callPackage ../tools/misc/logstash/7.x.nix {
+    enableUnfree = false;
+    # https://www.elastic.co/support/matrix#logstash-and-jvm
+    jre = jdk11_headless;
+  };
+  logstash = logstash6;
+
+  logstash-contrib = callPackage ../tools/misc/logstash/contrib.nix { };
+
+  lolcat = callPackage ../tools/misc/lolcat { };
+
+  lottieconverter = callPackage ../tools/misc/lottieconverter { };
+
+  lpcnetfreedv = callPackage ../development/libraries/lpcnetfreedv { };
+
+  lsd = callPackage ../tools/misc/lsd { };
+
+  lsdvd = callPackage ../tools/cd-dvd/lsdvd {};
+
+  lsyncd = callPackage ../applications/networking/sync/lsyncd {
+    lua = lua5_2_compat;
+  };
+
+  ltwheelconf = callPackage ../applications/misc/ltwheelconf { };
+
+  lvmsync = callPackage ../tools/backup/lvmsync { };
+
+  kapp = callPackage ../tools/networking/kapp {};
+
+  kdbg = libsForQt5.callPackage ../development/tools/misc/kdbg { };
+
+  kristall = libsForQt5.callPackage ../applications/networking/browsers/kristall { };
+
+  lagrange = callPackage ../applications/networking/browsers/lagrange {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  kzipmix = pkgsi686Linux.callPackage ../tools/compression/kzipmix { };
+
+  ma1sd = callPackage ../servers/ma1sd { };
+
+  mailcatcher = callPackage ../development/web/mailcatcher { };
+
+  makebootfat = callPackage ../tools/misc/makebootfat { };
+
+  mani = callPackage ../development/tools/mani { };
+
+  mapcache = callPackage ../servers/mapcache { };
+
+  mapserver = callPackage ../servers/mapserver { };
+
+  martin = callPackage ../servers/martin {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  mask = callPackage ../development/tools/mask { };
+
+  mathpix-snipping-tool = callPackage ../tools/misc/mathpix-snipping-tool { };
+
+  matrix-conduit = callPackage ../servers/matrix-conduit { };
+
+  /* Python 3.8 is currently broken with matrix-synapse since `python38Packages.bleach` fails
+    (https://github.com/NixOS/nixpkgs/issues/76093) */
+  matrix-synapse = callPackage ../servers/matrix-synapse { /*python3 = python38;*/ };
+
+  matrix-synapse-plugins = recurseIntoAttrs matrix-synapse.plugins;
+
+  matrix-synapse-tools = recurseIntoAttrs matrix-synapse.tools;
+
+  matrix-appservice-irc = callPackage ../servers/matrix-synapse/matrix-appservice-irc { };
+
+  matrix-appservice-slack = callPackage ../servers/matrix-synapse/matrix-appservice-slack {};
+
+  matrix-appservice-discord = callPackage ../servers/matrix-appservice-discord { };
+
+  matrix-corporal = callPackage ../servers/matrix-corporal { };
+
+  mautrix-facebook = callPackage ../servers/mautrix-facebook { };
+
+  mautrix-signal = recurseIntoAttrs (callPackage ../servers/mautrix-signal { });
+
+  mautrix-telegram = recurseIntoAttrs (callPackage ../servers/mautrix-telegram { });
+
+  mautrix-whatsapp = callPackage ../servers/mautrix-whatsapp { };
+
+  mcfly = callPackage ../tools/misc/mcfly { };
+
+  m2r = python3Packages.callPackage ../tools/text/m2r { };
+
+  md2gemini = with python3.pkgs; toPythonApplication md2gemini;
+
+  mdbook = callPackage ../tools/text/mdbook {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mdbook-graphviz = callPackage ../tools/text/mdbook-graphviz {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mdbook-katex = callPackage ../tools/text/mdbook-katex {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mdbook-linkcheck = callPackage ../tools/text/mdbook-linkcheck {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  mdbook-mermaid = callPackage ../tools/text/mdbook-mermaid {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mdbook-plantuml = callPackage ../tools/text/mdbook-plantuml {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mdcat = callPackage ../tools/text/mdcat {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (python3Packages) ansi2html;
+  };
+
+  medfile = callPackage ../development/libraries/medfile {
+    hdf5 = hdf5.override { usev110Api = true; };
+  };
+
+  meilisearch = callPackage ../servers/search/meilisearch {
+    inherit (darwin.apple_sdk.frameworks) Security DiskArbitration Foundation;
+  };
+
+  memtester = callPackage ../tools/system/memtester { };
+
+  mesa-demos = callPackage ../tools/graphics/mesa-demos { };
+
+  mftrace = callPackage ../tools/typesetting/tex/mftrace { };
+
+  mhonarc = perlPackages.MHonArc;
+
+  minica = callPackage ../tools/security/minica { };
+
+  minidlna = callPackage ../tools/networking/minidlna { };
+
+  minipro = callPackage ../tools/misc/minipro { };
+
+  minisign = callPackage ../tools/security/minisign { };
+
+  ministat = callPackage ../tools/misc/ministat { };
+
+  mjolnir = callPackage ../servers/mjolnir { };
+
+  mmv = callPackage ../tools/misc/mmv { };
+
+  mmv-go = callPackage ../tools/misc/mmv-go { };
+
+  mob = callPackage ../applications/misc/mob { };
+
+  most = callPackage ../tools/misc/most { };
+
+  motion = callPackage ../applications/video/motion { };
+
+  moz-phab = python3Packages.callPackage ../applications/misc/moz-phab { };
+
+  mtail = callPackage ../servers/monitoring/mtail { };
+
+  multitail = callPackage ../tools/misc/multitail { };
+
+  mx-puppet-discord = callPackage ../servers/mx-puppet-discord { };
+
+  mxt-app = callPackage ../misc/mxt-app { };
+
+  naabu = callPackage ../tools/security/naabu { };
+
+  nagstamon = callPackage ../tools/misc/nagstamon {
+    pythonPackages = python3Packages;
+  };
+
+  nats-top = callPackage ../tools/system/nats-top { };
+
+  natscli = callPackage ../tools/system/natscli { };
+
+  nbench = callPackage ../tools/misc/nbench { };
+
+  nbtscanner = callPackage ../tools/security/nbtscanner {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ncrack = callPackage ../tools/security/ncrack { };
+
+  nerdctl = callPackage ../applications/networking/cluster/nerdctl { };
+
+  netdata = callPackage ../tools/system/netdata {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit;
+  };
+
+  netsurf = recurseIntoAttrs (callPackage ../applications/networking/browsers/netsurf { });
+  netsurf-browser = netsurf.browser;
+
+  netperf = callPackage ../applications/networking/netperf { };
+
+  netsniff-ng = callPackage ../tools/networking/netsniff-ng { };
+
+  nkeys = callPackage ../tools/system/nkeys { };
+
+  nyxt = callPackage ../applications/networking/browsers/nyxt { };
+
+  nfpm = callPackage ../tools/package-management/nfpm { };
+
+  nginx-config-formatter = callPackage ../tools/misc/nginx-config-formatter { };
+
+  ninka = callPackage ../development/tools/misc/ninka { };
+
+  nixnote2 = libsForQt514.callPackage ../applications/misc/nixnote2 { };
+
+  nodenv = callPackage ../development/tools/nodenv { };
+
+  nodejs = hiPrio nodejs-16_x;
+
+  nodejs-slim = nodejs-slim-16_x;
+
+
+  nodejs-10_x = callPackage ../development/web/nodejs/v10.nix {
+    icu = icu67;
+  };
+  nodejs-slim-10_x = callPackage ../development/web/nodejs/v10.nix {
+    enableNpm = false;
+    icu = icu67;
+  };
+  nodejs-12_x = callPackage ../development/web/nodejs/v12.nix { };
+  nodejs-slim-12_x = callPackage ../development/web/nodejs/v12.nix {
+    enableNpm = false;
+  };
+  nodejs-14_x = callPackage ../development/web/nodejs/v14.nix { };
+  nodejs-slim-14_x = callPackage ../development/web/nodejs/v14.nix {
+    enableNpm = false;
+  };
+  nodejs-16_x = callPackage ../development/web/nodejs/v16.nix { };
+  nodejs-slim-16_x = callPackage ../development/web/nodejs/v16.nix {
+    enableNpm = false;
+  };
+  nodejs-17_x = callPackage ../development/web/nodejs/v17.nix { };
+  nodejs-slim-17_x = callPackage ../development/web/nodejs/v17.nix {
+    enableNpm = false;
+  };
+  # Update this when adding the newest nodejs major version!
+  # Do not set to nodejs-17_x because it requires 10.13 SDK on Darwin
+  nodejs_latest = nodejs-16_x;
+  nodejs-slim_latest = nodejs-slim-16_x;
+
+  nodePackages_latest = dontRecurseIntoAttrs nodejs_latest.pkgs;
+
+  nodePackages = (dontRecurseIntoAttrs nodejs.pkgs).override {
+    # It does not work on 16.x: https://github.com/NixOS/nixpkgs/issues/132456
+    nodejs = nodejs-14_x;
+  };
+
+  np2kai = callPackage ../applications/emulators/np2kai { };
+
+  openipmi = callPackage ../tools/system/openipmi { };
+
+  ox = callPackage ../applications/editors/ox { };
+
+  file-rename = callPackage ../tools/filesystems/file-rename { };
+
+  kcollectd = libsForQt5.callPackage ../tools/misc/kcollectd {};
+
+  kea = callPackage ../tools/networking/kea { };
+
+  ispell = callPackage ../tools/text/ispell {};
+
+  iodash = callPackage ../development/libraries/iodash { };
+
+  jbofihe = callPackage ../tools/text/jbofihe {};
+
+  jumanpp = callPackage ../tools/text/jumanpp {};
+
+  jump = callPackage ../tools/system/jump {};
+
+  latex2html = callPackage ../tools/misc/latex2html { };
+
+  latexrun = callPackage ../tools/typesetting/tex/latexrun { };
+
+  lcdf-typetools = callPackage ../tools/misc/lcdf-typetools { };
+
+  ldapvi = callPackage ../tools/misc/ldapvi { };
+
+  ldeep = python3Packages.callPackage ../tools/security/ldeep { };
+
+  ldns = callPackage ../development/libraries/ldns { };
+
+  leafpad = callPackage ../applications/editors/leafpad { };
+
+  leatherman = callPackage ../development/libraries/leatherman { };
+
+  ledit = callPackage ../tools/misc/ledit {
+    inherit (ocaml-ng.ocamlPackages_4_12) ocaml camlp5;
+  };
+
+  ledmon = callPackage ../tools/system/ledmon { };
+
+  leela = callPackage ../tools/graphics/leela { };
+
+  lethe = callPackage ../tools/security/lethe {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  lftp = callPackage ../tools/networking/lftp { };
+
+  libck = callPackage ../development/libraries/libck { };
+
+  libcork = callPackage ../development/libraries/libcork { };
+
+  libconfig = callPackage ../development/libraries/libconfig { };
+
+  libcmis = callPackage ../development/libraries/libcmis { };
+
+  libee = callPackage ../development/libraries/libee { };
+
+  libepc = callPackage ../development/libraries/libepc { };
+
+  liberfa = callPackage ../development/libraries/liberfa { };
+
+  libestr = callPackage ../development/libraries/libestr { };
+
+  libevdev = callPackage ../development/libraries/libevdev { };
+
+  liberio = callPackage ../development/libraries/liberio { };
+
+  libevdevplus = callPackage ../development/libraries/libevdevplus { };
+
+  libfann = callPackage ../development/libraries/libfann { };
+
+  libfsm = callPackage ../development/libraries/libfsm { };
+
+  libgaminggear = callPackage ../development/libraries/libgaminggear { };
+
+  libhandy = callPackage ../development/libraries/libhandy { };
+
+  # Needed for apps that still depend on the unstable verison of the library (not libhandy-1)
+  libhandy_0 = callPackage ../development/libraries/libhandy/0.x.nix { };
+
+  libgmpris = callPackage ../development/libraries/libgmpris { };
+
+  libgumath = callPackage ../development/libraries/libgumath { };
+
+  libinsane = callPackage ../development/libraries/libinsane { };
+
+  libint = callPackage ../development/libraries/libint {};
+
+  libipfix = callPackage ../development/libraries/libipfix { };
+
+  libircclient = callPackage ../development/libraries/libircclient { };
+
+  libiscsi = callPackage ../development/libraries/libiscsi { };
+
+  libisds = callPackage ../development/libraries/libisds { };
+
+  libite = callPackage ../development/libraries/libite { };
+
+  liblangtag = callPackage ../development/libraries/liblangtag {
+    inherit (gnome) gnome-common;
+  };
+
+  liblouis = callPackage ../development/libraries/liblouis { };
+
+  liboauth = callPackage ../development/libraries/liboauth { };
+
+  libr3 = callPackage ../development/libraries/libr3 { };
+
+  libraspberrypi = callPackage ../development/libraries/libraspberrypi { };
+
+  libsidplayfp = callPackage ../development/libraries/libsidplayfp { };
+
+  libspf2 = callPackage ../development/libraries/libspf2 { };
+
+  libsrs2 = callPackage ../development/libraries/libsrs2 { };
+
+  libtermkey = callPackage ../development/libraries/libtermkey { };
+
+  libtelnet = callPackage ../development/libraries/libtelnet { };
+
+  libtirpc = callPackage ../development/libraries/ti-rpc { };
+
+  libtins = callPackage ../development/libraries/libtins { };
+
+  libtree = callPackage ../development/tools/misc/libtree { };
+
+  libshout = callPackage ../development/libraries/libshout { };
+
+  libqb = callPackage ../development/libraries/libqb { };
+
+  libqmi = callPackage ../development/libraries/libqmi { };
+
+  libqrtr-glib = callPackage ../development/libraries/libqrtr-glib { };
+
+  libmbim = callPackage ../development/libraries/libmbim { };
+
+  libmongo-client = callPackage ../development/libraries/libmongo-client { };
+
+  libmesode = callPackage ../development/libraries/libmesode {};
+
+  libmsym = callPackage ../development/libraries/science/chemistry/libmsym { };
+
+  libnabo = callPackage ../development/libraries/libnabo { };
+
+  libngspice = callPackage ../development/libraries/libngspice { };
+
+  libnixxml = callPackage ../development/libraries/libnixxml { };
+
+  libplctag = callPackage ../development/libraries/libplctag { };
+
+  libpointmatcher = callPackage ../development/libraries/libpointmatcher { };
+
+  libportal = callPackage ../development/libraries/libportal { };
+  libportal-gtk3 = libportal.override { variant = "gtk3"; };
+  libportal-gtk4 = libportal.override { variant = "gtk4"; };
+  libportal-qt5 = libportal.override { variant = "qt5"; };
+
+  libmicrodns = callPackage ../development/libraries/libmicrodns { };
+
+  libnids = callPackage ../tools/networking/libnids { };
+
+  rakshasa-rtorrent = recurseIntoAttrs
+    (callPackage ../tools/networking/p2p/rakshasa-rtorrent {
+      callPackage = newScope pkgs.rakshasa-rtorrent;
+    });
+
+  rtorrent = rakshasa-rtorrent.rtorrent;
+  libtorrent = rakshasa-rtorrent.libtorrent;
+
+  jesec-rtorrent = recurseIntoAttrs
+    (callPackage ../tools/networking/p2p/jesec-rtorrent {
+      callPackage = newScope pkgs.jesec-rtorrent;
+    });
+
+  rtorrent-jesec = jesec-rtorrent.rtorrent;
+  libtorrent-jesec = jesec-rtorrent.libtorrent;
+
+  libmpack = callPackage ../development/libraries/libmpack { };
+
+  libiberty = callPackage ../development/libraries/libiberty { };
+
+  libucl = callPackage ../development/libraries/libucl { };
+
+  libxc = callPackage ../development/libraries/libxc { };
+
+  libxcomp = callPackage ../development/libraries/libxcomp { };
+
+  libxl = callPackage ../development/libraries/libxl {};
+
+  libx86emu = callPackage ../development/libraries/libx86emu { };
+
+  libzim = callPackage ../development/libraries/libzim {};
+
+
+  libzmf = callPackage ../development/libraries/libzmf {};
+
+  libreddit = callPackage ../servers/libreddit {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  librespeed-cli = callPackage ../tools/misc/librespeed-cli { };
+
+  libreswan = callPackage ../tools/networking/libreswan { };
+
+  librest = callPackage ../development/libraries/librest { };
+
+  inherit (callPackages ../development/libraries/libwebsockets { })
+    libwebsockets_3_1
+    libwebsockets_3_2
+    libwebsockets_4_2
+    libwebsockets_4_3;
+  libwebsockets = libwebsockets_4_3;
+
+  licensee = callPackage ../tools/package-management/licensee { };
+
+  lidarr = callPackage ../servers/lidarr { };
+
+  limesuite = callPackage ../applications/radio/limesuite { };
+
+  limesurvey = callPackage ../servers/limesurvey { };
+
+  linuxquota = callPackage ../tools/misc/linuxquota { };
+
+  liquidctl = with python3Packages; toPythonApplication liquidctl;
+
+  lmp = callPackage ../tools/security/lmp { };
+
+  localtime = callPackage ../tools/system/localtime { };
+
+  log4j-detect = callPackage ../tools/security/log4j-detect { };
+
+  log4j-scan = callPackage ../tools/security/log4j-scan { };
+
+  log4j-sniffer = callPackage ../tools/security/log4j-sniffer { };
+
+  log4j-vuln-scanner = callPackage ../tools/security/log4j-vuln-scanner { };
+
+  log4jcheck = callPackage ../tools/security/log4jcheck { };
+
+  log4shell-detector = callPackage ../tools/security/log4shell-detector { };
+
+  logcheck = callPackage ../tools/system/logcheck { };
+
+  logmap = callPackage ../tools/security/logmap { };
+
+  logmein-hamachi = callPackage ../tools/networking/logmein-hamachi { };
+
+  logkeys = callPackage ../tools/security/logkeys { };
+
+  logrotate = callPackage ../tools/system/logrotate { };
+
+  logstalgia = callPackage ../tools/graphics/logstalgia {};
+
+  lokalise2-cli = callPackage ../tools/misc/lokalise2-cli { };
+
+  loki = callPackage ../development/libraries/loki { };
+
+  longview = callPackage ../servers/monitoring/longview { };
+
+  lout = callPackage ../tools/typesetting/lout { };
+
+  lr = callPackage ../tools/system/lr { };
+
+  lrzip = callPackage ../tools/compression/lrzip { };
+
+  lsb-release = callPackage ../os-specific/linux/lsb-release { };
+
+  # lsh installs `bin/nettle-lfib-stream' and so does Nettle.  Give the
+  # former a lower priority than Nettle.
+  lsh = lowPrio (callPackage ../tools/networking/lsh { });
+
+  lshw = callPackage ../tools/system/lshw { };
+
+  lunatic = callPackage ../development/interpreters/lunatic { };
+
+  lv = callPackage ../tools/text/lv { };
+
+  lxc = callPackage ../os-specific/linux/lxc {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+  lxcfs = callPackage ../os-specific/linux/lxcfs { };
+  lxd = callPackage ../tools/admin/lxd { };
+
+  lxd-image-server = callPackage ../tools/virtualization/lxd-image-server { };
+
+  lzfse = callPackage ../tools/compression/lzfse { };
+
+  lzham = callPackage ../tools/compression/lzham { };
+
+  lzip = callPackage ../tools/compression/lzip { };
+
+  lziprecover = callPackage ../tools/compression/lziprecover { };
+
+  luxcorerender = callPackage ../tools/graphics/luxcorerender {
+    openimagedenoise = openimagedenoise_1_2_x;
+  };
+
+  xz = callPackage ../tools/compression/xz { };
+
+  lz4 = callPackage ../tools/compression/lz4 { };
+
+  lzbench = callPackage ../tools/compression/lzbench { };
+
+  lzop = callPackage ../tools/compression/lzop { };
+
+  lzwolf = callPackage ../games/lzwolf { };
+
+  macchanger = callPackage ../os-specific/linux/macchanger { };
+
+  macchina = callPackage ../tools/misc/macchina {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  madlang = haskell.lib.compose.justStaticExecutables haskellPackages.madlang;
+
+  maeparser = callPackage ../development/libraries/maeparser { };
+
+  mailcheck = callPackage ../applications/networking/mailreaders/mailcheck { };
+
+  maildrop = callPackage ../tools/networking/maildrop { };
+
+  mailhog = callPackage ../servers/mail/mailhog {};
+
+  mailnag = callPackage ../applications/networking/mailreaders/mailnag {
+    availablePlugins = {
+      # More are listed here: https://github.com/pulb/mailnag/#desktop-integration
+      # Use the attributes here as arguments to `plugins` list
+      goa = callPackage ../applications/networking/mailreaders/mailnag/goa-plugin.nix { };
+    };
+  };
+  mailnagWithPlugins = mailnag.withPlugins(
+    builtins.attrValues mailnag.availablePlugins
+  );
+  bubblemail = callPackage ../applications/networking/mailreaders/bubblemail { };
+
+  mailsend = callPackage ../tools/networking/mailsend { };
+
+  mailutils = callPackage ../tools/networking/mailutils {
+    sasl = gsasl;
+  };
+
+  email = callPackage ../tools/networking/email { };
+
+  maim = callPackage ../tools/graphics/maim {};
+
+  mairix = callPackage ../tools/text/mairix { };
+
+  makemkv = libsForQt5.callPackage ../applications/video/makemkv { };
+
+  makerpm = callPackage ../development/tools/makerpm { };
+
+  makefile2graph = callPackage ../development/tools/analysis/makefile2graph { };
+
+  man = man-db;
+
+  man-db = callPackage ../tools/misc/man-db { };
+
+  mandoc = callPackage ../tools/misc/mandoc { };
+
+  mangohud = callPackage ../tools/graphics/mangohud {
+    libXNVCtrl = linuxPackages.nvidia_x11.settings.libXNVCtrl;
+    mangohud32 = pkgsi686Linux.mangohud;
+  };
+
+  manix = callPackage ../tools/nix/manix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  marktext = callPackage ../applications/misc/marktext { };
+
+  mars-mips = callPackage ../development/tools/mars-mips { };
+
+  mawk = callPackage ../tools/text/mawk { };
+
+  mb2md = callPackage ../tools/text/mb2md { };
+
+  mbox = callPackage ../tools/security/mbox { };
+
+  mbuffer = callPackage ../tools/misc/mbuffer { };
+
+  mdsh = callPackage ../development/tools/documentation/mdsh { };
+
+  mecab =
+    let
+      mecab-nodic = callPackage ../tools/text/mecab/nodic.nix { };
+    in
+    callPackage ../tools/text/mecab {
+      mecab-ipadic = callPackage ../tools/text/mecab/ipadic.nix {
+        inherit mecab-nodic;
+      };
+    };
+
+  mediawiki = callPackage ../servers/web-apps/mediawiki { };
+
+  memtier-benchmark = callPackage ../tools/networking/memtier-benchmark { };
+
+  memtest86-efi = callPackage ../tools/misc/memtest86-efi { };
+
+  memtest86plus = callPackage ../tools/misc/memtest86+ { };
+
+  meo = callPackage ../tools/security/meo {
+    boost = boost155;
+  };
+
+  mbutil = python3Packages.callPackage ../applications/misc/mbutil { };
+
+  mc = callPackage ../tools/misc/mc {
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  mcabber = callPackage ../applications/networking/instant-messengers/mcabber { };
+
+  mcron = callPackage ../tools/system/mcron {
+    guile = guile_1_8;
+  };
+
+  mcstatus = with python3Packages; toPythonApplication mcstatus;
+
+  mdbtools = callPackage ../tools/misc/mdbtools { };
+
+  mdk = callPackage ../development/tools/mdk { };
+
+  mdk4 = callPackage ../tools/networking/mdk4 { };
+
+  mdp = callPackage ../applications/misc/mdp { };
+
+  mednafen = callPackage ../applications/emulators/mednafen {
+    inherit (darwin) libiconv;
+  };
+
+  mednafen-server = callPackage ../applications/emulators/mednafen/server.nix { };
+
+  mednaffe = callPackage ../applications/emulators/mednaffe { };
+
+  megacli = callPackage ../tools/misc/megacli { };
+
+  megatools = callPackage ../tools/networking/megatools { };
+
+  memo = callPackage ../applications/misc/memo { };
+
+  mencal = callPackage ../applications/misc/mencal { } ;
+
+  metar = callPackage ../applications/misc/metar { };
+
+  mfcuk = callPackage ../tools/security/mfcuk { };
+
+  mfoc = callPackage ../tools/security/mfoc { };
+
+  mgba = libsForQt5.callPackage ../applications/emulators/mgba { };
+
+  microdnf = callPackage ../tools/package-management/microdnf { };
+
+  microplane = callPackage ../tools/misc/microplane { };
+
+  microserver = callPackage ../servers/microserver { };
+
+  midisheetmusic = callPackage ../applications/audio/midisheetmusic { };
+
+  mikutter = callPackage ../applications/networking/instant-messengers/mikutter { };
+
+  mimeo = callPackage ../tools/misc/mimeo { };
+
+  mimetic = callPackage ../development/libraries/mimetic { };
+
+  minio-client = callPackage ../tools/networking/minio-client { };
+
+  minio-certgen = callPackage ../tools/security/minio-certgen { };
+
+  minissdpd = callPackage ../tools/networking/minissdpd { };
+
+  inherit (callPackage ../tools/networking/miniupnpc
+            { inherit (darwin) cctools; })
+    miniupnpc_1 miniupnpc_2;
+  miniupnpc = miniupnpc_1;
+
+  miniupnpd = callPackage ../tools/networking/miniupnpd { };
+
+  miniball = callPackage ../development/libraries/miniball { };
+
+  minijail = callPackage ../tools/system/minijail { };
+
+  minijail-tools = python3.pkgs.callPackage ../tools/system/minijail/tools.nix { };
+
+  minixml = callPackage ../development/libraries/minixml { };
+
+  mir-qualia = callPackage ../tools/text/mir-qualia {
+    pythonPackages = python3Packages;
+  };
+
+  mirakurun = callPackage ../applications/video/mirakurun { };
+
+  miredo = callPackage ../tools/networking/miredo { };
+
+  mirrorbits = callPackage ../servers/mirrorbits { };
+
+  mitmproxy = with python3Packages; toPythonApplication mitmproxy;
+
+  mjpegtools = callPackage ../tools/video/mjpegtools { };
+
+  mjpegtoolsFull = mjpegtools.override {
+    withMinimal = false;
+  };
+
+  mkclean = callPackage ../applications/video/mkclean {};
+
+  mkcue = callPackage ../tools/cd-dvd/mkcue { };
+
+  mkp224o = callPackage ../tools/security/mkp224o { };
+
+  mkpasswd = hiPrio (callPackage ../tools/security/mkpasswd { });
+
+  mkrand = callPackage ../tools/security/mkrand { };
+
+  mktemp = callPackage ../tools/security/mktemp { };
+
+  mktorrent = callPackage ../tools/misc/mktorrent { };
+
+  mmake = callPackage ../tools/misc/mmake { };
+
+  mmixware = callPackage ../development/tools/mmixware { };
+
+  modemmanager = callPackage ../tools/networking/modemmanager {};
+
+  modem-manager-gui = callPackage ../applications/networking/modem-manager-gui {};
+
+  modsecurity_standalone = callPackage ../tools/security/modsecurity { };
+
+  modsecurity-crs = callPackage ../tools/security/modsecurity-crs { };
+
+  molly-guard = callPackage ../os-specific/linux/molly-guard { };
+
+  molotov = callPackage ../applications/video/molotov {};
+
+  moneyplex = callPackage ../applications/office/moneyplex { };
+
+  monit = callPackage ../tools/system/monit { };
+
+  monolith = callPackage ../tools/backup/monolith {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  moreutils = callPackage ../tools/misc/moreutils {
+    docbook-xsl = docbook_xsl;
+  };
+
+  mole = callPackage ../tools/networking/mole { };
+
+  morgen = callPackage ../applications/office/morgen {
+    electron = electron_15;
+  };
+
+  mosh = callPackage ../tools/networking/mosh { };
+
+  mpage = callPackage ../tools/text/mpage { };
+
+  mprime = callPackage ../tools/misc/mprime { };
+
+  mpw = callPackage ../tools/security/mpw { };
+
+  mr = callPackage ../applications/version-management/mr { };
+
+  mrsh = callPackage ../shells/mrsh { };
+
+  mrtg = callPackage ../tools/misc/mrtg { };
+
+  mscgen = callPackage ../tools/graphics/mscgen { };
+
+  metabigor = callPackage ../tools/security/metabigor { };
+
+  metasploit = callPackage ../tools/security/metasploit { };
+
+  mhost = callPackage ../applications/networking/mhost {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ms-sys = callPackage ../tools/misc/ms-sys { };
+
+  mtdutils = callPackage ../tools/filesystems/mtdutils { };
+
+  mtools = callPackage ../tools/filesystems/mtools { };
+
+  mtr = callPackage ../tools/networking/mtr {};
+
+  mtr-exporter = callPackage ../tools/networking/mtr-exporter {};
+
+  mtr-gui = callPackage ../tools/networking/mtr { withGtk = true; };
+
+  mtx = callPackage ../tools/backup/mtx {};
+
+  mt-st = callPackage ../tools/backup/mt-st {};
+
+  mubeng = callPackage ../tools/networking/mubeng { };
+
+  multitime = callPackage ../tools/misc/multitime { };
+
+  sta = callPackage ../tools/misc/sta {};
+
+  multitran = recurseIntoAttrs (let callPackage = newScope pkgs.multitran; in {
+    multitrandata = callPackage ../tools/text/multitran/data { };
+
+    libbtree = callPackage ../tools/text/multitran/libbtree { };
+
+    libmtsupport = callPackage ../tools/text/multitran/libmtsupport { };
+
+    libfacet = callPackage ../tools/text/multitran/libfacet { };
+
+    libmtquery = callPackage ../tools/text/multitran/libmtquery { };
+
+    mtutils = callPackage ../tools/text/multitran/mtutils { };
+  });
+
+  munge = callPackage ../tools/security/munge { };
+
+  mutagen = callPackage ../tools/misc/mutagen { };
+
+  mycli = callPackage ../tools/admin/mycli { };
+
+  mycrypto = callPackage ../applications/blockchains/mycrypto { };
+
+  mydumper = callPackage ../tools/backup/mydumper { };
+
+  mylvmbackup = callPackage ../tools/backup/mylvmbackup { };
+
+  mysql2pgsql = callPackage ../tools/misc/mysql2pgsql { };
+
+  mysqltuner = callPackage ../tools/misc/mysqltuner { };
+
+  mytetra = libsForQt5.callPackage ../applications/office/mytetra { };
+
+  nabi = callPackage ../tools/inputmethods/nabi { };
+
+  nahid-fonts = callPackage ../data/fonts/nahid-fonts { };
+
+  namazu = callPackage ../tools/text/namazu { };
+
+  nasty = callPackage ../tools/security/nasty { };
+
+  nat-traverse = callPackage ../tools/networking/nat-traverse { };
+
+  navi = callPackage ../applications/misc/navi { };
+
+  navilu-font = callPackage ../data/fonts/navilu { stdenv = stdenvNoCC; };
+
+  nawk = callPackage ../tools/text/nawk { };
+
+  nbd = callPackage ../tools/networking/nbd { };
+  xnbd = callPackage ../tools/networking/xnbd { };
+
+  nccl = callPackage ../development/libraries/science/math/nccl { };
+  nccl_cudatoolkit_10 = nccl.override { cudatoolkit = cudatoolkit_10; };
+  nccl_cudatoolkit_11 = nccl.override { cudatoolkit = cudatoolkit_11; };
+
+  ndjbdns = callPackage ../tools/networking/ndjbdns { };
+
+  ndppd = callPackage ../applications/networking/ndppd { };
+
+  nebula = callPackage ../tools/networking/nebula { };
+
+  nemiver = callPackage ../development/tools/nemiver { };
+
+  neo-cowsay = callPackage ../tools/misc/neo-cowsay { };
+
+  neochat = libsForQt5.callPackage ../applications/networking/instant-messengers/neochat { };
+
+  neofetch = callPackage ../tools/misc/neofetch { };
+
+  nerdfonts = callPackage ../data/fonts/nerdfonts { };
+
+  nestopia = callPackage ../applications/emulators/nestopia { };
+
+  netatalk = callPackage ../tools/filesystems/netatalk { };
+
+  netavark = callPackage ../tools/networking/netavark { };
+
+  netcdf = callPackage ../development/libraries/netcdf {
+    hdf5 = hdf5.override { usev110Api = true; };
+  };
+
+  netcdf-mpi = netcdf.override {
+    hdf5 = hdf5-mpi.override { usev110Api = true; };
+  };
+
+  netcdfcxx4 = callPackage ../development/libraries/netcdf-cxx4 { };
+
+  netcdffortran = callPackage ../development/libraries/netcdf-fortran {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+
+  networking-ts-cxx = callPackage ../development/libraries/networking-ts-cxx { };
+
+  nco = callPackage ../development/libraries/nco { };
+
+  ncftp = callPackage ../tools/networking/ncftp { };
+
+  ncgopher = callPackage ../applications/networking/ncgopher { };
+
+  ncompress = callPackage ../tools/compression/ncompress { };
+
+  ndisc6 = callPackage ../tools/networking/ndisc6 { };
+
+  neopg = callPackage ../tools/security/neopg { };
+
+  netboot = callPackage ../tools/networking/netboot {};
+
+  netbootxyz-efi = callPackage ../tools/misc/netbootxyz-efi { };
+
+  netcat = libressl.nc;
+
+  netcat-gnu = callPackage ../tools/networking/netcat { };
+
+  netdiscover = callPackage ../tools/networking/netdiscover { };
+
+  nethogs = callPackage ../tools/networking/nethogs { };
+
+  netkittftp = callPackage ../tools/networking/netkit/tftp { };
+
+  netlify-cli = callPackage ../development/web/netlify-cli { };
+
+  netpbm = callPackage ../tools/graphics/netpbm { };
+
+  netrw = callPackage ../tools/networking/netrw { };
+
+  netselect = callPackage ../tools/networking/netselect { };
+
+  nettee = callPackage ../tools/networking/nettee {
+    inherit (skawarePackages) cleanPackaging;
+  };
+
+  networkmanager = callPackage ../tools/networking/networkmanager { };
+
+  networkmanager-iodine = callPackage ../tools/networking/networkmanager/iodine { };
+
+  networkmanager-openvpn = callPackage ../tools/networking/networkmanager/openvpn { };
+
+  networkmanager-l2tp = callPackage ../tools/networking/networkmanager/l2tp { };
+
+  networkmanager-vpnc = callPackage ../tools/networking/networkmanager/vpnc { };
+
+  networkmanager-openconnect = callPackage ../tools/networking/networkmanager/openconnect { };
+
+  networkmanager-fortisslvpn = callPackage ../tools/networking/networkmanager/fortisslvpn { };
+
+  networkmanager_strongswan = callPackage ../tools/networking/networkmanager/strongswan { };
+
+  networkmanager-sstp = callPackage ../tools/networking/networkmanager/sstp { };
+
+  networkmanagerapplet = callPackage ../tools/networking/networkmanager/applet { };
+
+  libnma = callPackage ../tools/networking/networkmanager/libnma { };
+
+  libnma-gtk4 = libnma.override { withGtk4 = true; };
+
+  networkmanager_dmenu = callPackage ../tools/networking/networkmanager/dmenu  { };
+
+  nm-tray = libsForQt5.callPackage ../tools/networking/networkmanager/tray.nix { };
+
+  newsboat = callPackage ../applications/networking/feedreaders/newsboat {
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  };
+
+  grocy = callPackage ../servers/grocy { };
+
+  inherit (callPackage ../servers/nextcloud {})
+    nextcloud20 nextcloud21 nextcloud22 nextcloud23;
+
+  nextcloud-client = libsForQt5.callPackage ../applications/networking/nextcloud-client { };
+
+  nextcloud-news-updater = callPackage ../servers/nextcloud/news-updater.nix { };
+
+  ndstool = callPackage ../tools/archivers/ndstool { };
+
+  nfs-ganesha = callPackage ../servers/nfs-ganesha { };
+
+  ngrep = callPackage ../tools/networking/ngrep { };
+
+  neuron-notes = haskell.lib.compose.justStaticExecutables (haskell.lib.compose.generateOptparseApplicativeCompletion "neuron" haskellPackages.neuron);
+
+  ngrok = ngrok-2;
+
+  ngrok-2 = callPackage ../tools/networking/ngrok-2 { };
+
+  ngrok-1 = callPackage ../tools/networking/ngrok-1 { };
+
+  nitter = callPackage ../servers/nitter { };
+
+  noice = callPackage ../applications/misc/noice { };
+
+  noip = callPackage ../tools/networking/noip { };
+
+  nomad = nomad_1_2;
+
+  # Nomad never updates major go versions within a release series and is unsupported
+  # on Go versions that it did not ship with. Due to historic bugs when compiled
+  # with different versions we pin Go for all versions.
+  # Upstream partially documents used Go versions here
+  # https://github.com/hashicorp/nomad/blob/master/contributing/golang.md
+  nomad_1_1 = callPackage ../applications/networking/cluster/nomad/1.1.nix {
+    buildGoModule = buildGo116Module;
+    inherit (linuxPackages) nvidia_x11;
+    nvidiaGpuSupport = config.cudaSupport or false;
+  };
+  nomad_1_2 = callPackage ../applications/networking/cluster/nomad/1.2.nix {
+    buildGoModule = buildGo117Module;
+    inherit (linuxPackages) nvidia_x11;
+    nvidiaGpuSupport = config.cudaSupport or false;
+  };
+
+  nomad-autoscaler = callPackage ../applications/networking/cluster/nomad-autoscaler { };
+
+  nomad-driver-podman = callPackage ../applications/networking/cluster/nomad-driver-podman { };
+
+  nomad-pack = callPackage ../applications/networking/cluster/nomad-pack { };
+
+  nomino = callPackage ../tools/misc/nomino { };
+
+  notable = callPackage ../applications/misc/notable { };
+
+  ntlmrecon = callPackage ../tools/security/ntlmrecon { };
+
+  numberstation = callPackage ../applications/misc/numberstation { };
+
+  nvchecker = with python3Packages; toPythonApplication nvchecker;
+
+  nvfetcher = haskell.lib.compose.justStaticExecutables haskellPackages.nvfetcher;
+
+  miller = callPackage ../tools/text/miller { };
+
+  milu = callPackage ../applications/misc/milu { };
+
+  mkgmap = callPackage ../applications/misc/mkgmap { };
+
+  mkgmap-splitter = callPackage ../applications/misc/mkgmap/splitter { };
+
+  mpack = callPackage ../tools/networking/mpack { };
+
+  mtm = callPackage ../tools/misc/mtm { };
+
+  pa_applet = callPackage ../tools/audio/pa-applet { };
+
+  pandoc-acro = python3Packages.callPackage ../tools/misc/pandoc-acro { };
+
+  pandoc-imagine = python3Packages.callPackage ../tools/misc/pandoc-imagine { };
+
+  pandoc-drawio-filter = python3Packages.callPackage ../tools/misc/pandoc-drawio-filter { };
+
+  pandoc-plantuml-filter = python3Packages.callPackage ../tools/misc/pandoc-plantuml-filter { };
+
+  panicparse = callPackage ../tools/misc/panicparse { };
+
+  patray = callPackage ../tools/audio/patray { };
+
+  pasystray = callPackage ../tools/audio/pasystray { };
+
+  pcmsolver = callPackage ../development/libraries/pcmsolver { };
+
+  pgbadger = perlPackages.callPackage ../tools/misc/pgbadger { };
+
+  phash = callPackage ../development/libraries/phash { };
+
+  pnmixer = callPackage ../tools/audio/pnmixer { };
+
+  pulsemixer = callPackage ../tools/audio/pulsemixer { };
+
+  pwsafe = callPackage ../applications/misc/pwsafe { };
+
+  neil = callPackage ../development/tools/neil { };
+
+  niff = callPackage ../tools/package-management/niff { };
+
+  nifskope = libsForQt5.callPackage ../tools/graphics/nifskope { };
+
+  nilfs-utils = callPackage ../tools/filesystems/nilfs-utils {};
+
+  nitrogen = callPackage ../tools/X11/nitrogen {};
+
+  nms = callPackage ../tools/misc/nms { };
+
+  nomachine-client = callPackage ../tools/admin/nomachine-client { };
+
+  notify-desktop = callPackage ../tools/misc/notify-desktop {};
+
+  nkf = callPackage ../tools/text/nkf {};
+
+  nlopt = callPackage ../development/libraries/nlopt { octave = null; };
+
+  npapi_sdk = callPackage ../development/libraries/npapi-sdk {};
+
+  npiet = callPackage ../development/interpreters/npiet { };
+
+  npth = callPackage ../development/libraries/npth {};
+
+  nmap = callPackage ../tools/security/nmap { };
+
+  nmap-graphical = nmap.override {
+    graphicalSupport = true;
+  };
+
+  nmap-formatter = callPackage ../tools/security/nmap-formatter { };
+
+  nmapsi4 = libsForQt514.callPackage ../tools/security/nmap/qt.nix { };
+
+  nnn = callPackage ../applications/misc/nnn { };
+
+  sfm = callPackage ../applications/misc/sfm { };
+
+  shfm = callPackage ../applications/misc/shfm { };
+
+  noise-repellent = callPackage ../applications/audio/noise-repellent { };
+
+  noisetorch = callPackage ../applications/audio/noisetorch { };
+
+  notary = callPackage ../tools/security/notary { };
+
+  notify-osd = callPackage ../applications/misc/notify-osd { };
+
+  notes-up = callPackage ../applications/office/notes-up { };
+
+  notify-osd-customizable = callPackage ../applications/misc/notify-osd-customizable { };
+
+  nox = callPackage ../tools/package-management/nox { };
+
+  nq = callPackage ../tools/system/nq { };
+
+  nsjail = callPackage ../tools/security/nsjail {};
+
+  nss_pam_ldapd = callPackage ../tools/networking/nss-pam-ldapd {};
+
+  ntfs3g = callPackage ../tools/filesystems/ntfs-3g {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration;
+  };
+
+  # ntfsprogs are merged into ntfs-3g
+  ntfsprogs = pkgs.ntfs3g;
+
+  ntfy = callPackage ../tools/misc/ntfy {};
+
+  ntirpc = callPackage ../development/libraries/ntirpc { };
+
+  ntopng = callPackage ../tools/networking/ntopng { };
+
+  ntp = callPackage ../tools/networking/ntp { };
+
+  numdiff = callPackage ../tools/text/numdiff { };
+
+  numlockx = callPackage ../tools/X11/numlockx { };
+
+  nttcp = callPackage ../tools/networking/nttcp { };
+
+  ntttcp = callPackage ../tools/networking/ntttcp { };
+
+  nuttcp = callPackage ../tools/networking/nuttcp { };
+
+  nssmdns = callPackage ../tools/networking/nss-mdns { };
+
+  nvfancontrol = callPackage ../tools/misc/nvfancontrol {
+    libXNVCtrl = linuxPackages.nvidia_x11.settings.libXNVCtrl;
+  };
+
+  nvimpager = callPackage ../tools/misc/nvimpager { };
+
+  nwdiag = with python3Packages; toPythonApplication nwdiag;
+
+  nxdomain = python3.pkgs.callPackage ../tools/networking/nxdomain { };
+
+  nxpmicro-mfgtools = callPackage ../development/tools/misc/nxpmicro-mfgtools { };
+
+  nyancat = callPackage ../tools/misc/nyancat { };
+
+  nylon = callPackage ../tools/networking/nylon { };
+
+  nym = callPackage ../applications/networking/nym {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  nzbget = callPackage ../tools/networking/nzbget { };
+
+  nzbhydra2 = callPackage ../servers/nzbhydra2 {
+    # You need Java (at least 8, at most 15)
+    # https://github.com/theotherp/nzbhydra2/issues/697
+    # https://github.com/theotherp/nzbhydra2/#how-to-run
+    jre = openjdk11;
+  };
+
+  oapi-codegen = callPackage ../tools/networking/oapi-codegen { };
+
+  oathToolkit = callPackage ../tools/security/oath-toolkit { };
+
+  oatpp = callPackage ../development/libraries/oatpp { };
+
+  obex_data_server = callPackage ../tools/bluetooth/obex-data-server { };
+
+  obexd = callPackage ../tools/bluetooth/obexd { };
+
+  obfs4 = callPackage ../tools/networking/obfs4 {
+    buildGoModule = buildGo116Module;
+  };
+
+  oci-image-tool = callPackage ../tools/misc/oci-image-tool { };
+
+  ocproxy = callPackage ../tools/networking/ocproxy { };
+
+  ocserv = callPackage ../tools/networking/ocserv { };
+
+  octofetch = callPackage ../tools/misc/octofetch {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  oha = callPackage ../tools/networking/oha {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  opencorsairlink = callPackage ../tools/misc/opencorsairlink { };
+
+  openfpgaloader = callPackage ../development/embedded/fpga/openfpgaloader { };
+
+  openfortivpn = callPackage ../tools/networking/openfortivpn { };
+
+  opensnitch = callPackage ../tools/networking/opensnitch/daemon.nix { };
+
+  opensnitch-ui = libsForQt5.callPackage ../tools/networking/opensnitch/ui.nix { };
+
+  obexfs = callPackage ../tools/bluetooth/obexfs { };
+
+  obexftp = callPackage ../tools/bluetooth/obexftp { };
+
+  objconv = callPackage ../development/tools/misc/objconv {};
+
+  odpdown = callPackage ../tools/typesetting/odpdown { };
+
+  odpic = callPackage ../development/libraries/odpic { };
+
+  odt2txt = callPackage ../tools/text/odt2txt { };
+
+  odyssey = callPackage ../tools/misc/odyssey { };
+
+  offlineimap = callPackage ../tools/networking/offlineimap { };
+
+  ofono-phonesim = libsForQt5.callPackage ../development/tools/ofono-phonesim { };
+
+  ogdf = callPackage ../development/libraries/ogdf { };
+
+  oh-my-zsh = callPackage ../shells/zsh/oh-my-zsh { };
+
+  ola = callPackage ../applications/misc/ola { };
+
+  olive-editor = libsForQt514.callPackage ../applications/video/olive-editor {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+
+  ombi = callPackage ../servers/ombi { };
+
+  omping = callPackage ../applications/networking/omping { };
+
+  onefetch = callPackage ../tools/misc/onefetch {
+    inherit (darwin) libresolv;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  onioncircuits = callPackage ../tools/security/onioncircuits { };
+
+  onlykey-agent = callPackage ../tools/security/onlykey-agent { };
+
+  onlykey-cli = callPackage ../tools/security/onlykey-cli { };
+
+  onlykey = callPackage ../tools/security/onlykey { node_webkit = nwjs; };
+
+  openapi-generator-cli = callPackage ../tools/networking/openapi-generator-cli { jre = pkgs.jre_headless; };
+  openapi-generator-cli-unstable = callPackage ../tools/networking/openapi-generator-cli/unstable.nix { jre = pkgs.jre_headless; };
+
+  openboard = libsForQt5.callPackage ../applications/graphics/openboard { };
+
+  opencc = callPackage ../tools/text/opencc { };
+
+  opencl-info = callPackage ../tools/system/opencl-info { };
+
+  opencryptoki = callPackage ../tools/security/opencryptoki { };
+
+  opendbx = callPackage ../development/libraries/opendbx { };
+
+  opendht = callPackage ../development/libraries/opendht  {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  opendkim = callPackage ../development/libraries/opendkim { };
+
+  opendylan = callPackage ../development/compilers/opendylan {
+    opendylan-bootstrap = opendylan_bin;
+  };
+
+  openfec = callPackage ../development/libraries/openfec { };
+
+  ophis = python3Packages.callPackage ../development/compilers/ophis { };
+
+  opendylan_bin = callPackage ../development/compilers/opendylan/bin.nix { };
+
+  open-ecard = callPackage ../tools/security/open-ecard { };
+
+  openjade = callPackage ../tools/text/sgml/openjade { };
+
+  openhantek6022 = libsForQt5.callPackage ../applications/science/electronics/openhantek6022 { };
+
+  openimagedenoise = callPackage ../development/libraries/openimagedenoise { };
+
+  openimagedenoise_1_2_x = callPackage ../development/libraries/openimagedenoise/1_2_x.nix { };
+
+  openmvg = callPackage ../applications/science/misc/openmvg { };
+
+  openmvs = callPackage ../applications/science/misc/openmvs { };
+
+  openntpd = callPackage ../tools/networking/openntpd { };
+
+  openntpd_nixos = openntpd.override {
+    privsepUser = "ntp";
+    privsepPath = "/var/empty";
+  };
+
+  openobex = callPackage ../tools/bluetooth/openobex { };
+
+  openresolv = callPackage ../tools/networking/openresolv { };
+
+  openrgb = libsForQt5.callPackage ../applications/misc/openrgb { };
+
+  openrussian-cli = callPackage ../misc/openrussian-cli {
+    luaPackages = lua53Packages;
+  };
+
+  opensbi = callPackage ../misc/opensbi { };
+
+  opensc = callPackage ../tools/security/opensc {
+    inherit (darwin.apple_sdk.frameworks) Carbon PCSC;
+  };
+
+  openseachest = callPackage ../tools/system/openseachest { };
+
+  opensm = callPackage ../tools/networking/opensm { };
+
+  tinyssh = callPackage ../tools/networking/tinyssh { };
+
+  opensshPackages = dontRecurseIntoAttrs (callPackage ../tools/networking/openssh {});
+
+  openssh = opensshPackages.openssh.override {
+    etcDir = "/etc/ssh";
+  };
+
+  openssh_hpn = opensshPackages.openssh_hpn.override {
+    etcDir = "/etc/ssh";
+  };
+
+  openssh_gssapi = opensshPackages.openssh_gssapi.override {
+    etcDir = "/etc/ssh";
+  };
+
+  ssh-copy-id = callPackage ../tools/networking/openssh/copyid.nix { };
+
+  opensp = callPackage ../tools/text/sgml/opensp { };
+
+  opentrack = libsForQt5.callPackage ../applications/misc/opentrack { };
+
+  opentracker = callPackage ../applications/networking/p2p/opentracker { };
+
+  alttpr-opentracker = callPackage ../tools/games/opentracker { };
+
+  opentsdb = callPackage ../tools/misc/opentsdb {};
+
+  inherit (callPackages ../tools/networking/openvpn {})
+    openvpn_24
+    openvpn;
+
+  openvpn_learnaddress = callPackage ../tools/networking/openvpn/openvpn_learnaddress.nix { };
+
+  openvpn-auth-ldap = callPackage ../tools/networking/openvpn/openvpn-auth-ldap.nix {
+    stdenv = clangStdenv;
+  };
+
+  oq = callPackage ../development/tools/oq { };
+
+  out-of-tree = callPackage ../development/tools/out-of-tree { };
+
+  oppai-ng = callPackage ../tools/misc/oppai-ng { };
+
+  operator-sdk = callPackage ../development/tools/operator-sdk { };
+
+  owncast = callPackage ../servers/owncast { };
+
+  update-dotdee = with python3Packages; toPythonApplication update-dotdee;
+
+  update-nix-fetchgit = haskell.lib.compose.justStaticExecutables haskellPackages.update-nix-fetchgit;
+
+  update-resolv-conf = callPackage ../tools/networking/openvpn/update-resolv-conf.nix { };
+
+  update-systemd-resolved = callPackage ../tools/networking/openvpn/update-systemd-resolved.nix { };
+
+  opae = callPackage ../development/libraries/opae { };
+
+  opentelemetry-collector = callPackage ../tools/misc/opentelemetry-collector { };
+  opentelemetry-collector-contrib = callPackage ../tools/misc/opentelemetry-collector/contrib.nix { };
+
+  opentracing-cpp = callPackage ../development/libraries/opentracing-cpp { };
+
+  openvswitch = callPackage ../os-specific/linux/openvswitch { };
+
+  openvswitch-lts = callPackage ../os-specific/linux/openvswitch/lts.nix { };
+
+  optifinePackages = callPackage ../tools/games/minecraft/optifine { };
+
+  optifine = optifinePackages.optifine-latest;
+
+  optipng = callPackage ../tools/graphics/optipng {
+    libpng = libpng12;
+  };
+
+  olsrd = callPackage ../tools/networking/olsrd { };
+
+  oonf-olsrd2 = callPackage ../tools/networking/oonf-olsrd2 { };
+
+  opl3bankeditor = libsForQt5.callPackage ../tools/audio/opl3bankeditor { };
+  opn2bankeditor = libsForQt5.callPackage ../tools/audio/opl3bankeditor/opn2bankeditor.nix { };
+
+  orangefs = callPackage ../tools/filesystems/orangefs {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  os-prober = callPackage ../tools/misc/os-prober {};
+
+  oshka = callPackage ../development/tools/oshka {};
+
+  osl = callPackage ../development/compilers/osl { };
+
+  osqp = callPackage ../development/libraries/science/math/osqp { };
+
+  ossec = callPackage ../tools/security/ossec {};
+
+  osslsigncode = callPackage ../development/tools/osslsigncode {};
+
+  ostree = callPackage ../tools/misc/ostree { };
+
+  otfcc = callPackage ../tools/misc/otfcc { };
+
+  otpclient = callPackage ../applications/misc/otpclient { };
+
+  otpw = callPackage ../os-specific/linux/otpw { };
+
+  ovftool = callPackage ../tools/virtualization/ovftool { };
+
+  overcommit = callPackage ../development/tools/overcommit { };
+
+  overmind = callPackage ../applications/misc/overmind { };
+
+  ovh-ttyrec = callPackage ../tools/misc/ovh-ttyrec { };
+
+  ovito = libsForQt5.callPackage ../applications/graphics/ovito {
+    inherit (darwin.apple_sdk.frameworks) VideoDecodeAcceleration;
+  };
+
+  owncloud-client = libsForQt5.callPackage ../applications/networking/owncloud-client { };
+
+  oxefmsynth = callPackage ../applications/audio/oxefmsynth { };
+
+  oxidized = callPackage ../tools/admin/oxidized { };
+
+  oxipng = callPackage ../tools/graphics/oxipng { };
+
+  p2pvc = callPackage ../applications/video/p2pvc {};
+
+  p3x-onenote = callPackage ../applications/office/p3x-onenote { };
+
+  p7zip = callPackage ../tools/archivers/p7zip { };
+
+  packagekit = callPackage ../tools/package-management/packagekit { nix = nixVersions.nix_2_6; };
+
+  packetdrill = callPackage ../tools/networking/packetdrill { };
+
+  pacman = callPackage ../tools/package-management/pacman { };
+
+  paco = callPackage ../development/compilers/paco { };
+
+  padthv1 = libsForQt5.callPackage ../applications/audio/padthv1 { };
+
+  page = callPackage ../tools/misc/page { };
+
+  PageEdit = libsForQt5.callPackage ../applications/office/PageEdit { };
+
+  pagmo2 = callPackage ../development/libraries/pagmo2 { };
+
+  pakcs = callPackage ../development/compilers/pakcs { };
+
+  pal = callPackage ../tools/misc/pal { };
+
+  pandoc = callPackage ../development/tools/pandoc { };
+
+  pandoc-lua-filters = callPackage ../tools/misc/pandoc-lua-filters { };
+
+  pamtester = callPackage ../tools/security/pamtester { };
+
+  pantheon-tweaks = callPackage ../desktops/pantheon/third-party/pantheon-tweaks { };
+
+  paperless-ng = callPackage ../applications/office/paperless-ng { };
+
+  paperwork = callPackage ../applications/office/paperwork/paperwork-gtk.nix { };
+
+  papertrail = callPackage ../tools/text/papertrail { };
+
+  pappl = callPackage ../applications/printing/pappl { };
+
+  par2cmdline = callPackage ../tools/networking/par2cmdline { };
+
+  parallel = callPackage ../tools/misc/parallel { };
+
+  parallel-full = callPackage ../tools/misc/parallel/wrapper.nix { };
+
+  parastoo-fonts = callPackage ../data/fonts/parastoo-fonts { };
+
+  parcellite = callPackage ../tools/misc/parcellite {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  patchutils = callPackage ../tools/text/patchutils { };
+
+  patchutils_0_3_3 = callPackage ../tools/text/patchutils/0.3.3.nix { };
+
+  patchutils_0_4_2 = callPackage ../tools/text/patchutils/0.4.2.nix { };
+
+  parted = callPackage ../tools/misc/parted { };
+
+  passh = callPackage ../tools/networking/passh { };
+
+  paulstretch = callPackage ../applications/audio/paulstretch { };
+
+  pazi = callPackage ../tools/misc/pazi { };
+
+  peep = callPackage ../tools/misc/peep { };
+
+  pell = callPackage ../applications/misc/pell { };
+
+  pepper = callPackage ../tools/admin/salt/pepper { };
+
+  perceptualdiff = callPackage ../tools/graphics/perceptualdiff { };
+
+  percona-xtrabackup = percona-xtrabackup_8_0;
+  percona-xtrabackup_2_4 = callPackage ../tools/backup/percona-xtrabackup/2_4.nix {
+    boost = boost159;
+  };
+  percona-xtrabackup_8_0 = callPackage ../tools/backup/percona-xtrabackup/8_0.nix {
+    boost = boost170;
+  };
+
+  pick = callPackage ../tools/misc/pick { };
+
+  pipe-rename = callPackage ../tools/misc/pipe-rename { };
+
+  pipectl = callPackage ../tools/misc/pipectl { };
+
+  pitivi = callPackage ../applications/video/pitivi { };
+
+  prism = callPackage ../applications/video/prism { };
+
+  pulumi-bin = callPackage ../tools/admin/pulumi { };
+
+  p0f = callPackage ../tools/security/p0f { };
+
+  pngout = callPackage ../tools/graphics/pngout { };
+
+  patch = gnupatch;
+
+  patchage = callPackage ../applications/audio/patchage { };
+
+  pcapfix = callPackage ../tools/networking/pcapfix { };
+
+  pbzip2 = callPackage ../tools/compression/pbzip2 { };
+
+  pcimem = callPackage ../os-specific/linux/pcimem { };
+
+  pciutils = callPackage ../tools/system/pciutils {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  otpauth = callPackage ../tools/security/otpauth { };
+
+  pcsclite = callPackage ../tools/security/pcsclite {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  pcsctools = callPackage ../tools/security/pcsctools { };
+
+  pcsc-cyberjack = callPackage ../tools/security/pcsc-cyberjack { };
+
+  pcsc-safenet = callPackage ../tools/security/pcsc-safenet { };
+
+  pcsc-scm-scl011 = callPackage ../tools/security/pcsc-scm-scl011 { };
+  ifdnfc = callPackage ../tools/security/ifdnfc { };
+
+  pdd = python3Packages.callPackage ../tools/misc/pdd { };
+
+  pdf2djvu = callPackage ../tools/typesetting/pdf2djvu { };
+
+  pdf2odt = callPackage ../tools/typesetting/pdf2odt { };
+
+  pdfcrack = callPackage ../tools/security/pdfcrack { };
+
+  pdfsandwich = callPackage ../tools/typesetting/pdfsandwich { };
+
+  pdftag = callPackage ../tools/graphics/pdftag { };
+
+  pdf2svg = callPackage ../tools/graphics/pdf2svg { };
+
+  pdftoipe = callPackage ../tools/graphics/pdftoipe { };
+
+  pdfminer = with python3Packages; toPythonApplication pdfminer;
+
+  pdf-quench = callPackage ../applications/misc/pdf-quench { };
+
+  jbig2enc = callPackage ../tools/graphics/jbig2enc { };
+
+  pdfarranger = callPackage ../applications/misc/pdfarranger { };
+
+  briss = callPackage ../tools/graphics/briss { };
+
+  brickd = callPackage ../servers/brickd { };
+
+  bully = callPackage ../tools/networking/bully { };
+
+  pcapc = callPackage ../tools/networking/pcapc { };
+
+  pdm = callPackage ../tools/package-management/pdm { };
+
+  pdnsd = callPackage ../tools/networking/pdnsd { };
+
+  peco = callPackage ../tools/text/peco { };
+
+  pg_activity = callPackage ../development/tools/database/pg_activity { };
+
+  pg_checksums = callPackage ../development/tools/database/pg_checksums { };
+
+  pg_flame = callPackage ../tools/misc/pg_flame { };
+
+  pg_top = callPackage ../tools/misc/pg_top { };
+
+  pgcenter = callPackage ../tools/misc/pgcenter { };
+
+  pgmetrics = callPackage ../tools/misc/pgmetrics { };
+
+  pgsync = callPackage ../development/tools/database/pgsync { };
+
+  pdsh = callPackage ../tools/networking/pdsh {
+    rsh = true;          # enable internal rsh implementation
+    ssh = openssh;
+  };
+
+  pfetch = callPackage ../tools/misc/pfetch { };
+
+  pfstools = libsForQt5.callPackage ../tools/graphics/pfstools { };
+
+  philter = callPackage ../tools/networking/philter { };
+
+  phoc = callPackage ../applications/misc/phoc {
+    wlroots = wlroots_0_14;
+  };
+
+  phodav = callPackage ../tools/networking/phodav { };
+
+  photon-rss = callPackage ../applications/networking/feedreaders/photon { };
+
+  pim6sd = callPackage ../servers/pim6sd { };
+
+  phosh = callPackage ../applications/window-managers/phosh { };
+
+  pinentry = libsForQt5.callPackage ../tools/security/pinentry { };
+
+  pinentry-curses = (lib.getOutput "curses" pinentry);
+  pinentry-emacs = (lib.getOutput "emacs" pinentry);
+  pinentry-gtk2 = (lib.getOutput "gtk2" pinentry);
+  pinentry-qt = (lib.getOutput "qt" pinentry);
+  pinentry-gnome = (lib.getOutput "gnome3" pinentry);
+
+  pinentry_mac = callPackage ../tools/security/pinentry/mac.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+    xcbuildHook = if stdenv.targetPlatform.isAarch64 then xcbuildHook else xcbuild6Hook;
+  };
+
+  pinentry-bemenu = callPackage ../tools/security/pinentry-bemenu { };
+
+  pingtcp = callPackage ../tools/networking/pingtcp { };
+
+  pinnwand = callPackage ../servers/pinnwand { };
+
+  pinsel = callPackage ../tools/misc/pinsel { };
+
+  piping-server-rust = callPackage ../servers/piping-server-rust {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  pirate-get = callPackage ../tools/networking/pirate-get { };
+
+  pipr = callPackage ../applications/misc/pipr { };
+
+  pipreqs = callPackage ../tools/misc/pipreqs { };
+
+  pius = callPackage ../tools/security/pius { };
+
+  pixiewps = callPackage ../tools/networking/pixiewps {};
+
+  pinyin-tool = callPackage ../tools/text/pinyin-tool {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  pk2cmd = callPackage ../tools/misc/pk2cmd { };
+
+  plantuml = callPackage ../tools/misc/plantuml { };
+
+  plantuml-server = callPackage ../tools/misc/plantuml-server { };
+
+  plan9port = callPackage ../tools/system/plan9port { };
+
+  platformioPackages = dontRecurseIntoAttrs (callPackage ../development/embedded/platformio { });
+  platformio = platformioPackages.platformio-chrootenv;
+
+  platinum-searcher = callPackage ../tools/text/platinum-searcher { };
+
+  playbar2 = libsForQt5.callPackage ../applications/audio/playbar2 { };
+
+  plujain-ramp = callPackage ../applications/audio/plujain-ramp { };
+
+  inherit (callPackage ../servers/plik { })
+    plik plikd;
+
+  plex = callPackage ../servers/plex { };
+  plexRaw = callPackage ../servers/plex/raw.nix { };
+
+  psitransfer = callPackage ../servers/psitransfer { };
+
+  tab = callPackage ../tools/text/tab { };
+
+  tabview = with python3Packages; toPythonApplication tabview;
+
+  tautulli = python3Packages.callPackage ../servers/tautulli { };
+
+  pleroma = callPackage ../servers/pleroma { };
+
+  ploticus = callPackage ../tools/graphics/ploticus {
+    libpng = libpng12;
+  };
+
+  plotinus = callPackage ../tools/misc/plotinus { };
+
+  plotutils = callPackage ../tools/graphics/plotutils { };
+
+  plowshare = callPackage ../tools/misc/plowshare { };
+
+  pm2 = nodePackages.pm2;
+
+  pngcheck = callPackage ../tools/graphics/pngcheck {
+    zlib = zlib.override {
+      static = true;
+    };
+  };
+
+  pngcrush = callPackage ../tools/graphics/pngcrush { };
+
+  pngnq = callPackage ../tools/graphics/pngnq { };
+
+  pngoptimizer = callPackage ../tools/graphics/pngoptimizer { };
+
+  pngtoico = callPackage ../tools/graphics/pngtoico {
+    libpng = libpng12;
+  };
+
+  pngpp = callPackage ../development/libraries/png++ { };
+
+  pngquant = callPackage ../tools/graphics/pngquant { };
+
+  podiff = callPackage ../tools/text/podiff { };
+
+  podman = callPackage ../applications/virtualization/podman/wrapper.nix { };
+  podman-unwrapped = callPackage ../applications/virtualization/podman { };
+
+  podman-compose = python3Packages.callPackage ../applications/virtualization/podman-compose {};
+
+  podman-tui = callPackage ../applications/virtualization/podman-tui { };
+
+  pod2mdoc = callPackage ../tools/misc/pod2mdoc { };
+
+  poedit = callPackage ../tools/text/poedit {
+    wxGTK31-gtk3 = wxGTK31-gtk3.override { withWebKit = true; };
+  };
+
+  polipo = callPackage ../servers/polipo { };
+
+  polkit_gnome = callPackage ../tools/security/polkit-gnome { };
+
+  poly2tri-c = callPackage ../development/libraries/poly2tri-c { };
+
+  ponysay = callPackage ../tools/misc/ponysay { };
+
+  popfile = callPackage ../tools/text/popfile { };
+
+  poretools = callPackage ../applications/science/biology/poretools { };
+
+  postscript-lexmark = callPackage ../misc/drivers/postscript-lexmark { };
+
+  povray = callPackage ../tools/graphics/povray {
+    boost = boost175;
+  };
+
+  power-profiles-daemon = callPackage ../os-specific/linux/power-profiles-daemon { };
+
+  ppl = callPackage ../development/libraries/ppl { };
+
+  pplatex = callPackage ../tools/typesetting/tex/pplatex { };
+
+  ppp = callPackage ../tools/networking/ppp { };
+
+  pptp = callPackage ../tools/networking/pptp {};
+
+  pptpd = callPackage ../tools/networking/pptpd {};
+
+  pre-commit = callPackage ../tools/misc/pre-commit { };
+
+  pretty-simple = callPackage ../development/tools/pretty-simple { };
+
+  prettyping = callPackage ../tools/networking/prettyping { };
+
+  pritunl-ssh = callPackage ../tools/networking/pritunl-ssh { };
+
+  profile-cleaner = callPackage ../tools/misc/profile-cleaner { };
+
+  profile-sync-daemon = callPackage ../tools/misc/profile-sync-daemon { };
+
+  projectlibre = callPackage ../applications/misc/projectlibre {
+    jre = jre8;
+    jdk = jdk8;
+  };
+
+  projectm = libsForQt5.callPackage ../applications/audio/projectm { };
+
+  proot = callPackage ../tools/system/proot { };
+
+  prototypejs = callPackage ../development/libraries/prototypejs { };
+
+  inherit (callPackages ../tools/security/proxmark3 { gcc-arm-embedded = gcc-arm-embedded-8; })
+    proxmark3 proxmark3-unstable;
+
+  proxmark3-rrg = libsForQt5.callPackage ../tools/security/proxmark3/proxmark3-rrg.nix { };
+
+  proxychains = callPackage ../tools/networking/proxychains { };
+
+  proxychains-ng = callPackage ../tools/networking/proxychains-ng { };
+
+  proxify = callPackage ../tools/networking/proxify { };
+
+  proxysql = callPackage ../servers/sql/proxysql { };
+
+  proxytunnel = callPackage ../tools/misc/proxytunnel {
+    openssl = openssl_1_0_2;
+  };
+
+  prs = callPackage ../tools/security/prs { };
+
+  psw = callPackage ../tools/misc/psw { };
+
+  pws = callPackage ../tools/misc/pws { };
+
+  cntlm = callPackage ../tools/networking/cntlm { };
+
+  cnping = callPackage ../tools/networking/cnping { };
+
+  past-time = python3Packages.callPackage ../tools/misc/past-time { };
+
+  pastebinit = callPackage ../tools/misc/pastebinit { };
+
+  pmacct = callPackage ../tools/networking/pmacct { };
+
+  pmix = callPackage ../development/libraries/pmix { };
+
+  polygraph = callPackage ../tools/networking/polygraph { };
+
+  pr-tracker = callPackage ../servers/pr-tracker { };
+
+  progress = callPackage ../tools/misc/progress { };
+
+  ps3netsrv = callPackage ../servers/ps3netsrv { };
+
+  pscircle = callPackage ../os-specific/linux/pscircle { };
+
+  psmisc = callPackage ../os-specific/linux/psmisc { };
+
+  pssh = callPackage ../tools/networking/pssh { };
+
+  pspg = callPackage ../tools/misc/pspg { };
+
+  pstoedit = callPackage ../tools/graphics/pstoedit { };
+
+  psutils = callPackage ../tools/typesetting/psutils { };
+
+  psensor = callPackage ../tools/system/psensor {
+    libXNVCtrl = linuxPackages.nvidia_x11.settings.libXNVCtrl;
+  };
+
+  pubs = callPackage ../tools/misc/pubs {};
+
+  pulumictl = callPackage ../development/tools/pulumictl { };
+
+  pure-prompt = callPackage ../shells/zsh/pure-prompt { };
+
+  pv = callPackage ../tools/misc/pv { };
+
+  pwgen = callPackage ../tools/security/pwgen { };
+
+  pwgen-secure = callPackage ../tools/security/pwgen-secure { };
+
+  pwnat = callPackage ../tools/networking/pwnat { };
+
+  pwndbg = callPackage ../development/tools/misc/pwndbg { };
+
+  pycflow2dot = with python3.pkgs; toPythonApplication pycflow2dot;
+
+  pydb = callPackage ../development/tools/pydb { };
+
+  pydf = callPackage ../applications/misc/pydf { };
+
+  pympress = callPackage ../applications/office/pympress { };
+
+  pyspread = libsForQt5.callPackage ../applications/office/pyspread { };
+
+  teapot = callPackage ../applications/office/teapot { };
+
+  pyditz = callPackage ../applications/misc/pyditz {
+    pythonPackages = python27Packages;
+  };
+
+  py-spy = callPackage ../development/tools/py-spy { };
+
+  pytrainer = callPackage ../applications/misc/pytrainer { };
+
+  pywal = with python3Packages; toPythonApplication pywal;
+
+  pystring = callPackage ../development/libraries/pystring {};
+
+  rbw = callPackage ../tools/security/rbw {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  remarshal = with python3Packages; toPythonApplication remarshal;
+
+  rehex = callPackage ../applications/editors/rehex {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa IOKit;
+  };
+
+  rig = callPackage ../tools/misc/rig { };
+
+  riseup-vpn = libsForQt5.callPackage ../tools/networking/bitmask-vpn {
+    provider = "riseup";
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  rocket = libsForQt5.callPackage ../tools/graphics/rocket { };
+
+  rtabmap = libsForQt5.callPackage ../applications/video/rtabmap/default.nix { };
+
+  rtaudio = callPackage ../development/libraries/audio/rtaudio {
+    jack = libjack2;
+    inherit (darwin.apple_sdk.frameworks) CoreAudio;
+  };
+
+  rtmidi = callPackage ../development/libraries/audio/rtmidi {
+    jack = libjack2;
+    inherit (darwin.apple_sdk.frameworks) CoreMIDI CoreAudio CoreServices;
+  };
+
+  openmpi = callPackage ../development/libraries/openmpi { };
+
+  ouch = callPackage ../tools/compression/ouch { };
+
+  mpi = openmpi; # this attribute should used to build MPI applications
+
+  ucx = callPackage ../development/libraries/ucx {};
+
+  openmodelica = recurseIntoAttrs (callPackage ../applications/science/misc/openmodelica {});
+
+  prowlarr = callPackage ../servers/prowlarr { };
+
+  qarte = libsForQt5.callPackage ../applications/video/qarte { };
+
+  qlcplus = libsForQt5.callPackage ../applications/misc/qlcplus { };
+
+  qnial = callPackage ../development/interpreters/qnial { };
+
+  quickbms = pkgsi686Linux.callPackage ../tools/archivers/quickbms { };
+
+  q-text-as-data = callPackage ../tools/misc/q-text-as-data { };
+
+  qalculate-gtk = callPackage ../applications/science/math/qalculate-gtk { };
+
+  qastools = libsForQt5.callPackage ../tools/audio/qastools { };
+
+  qdigidoc = libsForQt5.callPackage ../tools/security/qdigidoc { } ;
+
+  qgit = qt5.callPackage ../applications/version-management/git-and-tools/qgit { };
+
+  qgrep = callPackage ../tools/text/qgrep {
+    inherit (darwin.apple_sdk.frameworks) CoreServices CoreFoundation;
+  };
+
+  qhull = callPackage ../development/libraries/qhull { };
+
+  qjournalctl = libsForQt5.callPackage ../applications/system/qjournalctl { };
+
+  qjoypad = callPackage ../tools/misc/qjoypad { };
+
+  qmk = callPackage ../tools/misc/qmk { };
+
+  qodem = callPackage ../tools/networking/qodem { };
+
+  qosmic = libsForQt5.callPackage ../applications/graphics/qosmic { };
+
+  qownnotes = libsForQt514.callPackage ../applications/office/qownnotes { };
+
+  qpdf = callPackage ../development/libraries/qpdf { };
+
+  qprint = callPackage ../tools/text/qprint { };
+
+  qscintilla = libsForQt5.callPackage ../development/libraries/qscintilla { };
+
+  qscintilla-qt4 = callPackage ../development/libraries/qscintilla-qt4 { };
+
+  qshowdiff = callPackage ../tools/text/qshowdiff { };
+
+  qrcp = callPackage ../tools/networking/qrcp { };
+
+  qtikz = libsForQt5.callPackage ../applications/graphics/ktikz { };
+
+  qtspim = libsForQt5.callPackage ../development/tools/misc/qtspim { };
+
+  quadrafuzz = callPackage ../applications/audio/quadrafuzz { };
+
+  quickfix = callPackage ../development/libraries/quickfix { };
+
+  quickjs = callPackage ../development/interpreters/quickjs { };
+
+  quickserve = callPackage ../tools/networking/quickserve { };
+
+  quictls = callPackage ../development/libraries/quictls { };
+
+  quicktun = callPackage ../tools/networking/quicktun { };
+
+  quilt = callPackage ../development/tools/quilt { };
+
+  quota = if stdenv.isLinux then linuxquota else unixtools.quota;
+
+  qvge = libsForQt5.callPackage ../applications/graphics/qvge { };
+
+  qview = libsForQt5.callPackage ../applications/graphics/qview {};
+
+  wayback_machine_downloader = callPackage ../applications/networking/wayback_machine_downloader { };
+
+  wiggle = callPackage ../development/tools/wiggle { };
+
+  radamsa = callPackage ../tools/security/radamsa { };
+
+  radarr = callPackage ../servers/radarr { };
+
+  radeon-profile = libsForQt5.callPackage ../tools/misc/radeon-profile { };
+
+  radsecproxy = callPackage ../tools/networking/radsecproxy { };
+
+  radvd = callPackage ../tools/networking/radvd { };
+
+  rainbowstream = with python3.pkgs; toPythonApplication rainbowstream;
+
+  rambox = callPackage ../applications/networking/instant-messengers/rambox { };
+
+  rambox-pro = callPackage ../applications/networking/instant-messengers/rambox/pro.nix { };
+
+  ranger = callPackage ../applications/misc/ranger { };
+
+  rar = callPackage ../tools/archivers/rar { };
+
+  rarcrack = callPackage ../tools/security/rarcrack { };
+
+  rarian = callPackage ../development/libraries/rarian { };
+
+  ratman = callPackage ../tools/networking/ratman { };
+
+  ratools = callPackage ../tools/networking/ratools { };
+
+  ratt = callPackage ../applications/misc/ratt { };
+
+  rc = callPackage ../shells/rc { };
+
+  rcon = callPackage ../tools/networking/rcon { };
+
+  rdap = callPackage ../tools/networking/rdap { };
+
+  rdbtools = callPackage ../development/tools/rdbtools { python = python3; };
+
+  rdma-core = callPackage ../os-specific/linux/rdma-core { };
+
+  rdrview = callPackage ../tools/networking/rdrview {};
+
+  real_time_config_quick_scan = callPackage ../applications/audio/real_time_config_quick_scan { };
+
+  realesrgan-ncnn-vulkan = callPackage ../tools/graphics/realesrgan-ncnn-vulkan { };
+
+  react-native-debugger = callPackage ../development/tools/react-native-debugger { };
+
+  read-edid = callPackage ../os-specific/linux/read-edid { };
+
+  redir = callPackage ../tools/networking/redir { };
+
+  redmine = callPackage ../applications/version-management/redmine { };
+
+  redsocks = callPackage ../tools/networking/redsocks { };
+
+  rep = callPackage ../development/tools/rep { };
+
+  repseek = callPackage ../applications/science/biology/repseek { };
+
+  reicast = callPackage ../applications/emulators/reicast { };
+
+  reredirect = callPackage ../tools/misc/reredirect { };
+
+  retext = libsForQt5.callPackage ../applications/editors/retext { };
+
+  inherit (callPackage ../tools/security/rekor { })
+    rekor-cli
+    rekor-server;
+
+  richgo = callPackage ../development/tools/richgo {  };
+
+  rs = callPackage ../tools/text/rs { };
+
+  rst2html5 = callPackage ../tools/text/rst2html5 { };
+
+  rt = callPackage ../servers/rt { };
+
+  rtmpdump = callPackage ../tools/video/rtmpdump { };
+  rtmpdump_gnutls = rtmpdump.override { gnutlsSupport = true; opensslSupport = false; };
+
+  rtptools = callPackage ../tools/networking/rtptools { };
+
+  rtss = callPackage ../development/tools/misc/rtss { };
+
+  realvnc-vnc-viewer = callPackage ../tools/admin/realvnc-vnc-viewer {};
+
+  reaverwps = callPackage ../tools/networking/reaver-wps {};
+
+  reaverwps-t6x = callPackage ../tools/networking/reaver-wps-t6x {};
+
+  rx = callPackage ../applications/graphics/rx { };
+
+  qt-box-editor = libsForQt5.callPackage ../applications/misc/qt-box-editor { };
+
+  recutils = callPackage ../tools/misc/recutils { };
+
+  recoll = libsForQt5.callPackage ../applications/search/recoll { };
+
+  redoc-cli = nodePackages.redoc-cli;
+
+  reflex = callPackage ../development/tools/reflex { };
+
+  reiser4progs = callPackage ../tools/filesystems/reiser4progs { };
+
+  reiserfsprogs = callPackage ../tools/filesystems/reiserfsprogs { };
+
+  remarkjs = callPackage ../development/web/remarkjs { };
+
+  alarm-clock-applet = callPackage ../tools/misc/alarm-clock-applet { };
+
+  remind = callPackage ../tools/misc/remind { };
+
+  remmina = callPackage ../applications/networking/remote/remmina { };
+
+  rename = callPackage ../tools/misc/rename { };
+
+  renameutils = callPackage ../tools/misc/renameutils { };
+
+  renderdoc = libsForQt5.callPackage ../applications/graphics/renderdoc { };
+
+  replace = callPackage ../tools/text/replace { };
+
+  resvg = callPackage ../tools/graphics/resvg { };
+
+  reckon = callPackage ../tools/text/reckon { };
+
+  recoverjpeg = callPackage ../tools/misc/recoverjpeg { };
+
+  reftools = callPackage ../development/tools/reftools { };
+
+  remote-touchpad = callPackage ../tools/inputmethods/remote-touchpad { };
+
+  reposurgeon = callPackage ../applications/version-management/reposurgeon { };
+
+  reptyr = callPackage ../os-specific/linux/reptyr {};
+
+  rescuetime = libsForQt5.callPackage ../applications/misc/rescuetime { };
+
+  inherit (callPackage ../development/misc/resholve { })
+    resholve resholvePackage resholveScript resholveScriptBin;
+
+  restool = callPackage ../os-specific/linux/restool {};
+
+  reuse = callPackage ../tools/package-management/reuse { };
+
+  inherit (nodePackages) reveal-md;
+
+  rewritefs = callPackage ../os-specific/linux/rewritefs { };
+
+  rdiff-backup = callPackage ../tools/backup/rdiff-backup { };
+
+  rdfind = callPackage ../tools/filesystems/rdfind { };
+
+  rhash = callPackage ../tools/security/rhash { };
+
+  riemann_c_client = callPackage ../tools/misc/riemann-c-client { };
+  riemann-tools = callPackage ../tools/misc/riemann-tools { };
+
+  ripmime = callPackage ../tools/networking/ripmime {};
+
+  rkflashtool = callPackage ../tools/misc/rkflashtool { };
+
+  rkrlv2 = callPackage ../applications/audio/rkrlv2 {};
+
+  rmlint = callPackage ../tools/misc/rmlint {
+    inherit (python3Packages) sphinx;
+  };
+
+  rng-tools = callPackage ../tools/security/rng-tools { };
+
+  rnnoise = callPackage ../development/libraries/rnnoise { };
+
+  rnnoise-plugin = callPackage ../development/libraries/rnnoise-plugin {};
+
+  rnote = callPackage ../applications/graphics/rnote {
+    inherit (gst_all_1) gstreamer;
+  };
+
+  rnp = callPackage ../tools/security/rnp { };
+
+  rnv = callPackage ../tools/text/xml/rnv { };
+
+  rosie = callPackage ../tools/text/rosie { };
+
+  rounded-mgenplus = callPackage ../data/fonts/rounded-mgenplus { };
+
+  roundup = callPackage ../tools/misc/roundup { };
+
+  routino = callPackage ../tools/misc/routino { };
+
+  rq = callPackage ../development/tools/rq { };
+
+  rs-git-fsmonitor = callPackage ../applications/version-management/git-and-tools/rs-git-fsmonitor { };
+
+  rsnapshot = callPackage ../tools/backup/rsnapshot { };
+
+  rlwrap = callPackage ../tools/misc/rlwrap { };
+
+  rmtrash = callPackage ../tools/misc/rmtrash { };
+
+  roc-toolkit = callPackage ../development/libraries/audio/roc-toolkit { };
+
+  rockbox_utility = libsForQt5.callPackage ../tools/misc/rockbox-utility { };
+
+  rosegarden = libsForQt514.callPackage ../applications/audio/rosegarden { };
+
+  rowhammer-test = callPackage ../tools/system/rowhammer-test { };
+
+  rpPPPoE = callPackage ../tools/networking/rp-pppoe { };
+
+  rpi-imager = libsForQt5.callPackage ../tools/misc/rpi-imager { };
+
+  rpiboot = callPackage ../development/misc/rpiboot { };
+
+  rpm = callPackage ../tools/package-management/rpm {
+    python = python3;
+    lua = lua5_4;
+  };
+
+  rpm-ostree = callPackage ../tools/misc/rpm-ostree {
+    gperf = gperf_3_0;
+  };
+
+  rpm2targz = callPackage ../tools/archivers/rpm2targz { };
+
+  rpmextract = callPackage ../tools/archivers/rpmextract { };
+
+  rrdtool = callPackage ../tools/misc/rrdtool { };
+
+  rset = callPackage ../tools/admin/rset { };
+
+  rshijack = callPackage ../tools/networking/rshijack { };
+
+  rsibreak = libsForQt5.callPackage ../applications/misc/rsibreak { };
+
+  rslint = callPackage ../development/tools/rslint { };
+
+  rss-bridge-cli = callPackage ../applications/misc/rss-bridge-cli { };
+
+  rss2email = callPackage ../applications/networking/feedreaders/rss2email {
+    pythonPackages = python3Packages;
+  };
+
+  rsstail = callPackage ../applications/networking/feedreaders/rsstail { };
+
+  rubber = callPackage ../tools/typesetting/rubber { };
+
+  rubocop = rubyPackages.rubocop;
+
+  ruffle = callPackage ../applications/emulators/ruffle { };
+
+  runningx = callPackage ../tools/X11/runningx { };
+
+  rund = callPackage ../development/tools/rund { };
+
+  runzip = callPackage ../tools/archivers/runzip { };
+
+  unzoo = callPackage ../tools/archivers/unzoo { };
+
+  ruplacer = callPackage ../tools/text/ruplacer {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rust-code-analysis = callPackage ../development/tools/rust-code-analysis { };
+
+  rust-motd = callPackage ../tools/misc/rust-motd {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rust-petname = callPackage ../tools/text/rust-petname { };
+
+  rustcat = callPackage ../tools/networking/rustcat {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rustdesk = callPackage ../applications/networking/remote/rustdesk { };
+
+  rustscan = callPackage ../tools/security/rustscan {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rw = callPackage ../tools/misc/rw { };
+
+  rxp = callPackage ../tools/text/xml/rxp { };
+
+  rzip = callPackage ../tools/compression/rzip { };
+
+  s-tui = callPackage ../tools/system/s-tui { };
+
+  s3backer = callPackage ../tools/filesystems/s3backer { };
+
+  s3bro = callPackage ../tools/admin/s3bro { };
+
+  s3fs = callPackage ../tools/filesystems/s3fs { };
+
+  s3cmd = python3Packages.callPackage ../tools/networking/s3cmd { };
+
+  s3rs = callPackage ../tools/networking/s3rs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  s4cmd = callPackage ../tools/networking/s4cmd { };
+
+  s5cmd = callPackage ../tools/networking/s5cmd { };
+
+  s3gof3r = callPackage ../tools/networking/s3gof3r { };
+
+  s6-dns = skawarePackages.s6-dns;
+
+  s6-linux-init = skawarePackages.s6-linux-init;
+
+  s6-linux-utils = skawarePackages.s6-linux-utils;
+
+  s6-networking = skawarePackages.s6-networking;
+
+  s6-portable-utils = skawarePackages.s6-portable-utils;
+
+  sacad = callPackage ../tools/misc/sacad { };
+
+  sad = callPackage ../tools/text/sad { };
+
+  safecopy = callPackage ../tools/system/safecopy { };
+
+  sacd = callPackage ../tools/cd-dvd/sacd { };
+
+  safe = callPackage ../tools/security/safe { };
+
+  safety-cli = with python3.pkgs; toPythonApplication safety;
+
+  safe-rm = callPackage ../tools/system/safe-rm { };
+
+  safeeyes = callPackage ../applications/misc/safeeyes { };
+
+  sahel-fonts = callPackage ../data/fonts/sahel-fonts { };
+
+  saldl = callPackage ../tools/networking/saldl { };
+
+  salt = callPackage ../tools/admin/salt {};
+
+  salut_a_toi = callPackage ../applications/networking/instant-messengers/salut-a-toi {};
+
+  samim-fonts = callPackage ../data/fonts/samim-fonts {};
+
+  saml2aws = callPackage ../tools/security/saml2aws {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  sammler = callPackage ../tools/security/sammler {};
+
+  samplicator = callPackage ../tools/networking/samplicator { };
+
+  sanctity = callPackage ../tools/misc/sanctity { };
+
+  sandboxfs = callPackage ../tools/filesystems/sandboxfs { };
+
+  sasquatch = callPackage ../tools/filesystems/sasquatch { };
+
+  sasview = libsForQt5.callPackage ../applications/science/misc/sasview {};
+
+  scanbd = callPackage ../tools/graphics/scanbd { };
+
+  scdoc = callPackage ../tools/typesetting/scdoc { };
+
+  scmpuff = callPackage ../applications/version-management/git-and-tools/scmpuff { };
+
+  scorecard = callPackage ../tools/security/scorecard { };
+
+  scream = callPackage ../applications/audio/scream { };
+
+  scimark = callPackage ../misc/scimark { };
+
+  screen = callPackage ../tools/misc/screen {
+    inherit (darwin.apple_sdk.libs) utmp;
+  };
+
+  scrcpy = callPackage ../misc/scrcpy {
+    inherit (androidenv.androidPkgs_9_0) platform-tools;
+  };
+
+  screen-message = callPackage ../tools/X11/screen-message { };
+
+  screencloud = libsForQt5.callPackage ../applications/graphics/screencloud { };
+
+  screenkey = callPackage ../applications/video/screenkey { };
+
+  scrub = callPackage ../tools/misc/scrub { };
+
+  scfbuild = python3.pkgs.callPackage ../tools/misc/scfbuild { };
+
+  scriptaculous = callPackage ../development/libraries/scriptaculous { };
+
+  scrot = callPackage ../tools/graphics/scrot { };
+
+  scrypt = callPackage ../tools/security/scrypt { };
+
+  sd = callPackage ../tools/text/sd {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  sd-mux-ctrl = callPackage ../tools/misc/sd-mux-ctrl { };
+
+  sd-switch = callPackage ../os-specific/linux/sd-switch { };
+
+  sdate = callPackage ../tools/misc/sdate { };
+
+  sdat2img = callPackage ../tools/filesystems/sdat2img { };
+
+  sdcv = callPackage ../applications/misc/sdcv { };
+
+  sdl-jstest = callPackage ../tools/misc/sdl-jstest { };
+
+  senpai = callPackage ../applications/networking/irc/senpai { };
+
+  skim = callPackage ../tools/misc/skim { };
+
+  seaweedfs = callPackage ../applications/networking/seaweedfs { };
+
+  sec = callPackage ../tools/admin/sec { };
+
+  seccure = callPackage ../tools/security/seccure { };
+
+  secp256k1 = callPackage ../tools/security/secp256k1 { };
+
+  securefs = callPackage ../tools/filesystems/securefs { };
+
+  seexpr = callPackage ../development/compilers/seexpr { };
+
+  setroot = callPackage  ../tools/X11/setroot { };
+
+  setserial = callPackage ../tools/system/setserial { };
+
+  setzer = callPackage ../applications/editors/setzer { };
+
+  seqdiag = with python3Packages; toPythonApplication seqdiag;
+
+  sequoia = callPackage ../tools/security/sequoia {
+    pythonPackages = python3Packages;
+  };
+
+  servefile = python2.pkgs.callPackage ../tools/networking/servefile { };
+
+  sewer = callPackage ../tools/admin/sewer { };
+
+  sfeed = callPackage ../tools/misc/sfeed { };
+
+  sftpman = callPackage ../tools/filesystems/sftpman { };
+
+  screenfetch = callPackage ../tools/misc/screenfetch { };
+
+  sg3_utils = callPackage ../tools/system/sg3_utils { };
+
+  sha1collisiondetection = callPackage ../tools/security/sha1collisiondetection { };
+
+  shadowsocks-libev = callPackage ../tools/networking/shadowsocks-libev { };
+
+  shadered = callPackage ../development/tools/shadered { };
+
+  go-shadowsocks2 = callPackage ../tools/networking/go-shadowsocks2 { };
+
+  shabnam-fonts = callPackage ../data/fonts/shabnam-fonts { };
+
+  shadowsocks-rust = callPackage ../tools/networking/shadowsocks-rust {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  shadowsocks-v2ray-plugin = callPackage ../tools/networking/shadowsocks-v2ray-plugin { };
+
+  sharutils = callPackage ../tools/archivers/sharutils { };
+
+  shelldap = callPackage ../tools/misc/shelldap { };
+
+  shellspec = callPackage ../tools/misc/shellspec { };
+
+  schema2ldif = callPackage ../tools/text/schema2ldif { };
+
+  sharedown = callPackage ../tools/misc/sharedown { };
+
+  shen-sbcl = callPackage ../development/interpreters/shen-sbcl { };
+
+  shen-sources = callPackage ../development/interpreters/shen-sources { };
+
+  shocco = callPackage ../tools/text/shocco { };
+
+  shopify-themekit = callPackage ../development/web/shopify-themekit { };
+
+  shorewall = callPackage ../tools/networking/shorewall { };
+
+  shotwell = callPackage ../applications/graphics/shotwell { };
+
+  shout = nodePackages.shout;
+
+  shrikhand = callPackage ../data/fonts/shrikhand { };
+
+  shunit2 = callPackage ../tools/misc/shunit2 { };
+
+  sic = callPackage ../applications/networking/irc/sic { };
+
+  siege = callPackage ../tools/networking/siege {};
+
+  sieve-connect = callPackage ../applications/networking/sieve-connect {};
+
+  sigal = callPackage ../applications/misc/sigal { };
+
+  sigi = callPackage ../applications/misc/sigi { };
+
+  sigil = libsForQt5.callPackage ../applications/editors/sigil { };
+
+  signalbackup-tools = callPackage ../applications/networking/instant-messengers/signalbackup-tools { };
+
+  signald = callPackage ../applications/networking/instant-messengers/signald { };
+
+  signal-cli = callPackage ../applications/networking/instant-messengers/signal-cli { };
+
+  signal-desktop = callPackage ../applications/networking/instant-messengers/signal-desktop { };
+
+  slither-analyzer = with python3Packages; toPythonApplication slither-analyzer;
+
+  sigma-cli = callPackage ../tools/security/sigma-cli { };
+
+  signify = callPackage ../tools/security/signify { };
+
+  # aka., pgp-tools
+  signing-party = callPackage ../tools/security/signing-party { };
+
+  signumone-ks = callPackage ../applications/misc/signumone-ks { };
+
+  silc_client = callPackage ../applications/networking/instant-messengers/silc-client { };
+
+  silc_server = callPackage ../servers/silc-server { };
+
+  sile = callPackage ../tools/typesetting/sile { };
+
+  silver-searcher = callPackage ../tools/text/silver-searcher { };
+
+  simpleproxy = callPackage ../tools/networking/simpleproxy { };
+
+  simplescreenrecorder = libsForQt5.callPackage ../applications/video/simplescreenrecorder { };
+
+  sipsak = callPackage ../tools/networking/sipsak { };
+
+  sipvicious = python3Packages.callPackage ../tools/security/sipvicious { };
+
+  siril = callPackage ../applications/science/astronomy/siril { };
+
+  sisco.lv2 = callPackage ../applications/audio/sisco.lv2 { };
+
+  sit = callPackage ../applications/version-management/sit {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  sixpair = callPackage ../tools/misc/sixpair {};
+
+  sketchybar = callPackage ../os-specific/darwin/sketchybar {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa SkyLight;
+  };
+
+  skippy-xd = callPackage ../tools/X11/skippy-xd {};
+
+  sks = callPackage ../servers/sks {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_12;
+  };
+
+  skydns = callPackage ../servers/skydns { };
+
+  sipcalc = callPackage ../tools/networking/sipcalc { };
+
+  skribilo = callPackage ../tools/typesetting/skribilo {
+    tex = texlive.combined.scheme-small;
+  };
+
+  skytemple = callPackage ../applications/misc/skytemple {};
+
+  sleuthkit = callPackage ../tools/system/sleuthkit {};
+
+  # Not updated upstream since 2018, doesn't support qt newer than 5.12
+  sleepyhead = libsForQt512.callPackage ../applications/misc/sleepyhead {};
+
+  slides = callPackage ../applications/misc/slides { };
+
+  slirp4netns = callPackage ../tools/networking/slirp4netns { };
+
+  slowlorust = callPackage ../tools/networking/slowlorust { };
+
+  slsnif = callPackage ../tools/misc/slsnif { };
+
+  slstatus = callPackage ../applications/misc/slstatus {
+    conf = config.slstatus.conf or null;
+  };
+
+  smartdns = callPackage ../tools/networking/smartdns { };
+
+  smartmontools = callPackage ../tools/system/smartmontools {
+    inherit (darwin.apple_sdk.frameworks) IOKit ApplicationServices;
+  };
+
+  smarty3 = callPackage ../development/libraries/smarty3 { };
+  smarty3-i18n = callPackage ../development/libraries/smarty3-i18n { };
+
+  smbnetfs = callPackage ../tools/filesystems/smbnetfs {};
+
+  smenu = callPackage ../tools/misc/smenu { };
+
+  smesh = callPackage ../development/libraries/smesh {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  smu = callPackage ../tools/text/smu { };
+
+  smug = callPackage ../tools/misc/smug { };
+
+  smpq = callPackage ../applications/misc/smpq { };
+
+  sn0int = callPackage ../tools/security/sn0int { };
+
+  snabb = callPackage ../tools/networking/snabb { };
+
+  snallygaster = callPackage ../tools/security/snallygaster { };
+
+  snapcast = callPackage ../applications/audio/snapcast {
+    pulseaudioSupport = config.pulseaudio or stdenv.isLinux;
+  };
+
+  snapdragon-profiler = callPackage ../tools/graphics/snapdragon-profiler { };
+
+  snet = callPackage ../tools/networking/snet { };
+
+  sng = callPackage ../tools/graphics/sng {
+    libpng = libpng12;
+  };
+
+  snmpcheck = callPackage ../tools/networking/snmpcheck {};
+
+  sniffglue = callPackage ../tools/networking/sniffglue { };
+
+  snort = callPackage ../applications/networking/ids/snort { };
+
+  so = callPackage ../development/tools/so {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  soapui = callPackage ../applications/networking/soapui {
+    jdk = jdk11;
+  };
+
+  spglib = callPackage ../development/libraries/spglib { };
+
+  spicy = callPackage ../development/tools/spicy { };
+
+  spire = callPackage ../tools/security/spire { };
+  # to match naming of other package repositories
+  spire-agent = spire.agent;
+  spire-server = spire.server;
+
+  spoof-mac = python3Packages.callPackage ../tools/networking/spoof-mac { };
+
+  ssh-askpass-fullscreen = callPackage ../tools/networking/ssh-askpass-fullscreen { };
+
+  sshguard = callPackage ../tools/security/sshguard {};
+
+  sshping = callPackage ../tools/networking/sshping {};
+
+  ssh-chat = callPackage ../applications/networking/instant-messengers/ssh-chat { };
+
+  ssh-to-age = callPackage ../tools/security/ssh-to-age { };
+
+  ssh-to-pgp = callPackage ../tools/security/ssh-to-pgp { };
+
+  suricata = callPackage ../applications/networking/ids/suricata {
+    python = python3;
+  };
+
+  sof-firmware = callPackage ../os-specific/linux/firmware/sof-firmware { };
+
+  softhsm = callPackage ../tools/security/softhsm {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  sonar-scanner-cli = callPackage ../tools/security/sonar-scanner-cli { };
+
+  solr = callPackage ../servers/search/solr { };
+
+  solvespace = callPackage ../applications/graphics/solvespace { };
+
+  sonarr = callPackage ../servers/sonarr { };
+
+  sonata = callPackage ../applications/audio/sonata { };
+
+  sony-headphones-client = callPackage ../applications/audio/sony-headphones-client { };
+
+  soundconverter = callPackage ../applications/audio/soundconverter { };
+
+  soundkonverter = libsForQt5.soundkonverter;
+
+  soundwireserver = callPackage ../applications/audio/soundwireserver { };
+
+  sozu = callPackage ../servers/sozu { };
+
+  sparsehash = callPackage ../development/libraries/sparsehash { };
+
+  spectre-meltdown-checker = callPackage ../tools/security/spectre-meltdown-checker { };
+
+  spigot = callPackage ../tools/misc/spigot { };
+
+  spiped = callPackage ../tools/networking/spiped { };
+
+  sqliteman = callPackage ../applications/misc/sqliteman { };
+
+  sqls = callPackage ../applications/misc/sqls { };
+
+  stdman = callPackage ../data/documentation/stdman { };
+
+  stderred = callPackage ../tools/misc/stderred { };
+
+  steck = callPackage ../servers/pinnwand/steck.nix { };
+
+  stenc = callPackage ../tools/backup/stenc { };
+
+  stm32loader = with python3Packages; toPythonApplication stm32loader;
+
+  stremio = qt5.callPackage ../applications/video/stremio { };
+
+  sunwait = callPackage ../applications/misc/sunwait { };
+
+  surface-control = callPackage ../applications/misc/surface-control { };
+
+  syntex = callPackage ../tools/graphics/syntex {};
+
+  synapse-admin = callPackage ../tools/admin/synapse-admin {};
+
+  sl = callPackage ../tools/misc/sl { };
+
+  socat = callPackage ../tools/networking/socat { };
+
+  sockperf = callPackage ../tools/networking/sockperf { };
+
+  solaar = callPackage ../applications/misc/solaar {};
+
+  solanum = callPackage ../servers/irc/solanum {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  solc-select = with python3Packages; toPythonApplication solc-select;
+
+  sourceHighlight = callPackage ../tools/text/source-highlight { };
+
+  spacebar = callPackage ../os-specific/darwin/spacebar {
+    inherit (darwin.apple_sdk.frameworks)
+      Carbon Cocoa ScriptingBridge SkyLight;
+  };
+
+  spaceFM = callPackage ../applications/misc/spacefm { };
+
+  speech-denoiser = callPackage ../applications/audio/speech-denoiser {};
+
+  splot = haskell.lib.compose.justStaticExecutables haskellPackages.splot;
+
+  spotdl = callPackage ../tools/audio/spotdl { };
+
+  squashfsTools = callPackage ../tools/filesystems/squashfs { };
+
+  squashfs-tools-ng = callPackage ../tools/filesystems/squashfs-tools-ng { };
+
+  squashfuse = callPackage ../tools/filesystems/squashfuse { };
+
+  srcml = callPackage ../applications/version-management/srcml { };
+
+  srt-live-server = callPackage ../applications/video/srt-live-server { };
+
+  srt-to-vtt-cl = callPackage ../tools/cd-dvd/srt-to-vtt-cl { };
+
+  srtrelay = callPackage ../applications/video/srtrelay { };
+
+  sourcehut = callPackage ../applications/version-management/sourcehut { };
+
+  sshfs-fuse = callPackage ../tools/filesystems/sshfs-fuse { };
+  sshfs = sshfs-fuse; # added 2017-08-14
+
+  sshlatex = callPackage ../tools/typesetting/sshlatex { };
+
+  sshuttle = callPackage ../tools/security/sshuttle { };
+
+  ssldump = callPackage ../tools/networking/ssldump { };
+
+  sslsplit = callPackage ../tools/networking/sslsplit { };
+
+  sstp = callPackage ../tools/networking/sstp {};
+
+  stgit = callPackage ../applications/version-management/git-and-tools/stgit { };
+
+  strip-nondeterminism = perlPackages.strip-nondeterminism;
+
+  structure-synth = callPackage ../tools/graphics/structure-synth { };
+
+  su-exec = callPackage ../tools/security/su-exec {};
+
+  subberthehut = callPackage ../tools/misc/subberthehut { };
+
+  subgit = callPackage ../applications/version-management/git-and-tools/subgit { };
+
+  subsurface = libsForQt514.callPackage ../applications/misc/subsurface { };
+
+  sudo = callPackage ../tools/security/sudo { };
+
+  suidChroot = callPackage ../tools/system/suid-chroot { };
+
+  sundtek = callPackage ../misc/drivers/sundtek { };
+
+  sunxi-tools = callPackage ../development/tools/sunxi-tools { };
+
+  sumorobot-manager = python3Packages.callPackage ../applications/science/robotics/sumorobot-manager { };
+
+  super = callPackage ../tools/security/super { };
+
+  supertag = callPackage ../tools/filesystems/supertag { };
+
+  supertux-editor = callPackage ../applications/editors/supertux-editor { };
+
+  svgbob = callPackage ../tools/graphics/svgbob { };
+
+  ssb = callPackage ../tools/security/ssb { };
+
+  ssb-patchwork = callPackage ../applications/networking/ssb-patchwork { };
+
+  ssdeep = callPackage ../tools/security/ssdeep { };
+
+  ssh-ident = callPackage ../tools/networking/ssh-ident { };
+
+  sshpass = callPackage ../tools/networking/sshpass { };
+
+  sslscan = callPackage ../tools/security/sslscan { };
+
+  sslmate = callPackage ../development/tools/sslmate { };
+
+  sshoogr = callPackage ../tools/networking/sshoogr { };
+
+  ssmtp = callPackage ../tools/networking/ssmtp { };
+
+  ssocr = callPackage ../applications/misc/ssocr { };
+
+  ssss = callPackage ../tools/security/ssss { };
+
+  stabber = callPackage ../misc/stabber { };
+
+  staticjinja = with python3.pkgs; toPythonApplication staticjinja;
+
+  stevenblack-blocklist  = callPackage ../tools/networking/stevenblack-blocklist { };
+
+  stress = callPackage ../tools/system/stress { };
+
+  stress-ng = callPackage ../tools/system/stress-ng { };
+
+  stressapptest = callPackage ../tools/system/stressapptest { };
+
+  stoken = callPackage ../tools/security/stoken (config.stoken or {});
+
+  storeBackup = callPackage ../tools/backup/store-backup { };
+
+  stow = callPackage ../tools/misc/stow { };
+  xstow = callPackage ../tools/misc/xstow { };
+
+  stun = callPackage ../tools/networking/stun { };
+
+  stunnel = callPackage ../tools/networking/stunnel { };
+
+  stuntman = callPackage ../tools/networking/stuntman { };
+
+  stutter = haskell.lib.compose.justStaticExecutables haskellPackages.stutter;
+
+  strongswan    = callPackage ../tools/networking/strongswan { };
+  strongswanTNC = strongswan.override { enableTNC = true; };
+  strongswanNM  = strongswan.override { enableNetworkManager = true; };
+
+  stylish-haskell = haskell.lib.compose.justStaticExecutables haskellPackages.stylish-haskell;
+
+  su = shadow.su;
+
+  subjs = callPackage ../tools/security/subjs { };
+
+  subsonic = callPackage ../servers/misc/subsonic { };
+
+  subfinder = callPackage ../tools/networking/subfinder { };
+
+  subzerod = with python3Packages; toPythonApplication subzerod;
+
+  suckit = callPackage ../tools/networking/suckit {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  surfraw = callPackage ../tools/networking/surfraw { };
+
+  swagger-codegen = callPackage ../tools/networking/swagger-codegen { };
+
+  swagger-codegen3 = callPackage ../tools/networking/swagger-codegen3 { };
+
+  swapview = callPackage ../os-specific/linux/swapview { };
+
+  swtpm = callPackage ../tools/security/swtpm { };
+
+  svn2git = callPackage ../applications/version-management/git-and-tools/svn2git {
+    git = gitSVN;
+  };
+
+  svnfs = callPackage ../tools/filesystems/svnfs { };
+
+  svn-all-fast-export = libsForQt5.callPackage ../applications/version-management/git-and-tools/svn-all-fast-export { };
+
+  svtplay-dl = callPackage ../tools/misc/svtplay-dl { };
+
+  sycl-info = callPackage ../development/libraries/sycl-info { };
+
+  symengine = callPackage ../development/libraries/symengine { };
+
+  sysbench = callPackage ../development/tools/misc/sysbench {};
+
+  system-config-printer = callPackage ../tools/misc/system-config-printer {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    libxml2 = libxml2Python;
+  };
+
+  systembus-notify = callPackage ../applications/misc/systembus-notify { };
+
+  stricat = callPackage ../tools/security/stricat { };
+
+  staruml = callPackage ../tools/misc/staruml { };
+
+  stone-phaser = callPackage ../applications/audio/stone-phaser { };
+
+  systrayhelper = callPackage ../tools/misc/systrayhelper {};
+
+  syft = callPackage ../tools/admin/syft { };
+
+  Sylk = callPackage ../applications/networking/Sylk {};
+
+  privoxy = callPackage ../tools/networking/privoxy {
+    w3m = w3m-batch;
+  };
+
+  swaks = callPackage ../tools/networking/swaks { };
+
+  swiften = callPackage ../development/libraries/swiften { };
+
+  squeekboard = callPackage ../applications/accessibility/squeekboard { };
+
+  sx = callPackage ../tools/X11/sx {
+    inherit (xorg) xauth xorgserver;
+  };
+
+  systemdgenie = libsForQt5.callPackage ../applications/system/systemdgenie { };
+
+  t = callPackage ../tools/misc/t { };
+
+  tabnine = callPackage ../development/tools/tabnine { };
+
+  tab-rs = callPackage ../tools/misc/tab-rs {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  tagtime = callPackage ../applications/misc/tagtime { };
+
+  inherit (callPackages ../applications/networking/taler { })
+    taler-exchange taler-merchant;
+
+  tangram = callPackage ../applications/networking/instant-messengers/tangram { };
+
+  t1utils = callPackage ../tools/misc/t1utils { };
+
+  talkfilters = callPackage ../misc/talkfilters {};
+
+  znapzend = callPackage ../tools/backup/znapzend { };
+
+  tar2ext4 = callPackage ../tools/filesystems/tar2ext4 { };
+
+  targetcli = callPackage ../os-specific/linux/targetcli { };
+
+  target-isns = callPackage ../os-specific/linux/target-isns { };
+
+  tarlz = callPackage ../tools/archivers/tarlz { };
+
+  tarsnap = callPackage ../tools/backup/tarsnap { };
+
+  tarsnapper = callPackage ../tools/backup/tarsnapper { };
+
+  tarssh = callPackage ../servers/tarssh { };
+
+  tartan = callPackage ../development/tools/analysis/tartan {};
+
+  tartube = callPackage ../applications/video/tartube { };
+
+  tartube-yt-dlp = callPackage ../applications/video/tartube {
+    youtube-dl = yt-dlp;
+  };
+
+  tayga = callPackage ../tools/networking/tayga { };
+
+  tcpcrypt = callPackage ../tools/security/tcpcrypt { };
+
+  tcptraceroute = callPackage ../tools/networking/tcptraceroute { };
+
+  tboot = callPackage ../tools/security/tboot { };
+
+  tagutil = callPackage ../applications/audio/tagutil { };
+
+  tcpdump = callPackage ../tools/networking/tcpdump { };
+
+  tcpflow = callPackage ../tools/networking/tcpflow { };
+
+  tcpkali = callPackage ../applications/networking/tcpkali { };
+
+  tcpreplay = callPackage ../tools/networking/tcpreplay {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreServices;
+  };
+
+  tdns-cli = callPackage ../tools/networking/tdns-cli { };
+
+  tea = callPackage ../tools/misc/tea { };
+
+  inherit (nodePackages) teck-programmer;
+
+  ted = callPackage ../tools/typesetting/ted { };
+
+  teamviewer = libsForQt515.callPackage ../applications/networking/remote/teamviewer { };
+
+  teleconsole = callPackage ../tools/misc/teleconsole { };
+
+  telegraf = callPackage ../servers/monitoring/telegraf { };
+
+  teleport = callPackage ../servers/teleport {};
+
+  telepresence = callPackage ../tools/networking/telepresence {
+    pythonPackages = python3Packages;
+  };
+
+  telepresence2 = callPackage ../tools/networking/telepresence2 { };
+
+  teler = callPackage ../tools/security/teler { };
+
+  telescope = callPackage ../applications/networking/browsers/telescope { };
+
+  termcolor = callPackage ../development/libraries/termcolor { };
+
+  termscp = callPackage ../tools/networking/termscp {
+    inherit (darwin.apple_sdk.frameworks) Foundation Security;
+  };
+
+  termius = callPackage ../applications/networking/termius { };
+
+  termplay = callPackage ../tools/misc/termplay { };
+
+  testEqualDerivation = callPackage ../build-support/test-equal-derivation.nix { };
+
+  tetrd = callPackage ../applications/networking/tetrd { };
+
+  tewisay = callPackage ../tools/misc/tewisay { };
+
+  texmacs = if stdenv.isDarwin
+    then callPackage ../applications/editors/texmacs/darwin.nix {
+      inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa;
+      tex = texlive.combined.scheme-small;
+      extraFonts = true;
+    } else libsForQt5.callPackage ../applications/editors/texmacs {
+      tex = texlive.combined.scheme-small;
+      extraFonts = true;
+    };
+
+  texmaker = libsForQt5.callPackage ../applications/editors/texmaker { };
+
+  texstudio = libsForQt5.callPackage ../applications/editors/texstudio { };
+
+  textadept = callPackage ../applications/editors/textadept/10 { };
+
+  textadept11 = callPackage ../applications/editors/textadept/11 { };
+
+  texworks = libsForQt5.callPackage ../applications/editors/texworks { };
+
+  tex-match = callPackage ../tools/typesetting/tex/tex-match { };
+
+  tf2pulumi = callPackage ../development/tools/tf2pulumi { };
+
+  thc-hydra = callPackage ../tools/security/thc-hydra { };
+
+  thc-ipv6 = callPackage ../tools/security/thc-ipv6 { };
+
+  thedesk = callPackage ../applications/misc/thedesk {
+    electron = electron_14;
+  };
+
+  theharvester = callPackage ../tools/security/theharvester { };
+
+  inherit (nodePackages) thelounge;
+
+  theLoungePlugins = with lib; let
+    pkgs = filterAttrs (name: _: hasPrefix "thelounge-" name) nodePackages;
+    getPackagesWithPrefix = prefix: mapAttrs' (name: pkg: nameValuePair (removePrefix ("thelounge-" + prefix + "-") name) pkg)
+      (filterAttrs (name: _: hasPrefix ("thelounge-" + prefix + "-") name) pkgs);
+  in
+  recurseIntoAttrs {
+    plugins = recurseIntoAttrs (getPackagesWithPrefix "plugin");
+    themes = recurseIntoAttrs (getPackagesWithPrefix "theme");
+  };
+
+  thefuck = python3Packages.callPackage ../tools/misc/thefuck { };
+
+  thicket = callPackage ../applications/version-management/git-and-tools/thicket { };
+
+  thiefmd = callPackage ../applications/editors/thiefmd { };
+
+  thin-provisioning-tools = callPackage ../tools/misc/thin-provisioning-tools {  };
+
+  thinkpad-scripts = python3.pkgs.callPackage ../tools/misc/thinkpad-scripts { };
+
+  threema-desktop = callPackage ../applications/networking/instant-messengers/threema-desktop { };
+
+  tidy-viewer = callPackage ../tools/text/tidy-viewer { };
+
+  tile38 = callPackage ../servers/tile38 { };
+
+  tiled = libsForQt5.callPackage ../applications/editors/tiled { };
+
+  tiledb = callPackage ../development/libraries/tiledb { };
+
+  tilem = callPackage ../applications/emulators/tilem { };
+
+  timemachine = callPackage ../applications/audio/timemachine { };
+
+  timelapse-deflicker = callPackage ../applications/graphics/timelapse-deflicker { };
+
+  timetrap = callPackage ../applications/office/timetrap { };
+
+  timetagger = callPackage ../servers/timetagger { };
+
+  timezonemap = callPackage ../development/libraries/timezonemap { };
+
+  tzupdate = callPackage ../applications/misc/tzupdate { };
+
+  tinc = callPackage ../tools/networking/tinc { };
+
+  tie = callPackage ../development/tools/misc/tie { };
+
+  tikzit = libsForQt5.callPackage ../tools/typesetting/tikzit { };
+
+  tinc_pre = callPackage ../tools/networking/tinc/pre.nix { };
+
+  tinycbor = callPackage ../development/libraries/tinycbor { };
+
+  tiny8086 = callPackage ../applications/emulators/tiny8086 { };
+
+  tinyemu = callPackage ../applications/emulators/tinyemu { };
+
+  tinyfecvpn = callPackage ../tools/networking/tinyfecvpn { };
+
+  tinyobjloader = callPackage ../development/libraries/tinyobjloader { };
+
+  tinyprog = callPackage ../development/embedded/fpga/tinyprog { };
+
+  tinyproxy = callPackage ../tools/networking/tinyproxy { };
+
+  time-decode = callPackage ../tools/misc/time-decode { };
+
+  tio = callPackage ../tools/misc/tio { };
+
+  tiv = callPackage ../applications/misc/tiv { };
+
+  tldr = callPackage ../tools/misc/tldr { };
+
+  tldr-hs = haskellPackages.tldr;
+
+  tlspool = callPackage ../tools/networking/tlspool { };
+
+  tmate = callPackage ../tools/misc/tmate { };
+
+  tmate-ssh-server = callPackage ../servers/tmate-ssh-server { };
+
+  tmpwatch = callPackage ../tools/misc/tmpwatch  { };
+
+  tmpmail = callPackage ../applications/networking/tmpmail { };
+
+  tmux = callPackage ../tools/misc/tmux { };
+
+  tmux-cssh = callPackage ../tools/misc/tmux-cssh { };
+
+  tmuxp = callPackage ../tools/misc/tmuxp { };
+
+  tmuxinator = callPackage ../tools/misc/tmuxinator { };
+
+  tmux-mem-cpu-load = callPackage ../tools/misc/tmux-mem-cpu-load { };
+
+  tmux-xpanes = callPackage ../tools/misc/tmux-xpanes { };
+
+  tmuxPlugins = recurseIntoAttrs (callPackage ../misc/tmux-plugins { });
+
+  tmsu = callPackage ../tools/filesystems/tmsu { };
+
+  toilet = callPackage ../tools/misc/toilet { };
+
+  tokei = callPackage ../development/tools/misc/tokei {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tokio-console = callPackage ../development/tools/tokio-console { };
+
+  toml2nix = (callPackage ../tools/toml2nix { }).toml2nix { };
+
+  topgrade = callPackage ../tools/misc/topgrade {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  top-git = callPackage ../applications/version-management/git-and-tools/topgit { };
+
+  tor = callPackage ../tools/security/tor { };
+
+  tor-browser-bundle-bin = callPackage ../applications/networking/browsers/tor-browser-bundle-bin { };
+
+  touchegg = callPackage ../tools/inputmethods/touchegg { };
+
+  torrent7z = callPackage ../tools/archivers/torrent7z { };
+
+  torsocks = callPackage ../tools/security/tor/torsocks.nix { };
+
+  toss = callPackage ../tools/networking/toss { };
+
+  tox-node = callPackage ../tools/networking/tox-node { };
+
+  toxvpn = callPackage ../tools/networking/toxvpn { };
+
+  toybox = callPackage ../tools/misc/toybox { };
+
+  tpmmanager = callPackage ../applications/misc/tpmmanager { };
+
+  tpm-quote-tools = callPackage ../tools/security/tpm-quote-tools { };
+
+  tpm-tools = callPackage ../tools/security/tpm-tools { };
+
+  tpm-luks = callPackage ../tools/security/tpm-luks { };
+
+  tpm2-abrmd = callPackage ../tools/security/tpm2-abrmd { };
+
+  tpm2-pkcs11 = callPackage ../misc/tpm2-pkcs11 { };
+
+  tpm2-tools = callPackage ../tools/security/tpm2-tools { };
+
+  trezor-udev-rules = callPackage ../os-specific/linux/trezor-udev-rules {};
+
+  trezorctl = with python3Packages; toPythonApplication trezor;
+
+  trezord = callPackage ../servers/trezord {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  trezor_agent = with python3Packages; toPythonApplication trezor_agent;
+
+  trezor-suite = callPackage ../applications/blockchains/trezor-suite { };
+
+  trunk = callPackage ../development/tools/trunk {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  tthsum = callPackage ../applications/misc/tthsum { };
+
+  ttp = with python3.pkgs; toPythonApplication ttp;
+
+  chaps = callPackage ../tools/security/chaps { };
+
+  trace-cmd = callPackage ../os-specific/linux/trace-cmd { };
+
+  kernelshark = libsForQt5.callPackage ../os-specific/linux/trace-cmd/kernelshark.nix { };
+
+  traceroute = callPackage ../tools/networking/traceroute { };
+
+  tracebox = callPackage ../tools/networking/tracebox { };
+
+  tracefilegen = callPackage ../development/tools/analysis/garcosim/tracefilegen { };
+
+  tracefilesim = callPackage ../development/tools/analysis/garcosim/tracefilesim { };
+
+  transcrypt = callPackage ../applications/version-management/git-and-tools/transcrypt { };
+
+  transifex-client = python3.pkgs.callPackage ../tools/text/transifex-client { };
+
+  translate-shell = callPackage ../applications/misc/translate-shell { };
+
+  translatepy = with python3.pkgs; toPythonApplication translatepy;
+
+  trash-cli = callPackage ../tools/misc/trash-cli { };
+
+  trenchbroom = libsForQt5.callPackage ../applications/misc/trenchbroom {
+    inherit (xorg) libXxf86vm;
+  };
+
+  trickle = callPackage ../tools/networking/trickle {};
+
+  inherit (nodePackages) triton;
+
+  triggerhappy = callPackage ../tools/inputmethods/triggerhappy {};
+
+  inherit (callPackage ../applications/office/trilium {})
+    trilium-desktop
+    trilium-server
+    ;
+
+  trousers = callPackage ../tools/security/trousers { };
+
+  trx = callPackage ../tools/audio/trx { };
+
+  tryton = callPackage ../applications/office/tryton { };
+
+  trytond = with python3Packages; toPythonApplication trytond;
+
+  tuntox = callPackage ../tools/networking/tuntox { };
+
+  omapd = callPackage ../tools/security/omapd { };
+
+  ttf2pt1 = callPackage ../tools/misc/ttf2pt1 { };
+
+  ttfautohint = libsForQt5.callPackage ../tools/misc/ttfautohint {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+  ttfautohint-nox = ttfautohint.override { enableGUI = false; };
+
+  tty-clock = callPackage ../tools/misc/tty-clock { };
+
+  tty-share = callPackage ../applications/misc/tty-share { };
+
+  ttyplot = callPackage ../tools/misc/ttyplot { };
+
+  ttygif = callPackage ../tools/misc/ttygif { };
+
+  ttylog = callPackage ../tools/misc/ttylog { };
+
+  ipbt = callPackage ../tools/misc/ipbt { };
+
+  tuhi = callPackage ../applications/misc/tuhi { };
+
+  tuir = callPackage ../applications/misc/tuir { };
+
+  tunnelto = callPackage ../tools/networking/tunnelto {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tuptime = callPackage ../tools/system/tuptime { };
+
+  turses = callPackage ../applications/networking/instant-messengers/turses { };
+
+  tutanota-desktop = callPackage ../applications/networking/mailreaders/tutanota-desktop { };
+
+  tv = callPackage ../tools/text/tv { };
+
+  tvm = callPackage ../development/compilers/tvm { };
+
+  oysttyer = callPackage ../applications/networking/instant-messengers/oysttyer { };
+
+  twilight = callPackage ../tools/graphics/twilight {
+    libX11 = xorg.libX11;
+  };
+
+  twitch-chat-downloader = python3Packages.callPackage ../applications/misc/twitch-chat-downloader { };
+
+  twitterBootstrap = callPackage ../development/web/twitter-bootstrap {};
+
+  twtxt = python3Packages.callPackage ../applications/networking/twtxt { };
+
+  twurl = callPackage ../tools/misc/twurl { };
+
+  txr = callPackage ../tools/misc/txr { inherit (llvmPackages_latest) stdenv; };
+
+  txt2man = callPackage ../tools/misc/txt2man { };
+
+  txt2tags = callPackage ../tools/text/txt2tags { };
+
+  txtw = callPackage ../tools/misc/txtw { };
+
+  tydra = callPackage ../tools/misc/tydra { };
+
+  typos = callPackage ../development/tools/typos { };
+
+  tz = callPackage ../tools/misc/tz { };
+
+  u9fs = callPackage ../servers/u9fs { };
+
+  ua = callPackage ../tools/networking/ua { };
+
+  ubidump = python3Packages.callPackage ../tools/filesystems/ubidump { };
+
+  ubridge = callPackage ../tools/networking/ubridge { };
+
+  ubertooth = callPackage ../applications/radio/ubertooth { };
+
+  ucarp = callPackage ../servers/ucarp { };
+
+  ucl = callPackage ../development/libraries/ucl { };
+
+  ucspi-tcp = callPackage ../tools/networking/ucspi-tcp { };
+
+  udftools = callPackage ../tools/filesystems/udftools {};
+
+  udpt = callPackage ../servers/udpt { };
+
+  udptunnel = callPackage ../tools/networking/udptunnel { };
+
+  uftrace = callPackage ../development/tools/uftrace { };
+
+  uget = callPackage ../tools/networking/uget { };
+
+  uget-integrator = callPackage ../tools/networking/uget-integrator { };
+
+  ugrep = callPackage ../tools/text/ugrep { };
+
+  uif2iso = callPackage ../tools/cd-dvd/uif2iso { };
+
+  uivonim = callPackage ../applications/editors/uivonim { };
+
+  umlet = callPackage ../tools/misc/umlet { };
+
+  unetbootin = libsForQt5.callPackage ../tools/cd-dvd/unetbootin { };
+
+  unfs3 = callPackage ../servers/unfs3 { };
+
+  unoconv = callPackage ../tools/text/unoconv { };
+
+  unrtf = callPackage ../tools/text/unrtf { };
+
+  unrpa = with python38Packages; toPythonApplication unrpa;
+
+  untex = callPackage ../tools/text/untex { };
+
+  untrunc-anthwlock = callPackage ../tools/video/untrunc-anthwlock { };
+
+  up = callPackage ../tools/misc/up { };
+
+  upterm = callPackage ../tools/misc/upterm { };
+
+  upx = callPackage ../tools/compression/upx { };
+
+  uq = callPackage ../misc/uq { };
+
+  uqmi = callPackage ../tools/networking/uqmi { };
+
+  urdfdom = callPackage ../development/libraries/urdfdom {};
+
+  urdfdom-headers = callPackage ../development/libraries/urdfdom-headers {};
+
+  uriparser = callPackage ../development/libraries/uriparser {};
+
+  urlscan = callPackage ../applications/misc/urlscan { };
+
+  urlview = callPackage ../applications/misc/urlview {};
+
+  urn-timer = callPackage ../tools/misc/urn-timer { };
+
+  ursadb = callPackage ../servers/ursadb {};
+
+  usbmuxd = callPackage ../tools/misc/usbmuxd {};
+
+  ustreamer = callPackage ../applications/video/ustreamer { };
+
+  usync = callPackage ../applications/misc/usync { };
+
+  uwc = callPackage ../tools/text/uwc { };
+
+  uwsgi = callPackage ../servers/uwsgi { };
+
+  uwufetch = callPackage ../tools/misc/uwufetch { };
+
+  v2ray = callPackage ../tools/networking/v2ray { };
+
+  v2ray-domain-list-community = callPackage ../data/misc/v2ray-domain-list-community { };
+
+  v2ray-geoip = callPackage ../data/misc/v2ray-geoip { };
+
+  vacuum = callPackage ../applications/networking/instant-messengers/vacuum {};
+
+  vampire = callPackage ../applications/science/logic/vampire {};
+
+  variety = callPackage ../applications/misc/variety {};
+
+  vdmfec = callPackage ../applications/backup/vdmfec {};
+
+  vk-cli = callPackage ../applications/networking/instant-messengers/vk-cli { };
+
+  vk-messenger = callPackage ../applications/networking/instant-messengers/vk-messenger {};
+
+  volatility = callPackage ../tools/security/volatility { };
+
+  volatility3 = callPackage ../tools/security/volatility3 { };
+
+  vbetool = callPackage ../tools/system/vbetool { };
+
+  vcsi = callPackage ../tools/video/vcsi { };
+
+  vde2 = callPackage ../tools/networking/vde2 { };
+
+  vboot_reference = callPackage ../tools/system/vboot_reference {};
+
+  vcftools = callPackage ../applications/science/biology/vcftools { };
+
+  vcsh = callPackage ../applications/version-management/vcsh { };
+
+  vcs_query = callPackage ../tools/misc/vcs_query { };
+
+  vcstool = callPackage ../development/tools/vcstool { };
+
+  vend = callPackage ../development/tools/vend { };
+
+  verco = callPackage ../applications/version-management/verco { };
+
+  verilator = callPackage ../applications/science/electronics/verilator {};
+
+  verilog = callPackage ../applications/science/electronics/verilog {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  versus = callPackage ../applications/networking/versus { };
+
+  vgrep = callPackage ../tools/text/vgrep { };
+
+  vhd2vl = callPackage ../applications/science/electronics/vhd2vl { };
+
+  video2midi = callPackage ../tools/audio/video2midi {
+    pythonPackages = python3Packages;
+  };
+
+  vifm = callPackage ../applications/misc/vifm { };
+
+  vifm-full = callPackage ../applications/misc/vifm {
+    mediaSupport = true;
+    inherit lib udisks2 python3;
+  };
+
+  via = callPackage ../tools/misc/via {};
+
+  vial = callPackage ../tools/misc/vial {};
+
+  viking = callPackage ../applications/misc/viking { };
+
+  vim-vint = callPackage ../development/tools/vim-vint { };
+
+  vimer = callPackage ../tools/misc/vimer { };
+
+  vimpager = callPackage ../tools/misc/vimpager { };
+  vimpager-latest = callPackage ../tools/misc/vimpager/latest.nix { };
+
+  vimwiki-markdown = python3Packages.callPackage ../tools/misc/vimwiki-markdown { };
+
+  visidata = (newScope python3Packages) ../applications/misc/visidata {
+  };
+
+  vit = callPackage ../applications/misc/vit { };
+
+  viu = callPackage ../tools/graphics/viu { };
+
+  vix = callPackage ../tools/misc/vix { };
+
+  vkBasalt = callPackage ../tools/graphics/vkBasalt {
+    vkBasalt32 = pkgsi686Linux.vkBasalt;
+  };
+
+  vnc2flv = callPackage ../tools/video/vnc2flv {};
+
+  vncrec = callPackage ../tools/video/vncrec { };
+
+  vo-amrwbenc = callPackage ../development/libraries/vo-amrwbenc { };
+
+  vo-aacenc = callPackage ../development/libraries/vo-aacenc { };
+
+  vobcopy = callPackage ../tools/cd-dvd/vobcopy { };
+
+  vobsub2srt = callPackage ../tools/cd-dvd/vobsub2srt { };
+
+  void = callPackage ../tools/misc/void { };
+
+  volume_key = callPackage ../development/libraries/volume-key { };
+
+  vorbisgain = callPackage ../tools/misc/vorbisgain { };
+
+  vpnc = callPackage ../tools/networking/vpnc { };
+
+  vpnc-scripts = callPackage ../tools/networking/vpnc-scripts { };
+
+  vpn-slice = python3Packages.callPackage ../tools/networking/vpn-slice { };
+
+  vp = callPackage ../applications/misc/vp {
+    # Enable next line for console graphics. Note that
+    # it requires `sixel` enabled terminals such as mlterm
+    # or xterm -ti 340
+    SDL = SDL_sixel;
+  };
+
+  vtm = callPackage ../tools/misc/vtm { };
+
+  witness = callPackage ../tools/security/witness { };
+
+  openconnect = openconnect_gnutls;
+
+  openconnect_openssl = callPackage ../tools/networking/openconnect {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+    gnutls = null;
+  };
+
+  openconnect_gnutls = callPackage ../tools/networking/openconnect {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+    openssl = null;
+  };
+
+  openconnect_head = callPackage ../tools/networking/openconnect {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+    head = true;
+    openssl = null;
+  };
+
+  globalprotect-openconnect = libsForQt5.callPackage ../tools/networking/globalprotect-openconnect { };
+
+  ding-libs = callPackage ../tools/misc/ding-libs { };
+
+  sssd = callPackage ../os-specific/linux/sssd {
+    inherit (perlPackages) Po4a;
+  };
+
+  sentry-cli = callPackage ../development/tools/sentry-cli {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  sentry-native = callPackage ../development/libraries/sentry-native { };
+
+  waifu2x-converter-cpp = callPackage ../tools/graphics/waifu2x-converter-cpp {
+    inherit (darwin.apple_sdk.frameworks) OpenCL;
+  };
+
+  wakatime = python2Packages.callPackage ../tools/misc/wakatime { };
+
+  weather = callPackage ../applications/misc/weather { };
+
+  wego = callPackage ../applications/misc/wego { };
+
+  wal_e = callPackage ../tools/backup/wal-e { };
+
+  watchexec = callPackage ../tools/misc/watchexec {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Foundation;
+  };
+
+  watchman = callPackage ../development/tools/watchman {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+    autoconf = buildPackages.autoconf269;
+  };
+
+  wavefunctioncollapse = callPackage ../tools/graphics/wavefunctioncollapse {};
+
+  wbox = callPackage ../tools/networking/wbox {};
+
+  webassemblyjs-cli = nodePackages."@webassemblyjs/cli";
+  webassemblyjs-repl = nodePackages."@webassemblyjs/repl";
+  wasm-strip = nodePackages."@webassemblyjs/wasm-strip";
+  wasm-text-gen = nodePackages."@webassemblyjs/wasm-text-gen";
+  wast-refmt = nodePackages."@webassemblyjs/wast-refmt";
+
+  wasm-bindgen-cli = callPackage ../development/tools/wasm-bindgen-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    nodejs = nodejs_latest;
+  };
+
+  welkin = callPackage ../tools/graphics/welkin {};
+
+  wemux = callPackage ../tools/misc/wemux { };
+
+  wf-recorder = callPackage ../applications/video/wf-recorder { };
+
+  whipper = callPackage ../applications/audio/whipper { };
+
+  whitebophir = callPackage ../servers/web-apps/whitebophir { };
+
+  whois = callPackage ../tools/networking/whois { };
+
+  wifish = callPackage ../tools/networking/wifish { };
+
+  wifite2 = callPackage ../tools/networking/wifite2 { };
+
+  wimboot = callPackage ../tools/misc/wimboot { };
+
+  wire = callPackage ../development/tools/wire { };
+
+  wireguard-tools = callPackage ../tools/networking/wireguard-tools { };
+
+  wg-friendly-peer-names = callPackage ../tools/networking/wg-friendly-peer-names { };
+
+  wg-netmanager = callPackage ../tools/networking/wg-netmanager {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  woff2 = callPackage ../development/web/woff2 { };
+
+  woof = callPackage ../tools/misc/woof { };
+
+  wootility = callPackage ../tools/misc/wootility {
+    inherit (xorg) libxkbfile;
+  };
+
+  wormhole-william = callPackage ../tools/networking/wormhole-william { };
+
+  wpscan = callPackage ../tools/security/wpscan { };
+
+  wsmancli = callPackage ../tools/system/wsmancli {};
+
+  wstunnel = haskell.lib.compose.justStaticExecutables haskellPackages.wstunnel;
+
+  wolfebin = callPackage ../tools/networking/wolfebin {
+    python = python2;
+  };
+
+  xautoclick = callPackage ../applications/misc/xautoclick {};
+
+  xl2tpd = callPackage ../tools/networking/xl2tpd { };
+
+  xe = callPackage ../tools/system/xe { };
+
+  xplr = callPackage ../applications/misc/xplr {};
+
+  testdisk = libsForQt5.callPackage ../tools/system/testdisk { };
+
+  testdisk-qt = testdisk.override { enableQt = true; };
+
+  textql = callPackage ../development/tools/textql {
+    buildGoPackage = buildGo116Package;
+  };
+
+  html2text = callPackage ../tools/text/html2text { };
+
+  html-tidy = callPackage ../tools/text/html-tidy { };
+
+  html-xml-utils = callPackage ../tools/text/xml/html-xml-utils { };
+
+  htmldoc = callPackage ../tools/typesetting/htmldoc {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration Foundation;
+  };
+
+  htmltest = callPackage ../development/tools/htmltest { };
+
+  rcm = callPackage ../tools/misc/rcm {};
+
+  td = callPackage ../tools/misc/td { };
+
+  tegola = callPackage ../servers/tegola {};
+
+  tftp-hpa = callPackage ../tools/networking/tftp-hpa {};
+
+  tigervnc = callPackage ../tools/admin/tigervnc {};
+
+  tightvnc = callPackage ../tools/admin/tightvnc {
+    fontDirectories = [ xorg.fontadobe75dpi xorg.fontmiscmisc xorg.fontcursormisc
+      xorg.fontbhlucidatypewriter75dpi ];
+  };
+
+  time = callPackage ../tools/misc/time { };
+
+  tweet-hs = haskell.lib.compose.justStaticExecutables haskellPackages.tweet-hs;
+
+  tweeny = callPackage ../development/libraries/tweeny { };
+
+  qfsm = callPackage ../applications/science/electronics/qfsm { };
+
+  tkgate = callPackage ../applications/science/electronics/tkgate/1.x.nix { };
+
+  tm = callPackage ../tools/system/tm { };
+
+  tradcpp = callPackage ../development/tools/tradcpp { };
+
+  traitor = callPackage ../tools/security/traitor { };
+
+  tre = callPackage ../development/libraries/tre { };
+
+  tremor-rs = callPackage ../tools/misc/tremor-rs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  truecrack = callPackage ../tools/security/truecrack { };
+  truecrack-cuda = truecrack.override { cudaSupport = true; };
+
+  ts = callPackage ../tools/system/ts { };
+
+  ttmkfdir = callPackage ../tools/misc/ttmkfdir { };
+
+  ttwatch = callPackage ../tools/misc/ttwatch { };
+
+  turbovnc = callPackage ../tools/admin/turbovnc {
+    # fontDirectories = [ xorg.fontadobe75dpi xorg.fontmiscmisc xorg.fontcursormisc xorg.fontbhlucidatypewriter75dpi ];
+    libjpeg_turbo = libjpeg_turbo.override { enableJava = true; };
+  };
+
+  udunits = callPackage ../development/libraries/udunits { };
+
+  uftp = callPackage ../servers/uftp {};
+
+  uhttpmock = callPackage ../development/libraries/uhttpmock { };
+
+  uim = callPackage ../tools/inputmethods/uim {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  uhub = callPackage ../servers/uhub { };
+
+  unclutter = callPackage ../tools/misc/unclutter { };
+
+  unclutter-xfixes = callPackage ../tools/misc/unclutter-xfixes { };
+
+  unbound = callPackage ../tools/networking/unbound {};
+
+  unbound-with-systemd = unbound.override {
+    withSystemd = true;
+  };
+
+  unbound-full = unbound.override {
+    withSystemd = true;
+    withDoH = true;
+    withECS = true;
+    withDNSCrypt = true;
+    withDNSTAP = true;
+    withTFO = true;
+    withRedis = true;
+  };
+
+  unicorn = callPackage ../development/libraries/unicorn {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  units = callPackage ../tools/misc/units {
+    enableCurrenciesUpdater = true;
+    pythonPackages = python3Packages;
+  };
+
+  unittest-cpp = callPackage ../development/libraries/unittest-cpp { };
+
+  unrar = callPackage ../tools/archivers/unrar { };
+
+  unrar-wrapper = python3Packages.callPackage ../tools/archivers/unrar-wrapper { };
+
+  vul = callPackage ../applications/misc/vul { };
+
+  xar = callPackage ../tools/compression/xar { };
+
+  xarchive = callPackage ../tools/archivers/xarchive { };
+
+  xarchiver = callPackage ../tools/archivers/xarchiver { };
+
+  xbanish = callPackage ../tools/X11/xbanish { };
+
+  xbrightness = callPackage ../tools/X11/xbrightness { };
+
+  xdg-launch = callPackage ../applications/misc/xdg-launch { };
+
+  xkbvalidate = callPackage ../tools/X11/xkbvalidate { };
+
+  xkeysnail = callPackage ../tools/X11/xkeysnail { };
+
+  xfstests = callPackage ../tools/misc/xfstests { };
+
+  xprintidle-ng = callPackage ../tools/X11/xprintidle-ng {};
+
+  xscast = callPackage ../applications/video/xscast { };
+
+  xsettingsd = callPackage ../tools/X11/xsettingsd { };
+
+  xsensors = callPackage ../os-specific/linux/xsensors { };
+
+  xspim = callPackage ../development/tools/misc/xspim { };
+
+  xcruiser = callPackage ../applications/misc/xcruiser { };
+
+  xwallpaper = callPackage ../tools/X11/xwallpaper { };
+
+  gxkb = callPackage ../applications/misc/gxkb { };
+
+  xxkb = callPackage ../applications/misc/xxkb { };
+
+  ugarit = callPackage ../tools/backup/ugarit {
+    inherit (chickenPackages_4) eggDerivation fetchegg;
+  };
+
+  ugarit-manifest-maker = callPackage ../tools/backup/ugarit-manifest-maker {
+    inherit (chickenPackages_4) eggDerivation fetchegg;
+  };
+
+  unar = callPackage ../tools/archivers/unar {
+    inherit (darwin.apple_sdk.frameworks) Foundation AppKit;
+    stdenv = clangStdenv;
+  };
+
+  unp = callPackage ../tools/archivers/unp { };
+
+  unshield = callPackage ../tools/archivers/unshield { };
+
+  unzip = callPackage ../tools/archivers/unzip { };
+
+  unzipNLS = lowPrio (unzip.override { enableNLS = true; });
+
+  undmg = callPackage ../tools/archivers/undmg { };
+
+  uptimed = callPackage ../tools/system/uptimed { };
+
+  upwork = callPackage ../applications/misc/upwork { };
+
+  urjtag = callPackage ../tools/misc/urjtag { };
+
+  urlhunter = callPackage ../tools/security/urlhunter { };
+
+  urlwatch = callPackage ../tools/networking/urlwatch { };
+
+  valum = callPackage ../development/web/valum { };
+
+  inherit (callPackages ../servers/varnish { })
+    varnish60 varnish70;
+  inherit (callPackages ../servers/varnish/packages.nix { })
+    varnish60Packages varnish70Packages;
+
+  varnishPackages = varnish70Packages;
+  varnish = varnishPackages.varnish;
+
+  hitch = callPackage ../servers/hitch { };
+
+  veracrypt = callPackage ../applications/misc/veracrypt {
+    wxGTK = wxGTK30;
+  };
+
+  vlan = callPackage ../tools/networking/vlan { };
+
+  vmtouch = callPackage ../tools/misc/vmtouch { };
+
+  vncdo = with python3Packages; toPythonApplication vncdo;
+
+  volumeicon = callPackage ../tools/audio/volumeicon { };
+
+  waf = callPackage ../development/tools/build-managers/waf { };
+  wafHook = callPackage ../development/tools/build-managers/wafHook { };
+
+  wagyu = callPackage ../tools/misc/wagyu {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  wakelan = callPackage ../tools/networking/wakelan { };
+
+  wavemon = callPackage ../tools/networking/wavemon { };
+
+  wdfs = callPackage ../tools/filesystems/wdfs { };
+
+  wdiff = callPackage ../tools/text/wdiff { };
+
+  wdisplays = callPackage ../tools/graphics/wdisplays { };
+
+  webalizer = callPackage ../tools/networking/webalizer { };
+
+  weighttp = callPackage ../tools/networking/weighttp { };
+
+  wget = callPackage ../tools/networking/wget {
+    libpsl = null;
+  };
+
+  wget2 = callPackage ../tools/networking/wget2 {
+    # update breaks grub2
+    gnulib = pkgs.gnulib.overrideAttrs (_: rec {
+      version = "20210208";
+      src = fetchgit {
+        url = "https://git.savannah.gnu.org/r/gnulib.git";
+        rev = "0b38e1d69f03d3977d7ae7926c1efeb461a8a971";
+        sha256 = "06bj9y8wcfh35h653yk8j044k7h5g82d2j3z3ib69rg0gy1xagzp";
+      };
+    });
+  };
+
+  wgpu-utils = callPackage ../tools/graphics/wgpu-utils { };
+
+  wg-bond = callPackage ../applications/networking/wg-bond { };
+
+  which = callPackage ../tools/system/which { };
+
+  whsniff = callPackage ../applications/networking/sniffers/whsniff { };
+
+  wiiuse = callPackage ../development/libraries/wiiuse {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Foundation IOBluetooth;
+  };
+
+  woeusb = callPackage ../tools/misc/woeusb { };
+
+  woeusb-ng = callPackage ../tools/misc/woeusb-ng { };
+
+  wslu = callPackage ../tools/system/wslu { };
+
+  chase = callPackage ../tools/system/chase { };
+
+  wingpanel-indicator-ayatana = callPackage ../desktops/pantheon/third-party/wingpanel-indicator-ayatana { };
+
+  wimlib = callPackage ../tools/archivers/wimlib { };
+
+  wipe = callPackage ../tools/security/wipe { };
+
+  wireguard-go = callPackage ../tools/networking/wireguard-go { };
+
+  wkhtmltopdf = libsForQt514.callPackage ../tools/graphics/wkhtmltopdf { };
+
+  wml = callPackage ../development/web/wml { };
+
+  wmc-mpris = callPackage ../applications/misc/web-media-controller { };
+
+  wol = callPackage ../tools/networking/wol { };
+
+  wolf-shaper = callPackage ../applications/audio/wolf-shaper { };
+
+  wpgtk = callPackage ../tools/X11/wpgtk { };
+
+  wrap = callPackage ../tools/text/wrap { };
+
+  wring = nodePackages.wring;
+
+  wrk = callPackage ../tools/networking/wrk { };
+
+  wrk2 = callPackage ../tools/networking/wrk2 { };
+
+  wuzz = callPackage ../tools/networking/wuzz { };
+
+  wv = callPackage ../tools/misc/wv { };
+
+  wv2 = callPackage ../tools/misc/wv2 { };
+
+  wyrd = callPackage ../tools/misc/wyrd {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_05;
+  };
+
+  x86info = callPackage ../os-specific/linux/x86info { };
+
+  x11_ssh_askpass = callPackage ../tools/networking/x11-ssh-askpass { };
+
+  xbursttools = callPackage ../tools/misc/xburst-tools {
+    # It needs a cross compiler for mipsel to build the firmware it will
+    # load into the Ben Nanonote
+    gccCross = pkgsCross.ben-nanonote.buildPackages.gccCrossStageStatic;
+    autoconf = buildPackages.autoconf269;
+  };
+
+  clipnotify = callPackage ../tools/misc/clipnotify { };
+
+  clipbuzz = callPackage ../tools/misc/clipbuzz { };
+
+  xclip = callPackage ../tools/misc/xclip { };
+
+  xcur2png = callPackage ../tools/graphics/xcur2png { };
+
+  xcwd = callPackage ../tools/X11/xcwd { };
+
+  xtitle = callPackage ../tools/misc/xtitle { };
+
+  xdelta = callPackage ../tools/compression/xdelta { };
+  xdeltaUnstable = callPackage ../tools/compression/xdelta/unstable.nix { };
+
+  xdot = with python3Packages; toPythonApplication xdot;
+
+  xdummy = callPackage ../tools/misc/xdummy { };
+
+  xdxf2slob = callPackage ../tools/misc/xdxf2slob { };
+
+  xe-guest-utilities = callPackage ../tools/virtualization/xe-guest-utilities { };
+
+  xflux = callPackage ../tools/misc/xflux { };
+  xflux-gui = python3Packages.callPackage ../tools/misc/xflux/gui.nix { };
+
+  xfsprogs = callPackage ../tools/filesystems/xfsprogs { };
+  libxfs = xfsprogs.dev;
+
+  xml2 = callPackage ../tools/text/xml/xml2 { };
+
+  xmldiff = python3Packages.callPackage ../tools/text/xml/xmldiff { };
+
+  xmlformat = callPackage ../tools/text/xml/xmlformat { };
+
+  xmlroff = callPackage ../tools/typesetting/xmlroff { };
+
+  xmloscopy = callPackage ../tools/text/xml/xmloscopy { };
+
+  xmlstarlet = callPackage ../tools/text/xml/xmlstarlet { };
+
+  xmlto = callPackage ../tools/typesetting/xmlto {
+    w3m = w3m-batch;
+  };
+
+  xiccd = callPackage ../tools/misc/xiccd { };
+
+  xidlehook = callPackage ../tools/X11/xidlehook {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  xorriso = callPackage ../tools/cd-dvd/xorriso { };
+
+  xprite-editor = callPackage ../tools/misc/xprite-editor {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  xpf = callPackage ../tools/text/xml/xpf {
+    libxml2 = libxml2Python;
+  };
+
+  xsecurelock = callPackage ../tools/X11/xsecurelock { };
+
+  xsel = callPackage ../tools/misc/xsel { };
+
+  xsv = callPackage ../tools/text/xsv {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  xtreemfs = callPackage ../tools/filesystems/xtreemfs {
+    boost = boost165;
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  xurls = callPackage ../tools/text/xurls {};
+
+  xxv = callPackage ../tools/misc/xxv {};
+
+  xvfb-run = callPackage ../tools/misc/xvfb-run { inherit (texFunctions) fontsConf; };
+
+  xvkbd = callPackage ../tools/X11/xvkbd {};
+
+  xwinmosaic = callPackage ../tools/X11/xwinmosaic {};
+
+  xwinwrap = callPackage ../tools/X11/xwinwrap {};
+
+  yafaray-core = callPackage ../tools/graphics/yafaray-core { };
+
+  yajsv = callPackage ../tools/misc/yajsv {
+    buildGoModule = buildGo116Module;
+  };
+
+  yallback = callPackage ../development/tools/analysis/yallback { };
+
+  yapf = with python3Packages; toPythonApplication yapf;
+
+  yarn = callPackage ../development/tools/yarn  { };
+
+  yarn2nix-moretea = callPackage ../development/tools/yarn2nix-moretea/yarn2nix { };
+
+  inherit (yarn2nix-moretea)
+    yarn2nix
+    mkYarnPackage
+    mkYarnModules
+    fixup_yarn_lock;
+
+  yascreen = callPackage ../development/libraries/yascreen { };
+
+  yasr = callPackage ../applications/audio/yasr { };
+
+  yank = callPackage ../tools/misc/yank { };
+
+  yamlfix = with python3Packages; toPythonApplication yamlfix;
+
+  yamllint = with python3Packages; toPythonApplication yamllint;
+
+  yaml-merge = callPackage ../tools/text/yaml-merge { };
+
+  yeshup = callPackage ../tools/system/yeshup { };
+
+  ytfzf = callPackage ../tools/misc/ytfzf { };
+
+  ytree = callPackage ../tools/misc/ytree { };
+
+  yggdrasil = callPackage ../tools/networking/yggdrasil { };
+
+  # To expose more packages for Yi, override the extraPackages arg.
+  yi = callPackage ../applications/editors/yi/wrapper.nix { };
+
+  yj = callPackage ../development/tools/yj { };
+
+  zprint = callPackage ../development/tools/zprint { };
+
+  yle-dl = callPackage ../tools/misc/yle-dl {};
+
+  you-get = python3Packages.callPackage ../tools/misc/you-get { };
+
+  zasm = callPackage ../development/compilers/zasm {};
+
+  zbackup = callPackage ../tools/backup/zbackup {};
+
+  zbar = libsForQt5.callPackage ../tools/graphics/zbar {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  zdelta = callPackage ../tools/compression/zdelta { };
+
+  zellij = callPackage ../tools/misc/zellij {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation;
+  };
+
+  zenith = callPackage ../tools/system/zenith {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  # Nvidia support does not require any propietary libraries, so CI can build it.
+  # Note that when enabling this unconditionally, non-nvidia users will always have an empty "GPU" section.
+  zenith-nvidia = callPackage ../tools/system/zenith {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+    nvidiaSupport = true;
+  };
+
+  zerotierone = callPackage ../tools/networking/zerotierone { };
+
+  zerofree = callPackage ../tools/filesystems/zerofree { };
+
+  zfs-autobackup = callPackage ../tools/backup/zfs-autobackup { };
+
+  zfsbackup = callPackage ../tools/backup/zfsbackup { };
+
+  zfstools = callPackage ../tools/filesystems/zfstools { };
+
+  zfsnap = callPackage ../tools/backup/zfsnap { };
+
+  zile = callPackage ../applications/editors/zile { };
+
+  zinnia = callPackage ../tools/inputmethods/zinnia { };
+  tegaki-zinnia-japanese = callPackage ../tools/inputmethods/tegaki-zinnia-japanese { };
+
+  zimwriterfs = callPackage ../tools/text/zimwriterfs { };
+
+  par = callPackage ../tools/text/par { };
+
+  zip = callPackage ../tools/archivers/zip { };
+
+  zkfuse = callPackage ../tools/filesystems/zkfuse { };
+
+  zpaq = callPackage ../tools/archivers/zpaq { };
+  zpaqd = callPackage ../tools/archivers/zpaq/zpaqd.nix { };
+
+  zplug = callPackage ../shells/zsh/zplug { };
+
+  zinit = callPackage ../shells/zsh/zinit {} ;
+
+  zs-apc-spdu-ctl = callPackage ../tools/networking/zs-apc-spdu-ctl { };
+
+  zs-wait4host = callPackage ../tools/networking/zs-wait4host { };
+
+  zstxtns-utils = callPackage ../tools/text/zstxtns-utils { };
+
+  zsh-autoenv = callPackage ../tools/misc/zsh-autoenv { };
+
+  zsh-autopair = callPackage ../shells/zsh/zsh-autopair { };
+
+  zsh-bd = callPackage ../shells/zsh/zsh-bd { };
+
+  zsh-better-npm-completion = callPackage ../shells/zsh/zsh-better-npm-completion { };
+
+  zsh-clipboard = callPackage ../shells/zsh/zsh-clipboard { };
+
+  zsh-git-prompt = callPackage ../shells/zsh/zsh-git-prompt { };
+
+  zsh-history = callPackage ../shells/zsh/zsh-history { };
+
+  zsh-history-search-multi-word = callPackage ../shells/zsh/zsh-history-search-multi-word { };
+
+  zsh-history-substring-search = callPackage ../shells/zsh/zsh-history-substring-search { };
+
+  zsh-navigation-tools = callPackage ../tools/misc/zsh-navigation-tools { };
+
+  zsh-nix-shell = callPackage ../shells/zsh/zsh-nix-shell { };
+
+  zsh-syntax-highlighting = callPackage ../shells/zsh/zsh-syntax-highlighting { };
+
+  zsh-system-clipboard = callPackage ../shells/zsh/zsh-system-clipboard { };
+
+  zsh-fast-syntax-highlighting = callPackage ../shells/zsh/zsh-fast-syntax-highlighting { };
+
+  zsh-fzf-tab = callPackage ../shells/zsh/zsh-fzf-tab { };
+
+  zsh-autocomplete = callPackage ../shells/zsh/zsh-autocomplete { };
+
+  zsh-autosuggestions = callPackage ../shells/zsh/zsh-autosuggestions { };
+
+  zsh-powerlevel10k = callPackage ../shells/zsh/zsh-powerlevel10k { };
+
+  zsh-powerlevel9k = callPackage ../shells/zsh/zsh-powerlevel9k { };
+
+  zsh-command-time = callPackage ../shells/zsh/zsh-command-time { };
+
+  zsh-vi-mode = callPackage ../shells/zsh/zsh-vi-mode {};
+
+  zsh-you-should-use = callPackage ../shells/zsh/zsh-you-should-use { };
+
+  zsh-z = callPackage ../shells/zsh/zsh-z { };
+
+  zssh = callPackage ../tools/networking/zssh { };
+
+  zstd = callPackage ../tools/compression/zstd {
+    cmake = buildPackages.cmakeMinimal;
+  };
+
+  zsync = callPackage ../tools/compression/zsync { };
+
+  zxing = callPackage ../tools/graphics/zxing {};
+
+  zmap = callPackage ../tools/security/zmap { };
+
+  zpool-iostat-viz = callPackage ../tools/filesystems/zpool-iostat-viz { };
+
+
+  ### SHELLS
+
+  runtimeShell = "${runtimeShellPackage}${runtimeShellPackage.shellPath}";
+  runtimeShellPackage = bash;
+
+  any-nix-shell = callPackage ../shells/any-nix-shell { };
+
+  bash = lowPrio (callPackage ../shells/bash/5.1.nix {
+    binutils = stdenv.cc.bintools;
+  });
+  # WARNING: this attribute is used by nix-shell so it shouldn't be removed/renamed
+  bashInteractive = callPackage ../shells/bash/5.1.nix {
+    binutils = stdenv.cc.bintools;
+    interactive = true;
+    withDocs = true;
+  };
+  bashInteractiveFHS = callPackage ../shells/bash/5.1.nix {
+    binutils = stdenv.cc.bintools;
+    interactive = true;
+    withDocs = true;
+    forFHSEnv = true;
+  };
+
+  bash-completion = callPackage ../shells/bash/bash-completion { };
+
+  gradle-completion = callPackage ../shells/zsh/gradle-completion { };
+
+  nix-bash-completions = callPackage ../shells/bash/nix-bash-completions { };
+
+  yarn-bash-completion = callPackage ../shells/bash/yarn-completion { };
+
+  undistract-me = callPackage ../shells/bash/undistract-me { };
+
+  dash = callPackage ../shells/dash { };
+
+  dasht = callPackage ../tools/misc/dasht { };
+
+  dashing = callPackage ../tools/misc/dashing { };
+
+  es = callPackage ../shells/es { };
+
+  fish = callPackage ../shells/fish { };
+
+  oh-my-fish = callPackage ../shells/fish/oh-my-fish { };
+
+  wrapFish = callPackage ../shells/fish/wrapper.nix { };
+
+  fishPlugins = recurseIntoAttrs (callPackage ../shells/fish/plugins { });
+
+  ion = callPackage ../shells/ion {
+    inherit (darwin) Security;
+  };
+
+  jush = callPackage ../shells/jush { };
+
+  ksh = callPackage ../shells/ksh { };
+
+  liquidprompt = callPackage ../shells/liquidprompt { };
+
+  mksh = callPackage ../shells/mksh { };
+
+  oh = callPackage ../shells/oh { };
+
+  oil = callPackage ../shells/oil { };
+
+  oksh = callPackage ../shells/oksh { };
+
+  loksh = callPackage ../shells/loksh { };
+
+  pash = callPackage ../shells/pash { };
+
+  scponly = callPackage ../shells/scponly { };
+
+  tcsh = callPackage ../shells/tcsh { };
+
+  rush = callPackage ../shells/rush { };
+
+  xonsh = callPackage ../shells/xonsh { };
+
+  zsh = callPackage ../shells/zsh { };
+
+  nix-zsh-completions = callPackage ../shells/zsh/nix-zsh-completions { };
+
+  zsh-completions = callPackage ../shells/zsh/zsh-completions { };
+
+  zsh-prezto = callPackage ../shells/zsh/zsh-prezto { };
+
+  yash = callPackage ../shells/yash { };
+
+  grml-zsh-config = callPackage ../shells/zsh/grml-zsh-config { };
+
+  powerline = with python3Packages; toPythonApplication powerline;
+
+  ### DEVELOPMENT / COMPILERS
+
+  _4th = callPackage ../development/compilers/4th { };
+
+  abcl = callPackage ../development/compilers/abcl {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  adoptopenjdk-bin-16-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk16-linux.nix { inherit lib; };
+  adoptopenjdk-bin-16-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk16-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-16 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-16-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-16-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-16 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-16-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-16-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-16 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-16-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-16-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-16 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-16-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-16-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin-15-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk15-linux.nix { inherit lib; };
+  adoptopenjdk-bin-15-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk15-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-15 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-15-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-15-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-15 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-15-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-15-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-15 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-15-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-15-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-15 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-15-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-15-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin-14-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk14-linux.nix { inherit lib; };
+  adoptopenjdk-bin-14-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk14-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-14 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-14-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-14-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-14 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-14-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-14-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-14 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-14-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-14-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-14 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-14-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-14-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin-13-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk13-linux.nix { inherit lib; };
+  adoptopenjdk-bin-13-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk13-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-13 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-13-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-13-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-13 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-13-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-13-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-13 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-13-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-13-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-13 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-13-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-13-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin-11-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk11-linux.nix { inherit lib; };
+  adoptopenjdk-bin-11-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk11-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-11 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-11-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-11-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-11 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-11-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-11-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-11 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-11-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-11-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-11 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-11-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-11-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin-8-packages-linux = import ../development/compilers/adoptopenjdk-bin/jdk8-linux.nix { inherit lib; };
+  adoptopenjdk-bin-8-packages-darwin = import ../development/compilers/adoptopenjdk-bin/jdk8-darwin.nix { inherit lib; };
+
+  adoptopenjdk-hotspot-bin-8 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-8-packages-linux.jdk-hotspot {}
+    else callPackage adoptopenjdk-bin-8-packages-darwin.jdk-hotspot {};
+  adoptopenjdk-jre-hotspot-bin-8 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-8-packages-linux.jre-hotspot {}
+    else callPackage adoptopenjdk-bin-8-packages-darwin.jre-hotspot {};
+
+  adoptopenjdk-openj9-bin-8 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-8-packages-linux.jdk-openj9 {}
+    else callPackage adoptopenjdk-bin-8-packages-darwin.jdk-openj9 {};
+
+  adoptopenjdk-jre-openj9-bin-8 = if stdenv.isLinux
+    then callPackage adoptopenjdk-bin-8-packages-linux.jre-openj9 {}
+    else callPackage adoptopenjdk-bin-8-packages-darwin.jre-openj9 {};
+
+  adoptopenjdk-bin = adoptopenjdk-hotspot-bin-11;
+  adoptopenjdk-jre-bin = adoptopenjdk-jre-hotspot-bin-11;
+
+  adoptopenjdk-icedtea-web = callPackage ../development/compilers/adoptopenjdk-icedtea-web {
+    jdk = jdk8;
+  };
+
+  aldor = callPackage ../development/compilers/aldor { };
+
+  algol68g = callPackage ../development/compilers/algol68g { };
+
+  aliceml = callPackage ../development/compilers/aliceml { };
+
+  armips = callPackage ../development/compilers/armips { };
+
+  arachne-pnr = callPackage ../development/compilers/arachne-pnr { };
+
+  asciigraph = callPackage ../tools/text/asciigraph { };
+
+  as31 = callPackage ../development/compilers/as31 { };
+
+  asl = callPackage ../development/compilers/asl {
+    tex = texlive.combined.scheme-medium;
+  };
+
+  aspectj = callPackage ../development/compilers/aspectj { };
+
+  atasm = callPackage ../development/compilers/atasm { };
+
+  ats = callPackage ../development/compilers/ats { };
+  ats2 = callPackage ../development/compilers/ats2 { };
+
+  ats-acc = callPackage ../development/tools/ats-acc { };
+
+  avra = callPackage ../development/compilers/avra { };
+
+  beekeeper-studio = callPackage ../development/tools/database/beekeeper-studio { };
+
+  bigloo = callPackage ../development/compilers/bigloo { };
+
+  binaryen = callPackage ../development/compilers/binaryen { };
+
+  bluespec = callPackage ../development/compilers/bluespec {
+    gmp-static = gmp.override { withStatic = true; };
+    tex = texlive.combined.scheme-full;
+  };
+
+  cakelisp = callPackage ../development/compilers/cakelisp { };
+
+  ciao = callPackage ../development/compilers/ciao { };
+
+  colm = callPackage ../development/compilers/colm { };
+
+  colmap = libsForQt514.callPackage ../applications/science/misc/colmap { };
+  colmapWithCuda = colmap.override { cudaSupport = true; cudatoolkit = cudatoolkit_11; };
+
+  chickenPackages_4 = callPackage ../development/compilers/chicken/4 { };
+  chickenPackages_5 = callPackage ../development/compilers/chicken/5 { };
+  chickenPackages = chickenPackages_5;
+
+  inherit (chickenPackages)
+    fetchegg
+    eggDerivation
+    chicken
+    egg2nix;
+
+  cc65 = callPackage ../development/compilers/cc65 { };
+
+  ccl = callPackage ../development/compilers/ccl {
+    inherit (buildPackages.darwin) bootstrap_cmds;
+  };
+
+  cdb = callPackage ../development/tools/database/cdb {
+    stdenv = gccStdenv;
+  };
+
+  chez = callPackage ../development/compilers/chez {
+    inherit (darwin) cctools;
+  };
+
+  chez-racket = callPackage ../development/compilers/chez-racket {};
+
+  chez-srfi = callPackage ../development/chez-modules/chez-srfi { };
+
+  chez-mit = callPackage ../development/chez-modules/chez-mit { };
+
+  chez-scmutils = callPackage ../development/chez-modules/chez-scmutils { };
+
+  chez-matchable = callPackage ../development/chez-modules/chez-matchable { };
+
+  clang = llvmPackages.clang;
+  libclang = llvmPackages.libclang;
+  clang-manpages = llvmPackages.clang-manpages;
+
+  clang-sierraHack = clang.override {
+    name = "clang-wrapper-with-reexport-hack";
+    bintools = darwin.binutils.override {
+      useMacosReexportHack = true;
+    };
+  };
+
+  clang_14 = llvmPackages_14.clang;
+  clang_13 = llvmPackages_13.clang;
+  clang_12 = llvmPackages_12.clang;
+  clang_11 = llvmPackages_11.clang;
+  clang_10 = llvmPackages_10.clang;
+  clang_9  = llvmPackages_9.clang;
+  clang_8  = llvmPackages_8.clang;
+  clang_7  = llvmPackages_7.clang;
+  clang_6  = llvmPackages_6.clang;
+  clang_5  = llvmPackages_5.clang;
+
+  clang-tools = callPackage ../development/tools/clang-tools {
+    llvmPackages = llvmPackages_latest;
+  };
+
+  clang-analyzer = callPackage ../development/tools/analysis/clang-analyzer {
+    llvmPackages = llvmPackages_latest;
+    inherit (llvmPackages_latest) clang;
+  };
+
+  #Use this instead of stdenv to build with clang
+  clangStdenv = if stdenv.cc.isClang then stdenv else lowPrio llvmPackages.stdenv;
+  clang-sierraHack-stdenv = overrideCC stdenv buildPackages.clang-sierraHack;
+  libcxxStdenv = if stdenv.isDarwin then stdenv else lowPrio llvmPackages.libcxxStdenv;
+
+  clasp-common-lisp = callPackage ../development/compilers/clasp {
+    llvmPackages = llvmPackages_6;
+    stdenv = llvmPackages_6.stdenv;
+  };
+
+  clean = callPackage ../development/compilers/clean { };
+
+  closurecompiler = callPackage ../development/compilers/closure { };
+
+  cmdstan = callPackage ../development/compilers/cmdstan { };
+
+  cmucl_binary = pkgsi686Linux.callPackage ../development/compilers/cmucl/binary.nix { };
+
+  comby = callPackage ../development/tools/comby { };
+
+  compcert = coqPackages.compcert.override { version = "3.9"; };
+
+  computecpp-unwrapped = callPackage ../development/compilers/computecpp {};
+  computecpp = wrapCCWith rec {
+    cc = computecpp-unwrapped;
+    extraPackages = [
+      llvmPackages.compiler-rt
+    ];
+    extraBuildCommands = ''
+      wrap compute $wrapper $ccPath/compute
+      wrap compute++ $wrapper $ccPath/compute++
+      export named_cc=compute
+      export named_cxx=compute++
+
+      rsrc="$out/resource-root"
+      mkdir -p "$rsrc/lib"
+      ln -s "${cc}/lib" "$rsrc/include"
+      echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
+    '';
+  };
+
+  copper = callPackage ../development/compilers/copper {};
+
+  inherit (callPackages ../development/compilers/crystal {
+    llvmPackages = if stdenv.system == "aarch64-darwin" then llvmPackages_11 else llvmPackages_10;
+  })
+    crystal_1_0
+    crystal_1_1
+    crystal_1_2
+    crystal;
+
+  crystal2nix = callPackage ../development/compilers/crystal2nix { };
+
+  icr = callPackage ../development/tools/icr { };
+
+  scry = callPackage ../development/tools/scry { };
+
+  dasm = callPackage ../development/compilers/dasm { };
+
+  dbmate = callPackage ../development/tools/database/dbmate { };
+
+  devpi-client = python3Packages.callPackage ../development/tools/devpi-client {};
+
+  devpi-server = callPackage ../development/tools/devpi-server {};
+
+  dictu = callPackage ../development/compilers/dictu { };
+
+  dotty = callPackage ../development/compilers/scala/dotty.nix { };
+
+  ecl = callPackage ../development/compilers/ecl { };
+  ecl_16_1_2 = callPackage ../development/compilers/ecl/16.1.2.nix { };
+
+  eli = callPackage ../development/compilers/eli { };
+
+  eql = callPackage ../development/compilers/eql {};
+
+  elm2nix = haskell.lib.compose.justStaticExecutables haskellPackages.elm2nix;
+
+  elmPackages = recurseIntoAttrs (callPackage ../development/compilers/elm { });
+
+  apache-flex-sdk = callPackage ../development/compilers/apache-flex-sdk { };
+
+  fasm = pkgsi686Linux.callPackage ../development/compilers/fasm {
+    inherit (stdenv) isx86_64;
+  };
+  fasm-bin = callPackage ../development/compilers/fasm/bin.nix { };
+
+  fasmg = callPackage ../development/compilers/fasmg { };
+
+  fennel = callPackage ../development/compilers/fennel { };
+
+  flasm = callPackage ../development/compilers/flasm { };
+
+  flyctl = callPackage ../development/web/flyctl { };
+
+  fluidd = callPackage ../applications/misc/fluidd { };
+
+  flutterPackages =
+    recurseIntoAttrs (callPackage ../development/compilers/flutter { });
+  flutter = flutterPackages.stable;
+
+  fnm = callPackage ../development/tools/fnm {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation Security;
+  };
+
+  fnlfmt = callPackage ../development/tools/fnlfmt { };
+
+  fpc = callPackage ../development/compilers/fpc { };
+
+  g203-led = callPackage ../tools/misc/g203-led { };
+
+  gambit = callPackage ../development/compilers/gambit { };
+  gambit-unstable = callPackage ../development/compilers/gambit/unstable.nix { };
+  gambit-support = callPackage ../development/compilers/gambit/gambit-support.nix { };
+  gerbil = callPackage ../development/compilers/gerbil { };
+  gerbil-unstable = callPackage ../development/compilers/gerbil/unstable.nix { };
+  gerbil-support = callPackage ../development/compilers/gerbil/gerbil-support.nix { };
+  gerbilPackages-unstable = gerbil-support.gerbilPackages-unstable; # NB: don't recurseIntoAttrs for (unstable!) libraries
+
+  inherit (let
+      num =
+        if (with stdenv.targetPlatform; isVc4 || libc == "relibc") then 6
+        else if (stdenv.targetPlatform.isAarch64 && stdenv.isDarwin) then 11
+        else if stdenv.targetPlatform.isAarch64 then 9
+        else 10;
+      numS = toString num;
+    in {
+      gcc = pkgs.${"gcc${numS}"};
+      gccFun = callPackage (../development/compilers/gcc + "/${numS}");
+    }) gcc gccFun;
+  gcc-unwrapped = gcc.cc;
+
+  wrapNonDeterministicGcc = stdenv: ccWrapper:
+    if ccWrapper.isGNU then ccWrapper.overrideAttrs(old: {
+      cc = old.cc.override {
+        reproducibleBuild = false;
+        profiledCompiler = with stdenv; (!isDarwin && hostPlatform.isx86);
+      };
+    }) else ccWrapper;
+
+  gccStdenv =
+    if stdenv.cc.isGNU
+    then stdenv
+    else stdenv.override {
+      cc = buildPackages.gcc;
+      allowedRequisites = null;
+      # Remove libcxx/libcxxabi, and add clang for AS if on darwin (it uses
+      # clang's internal assembler).
+      extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc;
+    };
+
+  gcc49Stdenv = overrideCC gccStdenv buildPackages.gcc49;
+  gcc6Stdenv = overrideCC gccStdenv buildPackages.gcc6;
+  gcc7Stdenv = overrideCC gccStdenv buildPackages.gcc7;
+  gcc8Stdenv = overrideCC gccStdenv buildPackages.gcc8;
+  gcc9Stdenv = overrideCC gccStdenv buildPackages.gcc9;
+  gcc10Stdenv = overrideCC gccStdenv buildPackages.gcc10;
+  gcc11Stdenv = overrideCC gccStdenv buildPackages.gcc11;
+
+  # This is not intended for use in nixpkgs but for providing a faster-running
+  # compiler to nixpkgs users by building gcc with reproducibility-breaking
+  # profile-guided optimizations
+  fastStdenv = overrideCC gccStdenv (wrapNonDeterministicGcc gccStdenv buildPackages.gcc10);
+
+  wrapCCMulti = cc:
+    if stdenv.targetPlatform.system == "x86_64-linux" then let
+      # Binutils with glibc multi
+      bintools = cc.bintools.override {
+        libc = glibc_multi;
+      };
+    in lowPrio (wrapCCWith {
+      cc = cc.cc.override {
+        stdenv = overrideCC stdenv (wrapCCWith {
+          cc = cc.cc;
+          inherit bintools;
+          libc = glibc_multi;
+        });
+        profiledCompiler = false;
+        enableMultilib = true;
+      };
+      libc = glibc_multi;
+      inherit bintools;
+      extraBuildCommands = ''
+        echo "dontMoveLib64=1" >> $out/nix-support/setup-hook
+      '';
+  }) else throw "Multilib ${cc.name} not supported for ‘${stdenv.targetPlatform.system}’";
+
+  wrapClangMulti = clang:
+    if stdenv.targetPlatform.system == "x86_64-linux" then
+      callPackage ../development/compilers/llvm/multi.nix {
+        inherit clang;
+        gcc32 = pkgsi686Linux.gcc;
+        gcc64 = pkgs.gcc;
+      }
+    else throw "Multilib ${clang.cc.name} not supported for '${stdenv.targetPlatform.system}'";
+
+  gcc_multi = wrapCCMulti gcc;
+  clang_multi = wrapClangMulti clang;
+
+  gccMultiStdenv = overrideCC stdenv buildPackages.gcc_multi;
+  clangMultiStdenv = overrideCC stdenv buildPackages.clang_multi;
+  multiStdenv = if stdenv.cc.isClang then clangMultiStdenv else gccMultiStdenv;
+
+  gcc_debug = lowPrio (wrapCC (gcc.cc.override {
+    stripped = false;
+  }));
+
+  gccCrossLibcStdenv = overrideCC stdenv buildPackages.gccCrossStageStatic;
+
+  crossLibcStdenv =
+    if stdenv.hostPlatform.useLLVM or false || stdenv.hostPlatform.isDarwin
+    then overrideCC stdenv buildPackages.llvmPackages.clangNoLibc
+    else gccCrossLibcStdenv;
+
+  # The GCC used to build libc for the target platform. Normal gccs will be
+  # built with, and use, that cross-compiled libc.
+  gccCrossStageStatic = assert stdenv.targetPlatform != stdenv.hostPlatform; let
+    libcCross1 = binutilsNoLibc.libc;
+    in wrapCCWith {
+      cc = gccFun {
+        # copy-pasted
+        inherit noSysDirs;
+
+        reproducibleBuild = true;
+        profiledCompiler = false;
+
+        isl = if !stdenv.isDarwin then isl_0_20 else null;
+
+        # just for stage static
+        crossStageStatic = true;
+        langCC = false;
+        libcCross = libcCross1;
+        targetPackages.stdenv.cc.bintools = binutilsNoLibc;
+        enableShared = false;
+      };
+      bintools = binutilsNoLibc;
+      libc = libcCross1;
+      extraPackages = [];
+  };
+
+  gcc48 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.8 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    isl = if !stdenv.isDarwin then isl_0_14 else null;
+    cloog = if !stdenv.isDarwin then cloog else null;
+    texinfo = texinfo5; # doesn't validate since 6.1 -> 6.3 bump
+  }));
+
+  gcc49 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.9 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    isl = if !stdenv.isDarwin then isl_0_11 else null;
+
+    cloog = if !stdenv.isDarwin then cloog_0_18_0 else null;
+  }));
+
+  gcc6 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/6 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    # gcc 10 is too strict to cross compile gcc <= 8
+    stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc7Stdenv else stdenv;
+
+    isl = if stdenv.isDarwin
+            then null
+          else if stdenv.targetPlatform.isRedox
+            then isl_0_17
+          else isl_0_14;
+  }));
+
+  gcc7 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/7 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    # gcc 10 is too strict to cross compile gcc <= 8
+    stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc7Stdenv else stdenv;
+
+    isl = if !stdenv.isDarwin then isl_0_17 else null;
+  }));
+
+  gcc8 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/8 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    # gcc 10 is too strict to cross compile gcc <= 8
+    stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc7Stdenv else stdenv;
+
+    isl = if !stdenv.isDarwin then isl_0_17 else null;
+  }));
+
+  gcc9 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/9 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    isl = if !stdenv.isDarwin then isl_0_20 else null;
+  }));
+
+  gcc10 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/10 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    isl = if !stdenv.isDarwin then isl_0_20 else null;
+  }));
+
+  gcc11 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/11 {
+    inherit noSysDirs;
+
+    reproducibleBuild = true;
+    profiledCompiler = false;
+
+    libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
+    threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else null;
+
+    isl = if !stdenv.isDarwin then isl_0_20 else null;
+  }));
+
+  gcc_latest = gcc11;
+
+  # aarch64-darwin doesn't support earlier gcc
+  gfortran = if (stdenv.isDarwin && stdenv.isAarch64) then gfortran11 else gfortran9;
+
+  gfortran48 = wrapCC (gcc48.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran49 = wrapCC (gcc49.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran6 = wrapCC (gcc6.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran7 = wrapCC (gcc7.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran8 = wrapCC (gcc8.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran9 = wrapCC (gcc9.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran10 = wrapCC (gcc10.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  gfortran11 = wrapCC (gcc11.cc.override {
+    name = "gfortran";
+    langFortran = true;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+  });
+
+  libgccjit = gcc.cc.override {
+    name = "libgccjit";
+    langFortran = false;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+    langJit = true;
+    enableLTO = false;
+  };
+
+  gcj = gcj6;
+  gcj6 = wrapCC (gcc6.cc.override {
+    name = "gcj";
+    langJava = true;
+    langFortran = false;
+    langCC = false;
+    langC = false;
+    profiledCompiler = false;
+    inherit zip unzip zlib boehmgc gettext pkg-config perl;
+    inherit (gnome2) libart_lgpl;
+  });
+
+  gnat = gnat11;
+
+  gnat6 = wrapCC (gcc6.cc.override {
+    name = "gnat";
+    langC = true;
+    langCC = false;
+    langAda = true;
+    profiledCompiler = false;
+    # As per upstream instructions building a cross compiler
+    # should be done with a (native) compiler of the same version.
+    # If we are cross-compiling GNAT, we may as well go the same
+    # route (especially as gnatboot can't cross-compile).
+    gnatboot =
+      if stdenv.hostPlatform == stdenv.targetPlatform
+         && stdenv.buildPlatform == stdenv.hostPlatform
+      then buildPackages.gnatboot
+      else buildPackages.gnat6;
+  });
+
+  gnat9 = wrapCC (gcc9.cc.override {
+    name = "gnat";
+    langC = true;
+    langCC = false;
+    langAda = true;
+    profiledCompiler = false;
+    # As per upstream instructions building a cross compiler
+    # should be done with a (native) compiler of the same version.
+    # If we are cross-compiling GNAT, we may as well do the same.
+    gnatboot =
+      if stdenv.hostPlatform == stdenv.targetPlatform
+         && stdenv.buildPlatform == stdenv.hostPlatform
+      then buildPackages.gnat6
+      else buildPackages.gnat9;
+  });
+
+  gnat10 = wrapCC (gcc10.cc.override {
+    name = "gnat";
+    langC = true;
+    langCC = false;
+    langAda = true;
+    profiledCompiler = false;
+    # As per upstream instructions building a cross compiler
+    # should be done with a (native) compiler of the same version.
+    # If we are cross-compiling GNAT, we may as well do the same.
+    gnatboot =
+      if stdenv.hostPlatform == stdenv.targetPlatform
+         && stdenv.buildPlatform == stdenv.hostPlatform
+      then buildPackages.gnat6
+      else buildPackages.gnat10;
+  });
+
+  gnat11 = wrapCC (gcc11.cc.override {
+    name = "gnat";
+    langC = true;
+    langCC = false;
+    langAda = true;
+    profiledCompiler = false;
+    # As per upstream instructions building a cross compiler
+    # should be done with a (native) compiler of the same version.
+    # If we are cross-compiling GNAT, we may as well do the same.
+    gnatboot =
+      if stdenv.hostPlatform == stdenv.targetPlatform
+         && stdenv.buildPlatform == stdenv.hostPlatform
+      then buildPackages.gnat6
+      else buildPackages.gnat11;
+  });
+
+  gnatboot = wrapCC (callPackage ../development/compilers/gnatboot { });
+
+  gnu-smalltalk = callPackage ../development/compilers/gnu-smalltalk { };
+
+  gccgo = gccgo6;
+  gccgo6 = wrapCC (gcc6.cc.override {
+    name = "gccgo6";
+    langCC = true; #required for go.
+    langC = true;
+    langGo = true;
+    profiledCompiler = false;
+  });
+
+  ghdl = ghdl-mcode;
+
+  ghdl-mcode = callPackage ../development/compilers/ghdl {
+    backend = "mcode";
+  };
+
+  ghdl-llvm = callPackage ../development/compilers/ghdl {
+    backend = "llvm";
+  };
+
+  gcl = callPackage ../development/compilers/gcl {
+    gmp = gmp4;
+  };
+
+  gcl_2_6_13_pre = callPackage ../development/compilers/gcl/2.6.13-pre.nix { };
+
+  gcc-arm-embedded-6 = callPackage ../development/compilers/gcc-arm-embedded/6 {};
+  gcc-arm-embedded-7 = callPackage ../development/compilers/gcc-arm-embedded/7 {};
+  gcc-arm-embedded-8 = callPackage ../development/compilers/gcc-arm-embedded/8 {};
+  gcc-arm-embedded-9 = callPackage ../development/compilers/gcc-arm-embedded/9 {};
+  gcc-arm-embedded-10 = callPackage ../development/compilers/gcc-arm-embedded/10 {};
+  gcc-arm-embedded = gcc-arm-embedded-10;
+
+  gdc = gdc9;
+  gdc9 = wrapCC (gcc9.cc.override {
+    name = "gdc";
+    langCC = false;
+    langC = false;
+    langD = true;
+    profiledCompiler = false;
+  });
+
+  gforth = callPackage ../development/compilers/gforth {};
+
+  gleam = callPackage ../development/compilers/gleam {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  gtk-server = callPackage ../development/interpreters/gtk-server {};
+
+  # Haskell and GHC
+
+  haskell = callPackage ./haskell-packages.nix { };
+
+  # Please update doc/languages-frameworks/haskell.section.md, “Our
+  # current default compiler is”, if you bump this:
+  haskellPackages = dontRecurseIntoAttrs haskell.packages.ghc8107;
+
+  # haskellPackages.ghc is build->host (it exposes the compiler used to build the
+  # set, similarly to stdenv.cc), but pkgs.ghc should be host->target to be more
+  # consistent with the gcc, gnat, clang etc. derivations
+  #
+  # We use targetPackages.haskellPackages.ghc if available since this also has
+  # the withPackages wrapper available. In the final cross-compiled package set
+  # however, targetPackages won't be populated, so we need to fall back to the
+  # plain, cross-compiled compiler (which is only theoretical at the moment).
+  ghc = targetPackages.haskellPackages.ghc or haskell.compiler.ghc8107;
+
+  cabal-install = haskell.lib.compose.justStaticExecutables haskellPackages.cabal-install;
+
+  stack = haskell.lib.compose.justStaticExecutables haskellPackages.stack;
+  hlint = haskell.lib.compose.justStaticExecutables haskellPackages.hlint;
+
+  krank = haskell.lib.compose.justStaticExecutables haskellPackages.krank;
+
+  stylish-cabal = haskell.lib.compose.justStaticExecutables haskellPackages.stylish-cabal;
+
+  all-cabal-hashes = callPackage ../data/misc/hackage { };
+
+  purescript = callPackage ../development/compilers/purescript/purescript { };
+
+  psc-package = callPackage ../development/compilers/purescript/psc-package { };
+
+  purescript-psa = nodePackages.purescript-psa;
+
+  purenix = haskell.lib.compose.justStaticExecutables haskellPackages.purenix;
+
+  spago = callPackage ../development/tools/purescript/spago { };
+
+  pulp = nodePackages.pulp;
+
+  pscid = nodePackages.pscid;
+
+  coreboot-toolchain = recurseIntoAttrs (callPackage ../development/tools/misc/coreboot-toolchain { });
+
+  remarkable-toolchain = callPackage ../development/tools/misc/remarkable/remarkable-toolchain { };
+
+  remarkable2-toolchain = callPackage ../development/tools/misc/remarkable/remarkable2-toolchain { };
+
+  t-rex = callPackage ../servers/t-rex {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tacacsplus = callPackage ../servers/tacacsplus { };
+
+  tamarin-prover =
+    (haskellPackages.callPackage ../applications/science/logic/tamarin-prover {
+      # NOTE: do not use the haskell packages 'graphviz' and 'maude'
+      inherit maude which;
+      graphviz = graphviz-nox;
+    });
+
+  inherit (callPackage ../development/compilers/haxe {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  })
+    haxe_4_2
+    haxe_4_1
+    haxe_4_0
+    haxe_3_4
+    haxe_3_2
+    ;
+
+  haxe = haxe_4_2;
+  haxePackages = recurseIntoAttrs (callPackage ./haxe-packages.nix { });
+  inherit (haxePackages) hxcpp;
+
+  hhvm = callPackage ../development/compilers/hhvm { };
+
+  hop = callPackage ../development/compilers/hop { };
+
+  falcon = callPackage ../development/interpreters/falcon { };
+
+  fsharp = callPackage ../development/compilers/fsharp { };
+
+  fstar = callPackage ../development/compilers/fstar { };
+
+  dotnetPackages = recurseIntoAttrs (callPackage ./dotnet-packages.nix {});
+
+  glslang = callPackage ../development/compilers/glslang { };
+
+  go_1_16 = callPackage ../development/compilers/go/1.16.nix ({
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  } // lib.optionalAttrs (stdenv.cc.isGNU && stdenv.isAarch64) {
+    stdenv = gcc8Stdenv;
+    buildPackages = buildPackages // { stdenv = buildPackages.gcc8Stdenv; };
+  });
+
+  go_1_17 = callPackage ../development/compilers/go/1.17.nix ({
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  } // lib.optionalAttrs (stdenv.cc.isGNU && stdenv.isAarch64) {
+    stdenv = gcc8Stdenv;
+    buildPackages = buildPackages // { stdenv = buildPackages.gcc8Stdenv; };
+  });
+
+  go_1_18 = callPackage ../development/compilers/go/1.18.nix ({
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  } // lib.optionalAttrs (stdenv.cc.isGNU && stdenv.isAarch64) {
+    stdenv = gcc8Stdenv;
+    buildPackages = buildPackages // { stdenv = buildPackages.gcc8Stdenv; };
+  });
+
+  go_2-dev = callPackage ../development/compilers/go/2-dev.nix ({
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  } // lib.optionalAttrs (stdenv.cc.isGNU && stdenv.isAarch64) {
+    stdenv = gcc8Stdenv;
+    buildPackages = buildPackages // { stdenv = buildPackages.gcc8Stdenv; };
+  });
+
+  go = go_1_17;
+
+  go-repo-root = callPackage ../development/tools/go-repo-root { };
+
+  go-junit-report = callPackage ../development/tools/go-junit-report { };
+
+  gobang = callPackage ../development/tools/database/gobang {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security SystemConfiguration;
+  };
+
+  gogetdoc = callPackage ../development/tools/gogetdoc { };
+
+  gox = callPackage ../development/tools/gox { };
+
+  gprolog = callPackage ../development/compilers/gprolog { };
+
+  gwe = callPackage ../tools/misc/gwe {
+    nvidia_x11 = linuxPackages.nvidia_x11;
+  };
+
+  gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix { };
+
+  idrisPackages = dontRecurseIntoAttrs (callPackage ../development/idris-modules {
+    idris-no-deps = haskellPackages.idris;
+  });
+
+  idris = idrisPackages.with-packages [ idrisPackages.base ] ;
+
+  idris2 = callPackage ../development/compilers/idris2 { };
+
+  inherit (callPackage ../development/tools/database/indradb { })
+    indradb-server
+    indradb-client;
+
+  intel-graphics-compiler = callPackage ../development/compilers/intel-graphics-compiler { };
+
+  intercal = callPackage ../development/compilers/intercal { };
+
+  irony-server = callPackage ../development/tools/irony-server {
+    # The repository of irony to use -- must match the version of the employed emacs
+    # package.  Wishing we could merge it into one irony package, to avoid this issue,
+    # but its emacs-side expression is autogenerated, and we can't hook into it (other
+    # than peek into its version).
+    inherit (emacs.pkgs.melpaStablePackages) irony;
+  };
+
+  holo-build = callPackage ../tools/package-management/holo-build { };
+
+  hugs = callPackage ../development/interpreters/hugs { };
+
+  inherit (javaPackages) openjfx11 openjfx15 openjfx17;
+  openjfx = openjfx17;
+
+  openjdk8-bootstrap = javaPackages.compiler.openjdk8-bootstrap;
+  openjdk8 = javaPackages.compiler.openjdk8;
+  openjdk8_headless = javaPackages.compiler.openjdk8.headless;
+  jdk8 = openjdk8;
+  jdk8_headless = openjdk8_headless;
+  jre8 = openjdk8.jre;
+  jre8_headless = openjdk8_headless.jre;
+
+  openjdk11-bootstrap = javaPackages.compiler.openjdk11-bootstrap;
+  openjdk11 = javaPackages.compiler.openjdk11;
+  openjdk11_headless = javaPackages.compiler.openjdk11.headless;
+  jdk11 = openjdk11;
+  jdk11_headless = openjdk11_headless;
+
+  openjdk17-bootstrap = javaPackages.compiler.openjdk17-bootstrap;
+  openjdk17 = javaPackages.compiler.openjdk17;
+  openjdk17_headless = javaPackages.compiler.openjdk17.headless;
+  jdk17 = openjdk17;
+  jdk17_headless = openjdk17_headless;
+
+  openjdk16-bootstrap = javaPackages.compiler.openjdk16-bootstrap;
+
+  /* default JDK */
+  jdk = jdk17;
+
+  # Since the introduction of the Java Platform Module System in Java 9, Java
+  # no longer ships a separate JRE package.
+  #
+  # If you are building a 'minimal' system/image, you are encouraged to use
+  # 'jre_minimal' to build a bespoke JRE containing only the modules you need.
+  #
+  # For a general-purpose system, 'jre' defaults to the full JDK:
+  jre = jdk17;
+  jre_headless = jdk17_headless;
+
+  jre_minimal = callPackage ../development/compilers/openjdk/jre.nix { };
+
+  openjdk = openjdk17;
+  openjdk_headless = openjdk17_headless;
+
+  graalvmCEPackages =
+    recurseIntoAttrs (callPackage ../development/compilers/graalvm/community-edition {
+      inherit (darwin.apple_sdk.frameworks) Foundation;
+    });
+  graalvm11-ce = graalvmCEPackages.graalvm11-ce;
+  graalvm17-ce = graalvmCEPackages.graalvm17-ce;
+  buildGraalvmNativeImage = callPackage ../build-support/build-graalvm-native-image { };
+
+  inherit (callPackages ../development/compilers/graalvm/enterprise-edition.nix { })
+    graalvm8-ee
+    graalvm11-ee;
+
+  openshot-qt = libsForQt5.callPackage ../applications/video/openshot-qt { };
+
+  lingua-franca = callPackage ../development/compilers/lingua-franca { };
+
+  openspin = callPackage ../development/compilers/openspin { };
+
+  oraclejdk = jdkdistro true false;
+
+  oraclejdk8 = oraclejdk8distro true false;
+
+  oraclejre = lowPrio (jdkdistro false false);
+
+  oraclejre8 = lowPrio (oraclejdk8distro false false);
+
+  jrePlugin = jre8Plugin;
+
+  jre8Plugin = lowPrio (oraclejdk8distro false true);
+
+  jdkdistro = oraclejdk8distro;
+
+  oraclejdk8distro = installjdk: pluginSupport:
+    (callPackage ../development/compilers/oraclejdk/jdk8-linux.nix {
+      inherit installjdk pluginSupport;
+    });
+
+  oraclejdk11 = callPackage ../development/compilers/oraclejdk/jdk11-linux.nix { };
+
+  oraclejdk14 = callPackage ../development/compilers/oraclejdk/jdk14-linux.nix { };
+
+  jasmin = callPackage ../development/compilers/jasmin { };
+
+  java-service-wrapper = callPackage ../tools/system/java-service-wrapper {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  javacard-devkit = pkgsi686Linux.callPackage ../development/compilers/javacard-devkit { };
+
+  juniper = callPackage ../development/compilers/juniper { };
+
+  julia_10 = callPackage ../development/compilers/julia/1.0.nix {
+    gmp = gmp6;
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
+    libgit2 = libgit2.overrideAttrs (_: rec {
+      version = "0.27.10";
+      src = fetchFromGitHub {
+        owner = "libgit2";
+        repo = "libgit2";
+        rev = "v${version}";
+        sha256 = "09jz2fzv0zl5058s0g1cpnw87a2rgg8wnjwlygi18i2n9nn6m0ad";
+      };
+      patches = [];
+      meta.knownVulnerabilities = [
+        "CVE-2020-12278"
+        "CVE-2020-12279"
+      ];
+    });
+  };
+
+  julia_15 = callPackage ../development/compilers/julia/1.5.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
+  };
+
+  julia-lts = julia_10;
+  julia-stable = julia_15;
+  julia = julia-stable;
+
+  julia_16-bin = callPackage ../development/compilers/julia/1.6-bin.nix { };
+  julia_17-bin = callPackage ../development/compilers/julia/1.7-bin.nix { };
+
+  julia-lts-bin = julia_16-bin;
+  julia-stable-bin = julia_17-bin;
+  julia-bin = julia-stable-bin;
+
+  jwasm =  callPackage ../development/compilers/jwasm { };
+
+  knightos-genkfs = callPackage ../development/tools/knightos/genkfs { };
+
+  regenkfs = callPackage ../development/tools/knightos/regenkfs { };
+
+  knightos-kcc = callPackage ../development/tools/knightos/kcc { };
+
+  knightos-kimg = callPackage ../development/tools/knightos/kimg { };
+
+  knightos-kpack = callPackage ../development/tools/knightos/kpack { };
+
+  knightos-mkrom = callPackage ../development/tools/knightos/mkrom { };
+
+  remkrom = callPackage ../development/tools/knightos/remkrom { };
+
+  knightos-patchrom = callPackage ../development/tools/knightos/patchrom { };
+
+  knightos-mktiupgrade = callPackage ../development/tools/knightos/mktiupgrade { };
+
+  knightos-scas = callPackage ../development/tools/knightos/scas { };
+
+  knightos-z80e = callPackage ../development/tools/knightos/z80e { };
+
+  koka = haskell.lib.compose.justStaticExecutables (haskellPackages.callPackage ../development/compilers/koka { });
+
+  kotlin = callPackage ../development/compilers/kotlin { };
+  kotlin-native = callPackage ../development/compilers/kotlin/native.nix { };
+
+  kotlin-language-server = callPackage ../development/tools/kotlin-language-server {};
+
+  lazarus = callPackage ../development/compilers/fpc/lazarus.nix {
+    fpc = fpc;
+  };
+
+  lazarus-qt = libsForQt5.callPackage ../development/compilers/fpc/lazarus.nix {
+    fpc = fpc;
+    withQt = true;
+  };
+
+  lessc = nodePackages.less;
+
+  liquibase = callPackage ../development/tools/database/liquibase { };
+
+  lizardfs = callPackage ../tools/filesystems/lizardfs { };
+
+  lobster = callPackage ../development/compilers/lobster {
+    inherit (darwin) cf-private;
+    inherit (darwin.apple_sdk.frameworks)
+      Cocoa AudioToolbox OpenGL Foundation ForceFeedback;
+  };
+
+  lld = llvmPackages.lld;
+  lld_5 = llvmPackages_5.lld;
+  lld_6 = llvmPackages_6.lld;
+  lld_7 = llvmPackages_7.lld;
+  lld_8 = llvmPackages_8.lld;
+  lld_9 = llvmPackages_9.lld;
+  lld_10 = llvmPackages_10.lld;
+  lld_11 = llvmPackages_11.lld;
+  lld_12 = llvmPackages_12.lld;
+  lld_13 = llvmPackages_13.lld;
+  lld_14 = llvmPackages_14.lld;
+
+  lldb = llvmPackages_latest.lldb;
+  lldb_5 = llvmPackages_5.lldb;
+  lldb_6 = llvmPackages_6.lldb;
+  lldb_7 = llvmPackages_7.lldb;
+  lldb_8 = llvmPackages_8.lldb;
+  lldb_9 = llvmPackages_9.lldb;
+  lldb_10 = llvmPackages_10.lldb;
+  lldb_11 = llvmPackages_11.lldb;
+  lldb_12 = llvmPackages_12.lldb;
+  lldb_13 = llvmPackages_13.lldb;
+  lldb_14 = llvmPackages_14.lldb;
+
+  llvm = llvmPackages.llvm;
+  libllvm = llvmPackages.libllvm;
+  llvm-manpages = llvmPackages.llvm-manpages;
+
+  llvm_14 = llvmPackages_14.llvm;
+  llvm_13 = llvmPackages_13.llvm;
+  llvm_12 = llvmPackages_12.llvm;
+  llvm_11 = llvmPackages_11.llvm;
+  llvm_10 = llvmPackages_10.llvm;
+  llvm_9  = llvmPackages_9.llvm;
+  llvm_8  = llvmPackages_8.llvm;
+  llvm_7  = llvmPackages_7.llvm;
+  llvm_6  = llvmPackages_6.llvm;
+  llvm_5  = llvmPackages_5.llvm;
+
+  llvmPackages = let
+    latest_version = lib.toInt
+      (lib.versions.major llvmPackages_latest.llvm.version);
+    # This returns the minimum supported version for the platform. The
+    # assumption is that or any later version is good.
+    choose = platform:
+      /**/ if platform.isDarwin then 11
+      else if platform.isFreeBSD then 7
+      else if platform.isAndroid then 12
+      else if platform.isLinux then 11
+      else if platform.isWasm then 12
+      else latest_version;
+    # We take the "max of the mins". Why? Since those are lower bounds of the
+    # supported version set, this is like intersecting those sets and then
+    # taking the min bound of that.
+    minSupported = toString (lib.trivial.max (choose stdenv.hostPlatform) (choose
+      stdenv.targetPlatform));
+  in pkgs.${"llvmPackages_${minSupported}"};
+
+  llvmPackages_5 = recurseIntoAttrs (callPackage ../development/compilers/llvm/5 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_5.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_5.libraries or llvmPackages_5.libraries;
+  });
+
+  llvmPackages_6 = recurseIntoAttrs (callPackage ../development/compilers/llvm/6 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_6.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_6.libraries or llvmPackages_6.libraries;
+  });
+
+  llvmPackages_7 = recurseIntoAttrs (callPackage ../development/compilers/llvm/7 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_7.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_7.libraries or llvmPackages_7.libraries;
+  });
+
+  llvmPackages_8 = recurseIntoAttrs (callPackage ../development/compilers/llvm/8 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_8.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_8.libraries or llvmPackages_8.libraries;
+  });
+
+  llvmPackages_9 = recurseIntoAttrs (callPackage ../development/compilers/llvm/9 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_9.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_9.libraries or llvmPackages_9.libraries;
+  });
+
+  llvmPackages_10 = recurseIntoAttrs (callPackage ../development/compilers/llvm/10 {
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_10.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_10.libraries or llvmPackages_10.libraries;
+  });
+
+  llvmPackages_11 = recurseIntoAttrs (callPackage ../development/compilers/llvm/11 ({
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_11.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_11.libraries or llvmPackages_11.libraries;
+  } // lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) {
+    stdenv = gcc7Stdenv;
+  }));
+
+  llvmPackages_12 = recurseIntoAttrs (callPackage ../development/compilers/llvm/12 ({
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_12.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_12.libraries or llvmPackages_12.libraries;
+  } // lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) {
+    stdenv = gcc7Stdenv;
+  }));
+
+  llvmPackages_13 = recurseIntoAttrs (callPackage ../development/compilers/llvm/13 ({
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_13.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_13.libraries or llvmPackages_13.libraries;
+  } // lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) {
+    stdenv = gcc7Stdenv;
+  }));
+
+  llvmPackages_14 = recurseIntoAttrs (callPackage ../development/compilers/llvm/14 ({
+    inherit (stdenvAdapters) overrideCC;
+    buildLlvmTools = buildPackages.llvmPackages_14.tools;
+    targetLlvmLibraries = targetPackages.llvmPackages_14.libraries or llvmPackages_14.libraries;
+  } // lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) {
+    stdenv = gcc7Stdenv;
+  }));
+
+  llvmPackages_latest = llvmPackages_13;
+
+  llvmPackages_rocm = recurseIntoAttrs (callPackage ../development/compilers/llvm/rocm { });
+
+  lorri = callPackage ../tools/misc/lorri {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  manticore = callPackage ../development/compilers/manticore { };
+
+  marst = callPackage ../development/compilers/marst { };
+
+  mercury = callPackage ../development/compilers/mercury {
+    jdk = openjdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  microscheme = callPackage ../development/compilers/microscheme { };
+
+  mint = callPackage ../development/compilers/mint { };
+
+  mitscheme = callPackage ../development/compilers/mit-scheme {
+    texLive = texlive.combine { inherit (texlive) scheme-small epsf texinfo; };
+  };
+
+  mitschemeX11 = mitscheme.override {
+    enableX11 = true;
+  };
+
+  miranda = callPackage ../development/compilers/miranda {};
+
+  mkcl = callPackage ../development/compilers/mkcl {};
+
+  mlkit = callPackage ../development/compilers/mlkit {};
+
+  inherit (callPackage ../development/compilers/mlton {})
+    mlton20130715
+    mlton20180207Binary
+    mlton20180207
+    mltonHEAD;
+
+  mlton = mlton20180207;
+
+  mono = mono6;
+
+  mono4 = lowPrio (callPackage ../development/compilers/mono/4.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  });
+
+  mono5 = callPackage ../development/compilers/mono/5.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  mono6 = callPackage ../development/compilers/mono/6.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  monoDLLFixer = callPackage ../build-support/mono-dll-fixer { };
+
+  roslyn = callPackage ../development/compilers/roslyn { };
+
+  msbuild = callPackage ../development/tools/build-managers/msbuild { };
+
+  mosml = callPackage ../development/compilers/mosml { };
+
+  mozart2 = callPackage ../development/compilers/mozart {
+    emacs = emacs-nox;
+    jre_headless = jre8_headless; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  mozart2-binary = callPackage ../development/compilers/mozart/binary.nix { };
+
+  muon = callPackage ../development/compilers/muon { };
+
+  inherit (callPackages ../development/compilers/nim { })
+    nim-unwrapped nimble-unwrapped nim;
+  nimPackages = recurseIntoAttrs nim.pkgs;
+
+  nrpl = callPackage ../development/tools/nrpl { };
+
+  nimlsp = callPackage ../development/tools/misc/nimlsp { };
+
+  neko = callPackage ../development/compilers/neko { };
+
+  nextpnr = callPackage ../development/compilers/nextpnr { };
+
+  nextpnrWithGui = libsForQt5.callPackage ../development/compilers/nextpnr {
+    enableGui = true;
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+  };
+
+  acme = callPackage ../development/compilers/acme { };
+
+  nasm = callPackage ../development/compilers/nasm { };
+
+  nvidia_cg_toolkit = callPackage ../development/compilers/nvidia-cg-toolkit { };
+
+  obliv-c = callPackage ../development/compilers/obliv-c {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_05;
+  };
+
+  ocaml-ng = callPackage ./ocaml-packages.nix { };
+  ocaml = ocamlPackages.ocaml;
+
+  ocamlPackages = recurseIntoAttrs ocaml-ng.ocamlPackages;
+
+  ocaml-crunch = ocamlPackages.crunch.bin;
+
+  inherit (callPackage ../development/tools/ocaml/ocamlformat { })
+    ocamlformat # latest version
+    ocamlformat_0_11_0 ocamlformat_0_12 ocamlformat_0_13_0 ocamlformat_0_14_0
+    ocamlformat_0_14_1 ocamlformat_0_14_2 ocamlformat_0_14_3 ocamlformat_0_15_0
+    ocamlformat_0_15_1 ocamlformat_0_16_0 ocamlformat_0_17_0 ocamlformat_0_18_0
+    ocamlformat_0_19_0 ocamlformat_0_20_0 ocamlformat_0_20_1;
+
+  orc = callPackage ../development/compilers/orc { };
+
+  orocos-kdl = callPackage ../development/libraries/orocos-kdl { };
+
+  metaocaml_3_09 = callPackage ../development/compilers/ocaml/metaocaml-3.09.nix { };
+
+  ber_metaocaml = callPackage ../development/compilers/ocaml/ber-metaocaml.nix { };
+
+  ocaml_make = callPackage ../development/ocaml-modules/ocamlmake { };
+
+  ocaml-top = callPackage ../development/tools/ocaml/ocaml-top { };
+
+  ocsigen-i18n = callPackage ../development/tools/ocaml/ocsigen-i18n { };
+
+  opa = callPackage ../development/compilers/opa {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_04;
+  };
+
+  opaline = callPackage ../development/tools/ocaml/opaline { };
+
+  opam = callPackage ../development/tools/ocaml/opam { };
+  opam_1_2 = callPackage ../development/tools/ocaml/opam/1.2.2.nix {
+    inherit (ocaml-ng.ocamlPackages_4_05) ocaml;
+  };
+
+  opam-installer = callPackage ../development/tools/ocaml/opam/installer.nix { };
+
+  wrapWatcom = callPackage ../development/compilers/open-watcom/wrapper.nix { };
+  open-watcom-v2-unwrapped = callPackage ../development/compilers/open-watcom/v2.nix { };
+  open-watcom-v2 = wrapWatcom open-watcom-v2-unwrapped { };
+  open-watcom-bin-unwrapped = callPackage ../development/compilers/open-watcom/bin.nix { };
+  open-watcom-bin = wrapWatcom open-watcom-bin-unwrapped { };
+
+  passerine = callPackage ../development/compilers/passerine { };
+
+  pforth = callPackage ../development/compilers/pforth {};
+
+  picat = callPackage ../development/compilers/picat { };
+
+  ponyc = callPackage ../development/compilers/ponyc {
+    # Upstream pony has dropped support for versions compiled with gcc.
+    stdenv = llvmPackages_9.stdenv;
+  };
+
+  pony-corral = callPackage ../development/compilers/ponyc/pony-corral.nix { };
+
+  qbe = callPackage ../development/compilers/qbe { };
+
+  rasm = callPackage ../development/compilers/rasm { };
+
+  rgbds = callPackage ../development/compilers/rgbds { };
+
+  rgxg = callPackage ../tools/text/rgxg { };
+
+  rocclr = callPackage ../development/libraries/rocclr { };
+
+  hip = callPackage ../development/compilers/hip {
+    inherit (llvmPackages_rocm) clang clang-unwrapped compiler-rt lld llvm;
+  };
+
+  rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake { };
+
+  rocm-comgr = callPackage ../development/libraries/rocm-comgr {
+    inherit (llvmPackages_rocm) clang lld llvm;
+  };
+
+  rocm-device-libs = callPackage ../development/libraries/rocm-device-libs {
+    inherit (llvmPackages_rocm) clang clang-unwrapped lld llvm;
+  };
+
+  rocm-opencl-icd = callPackage ../development/libraries/rocm-opencl-icd { };
+
+  rocm-opencl-runtime = callPackage ../development/libraries/rocm-opencl-runtime {
+    inherit (llvmPackages_rocm) clang clang-unwrapped lld llvm;
+  };
+
+  rocm-runtime = callPackage ../development/libraries/rocm-runtime {
+    inherit (llvmPackages_rocm) clang-unwrapped llvm;
+  };
+
+  rocm-smi = python3Packages.callPackage ../tools/system/rocm-smi { };
+
+  rocm-thunk = callPackage ../development/libraries/rocm-thunk { };
+
+  rocminfo = callPackage ../development/tools/rocminfo { };
+
+  rtags = callPackage ../development/tools/rtags {
+    inherit (darwin) apple_sdk;
+  };
+
+  rust_1_58 = callPackage ../development/compilers/rust/1_58.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security SystemConfiguration;
+    llvm_13 = llvmPackages_13.libllvm;
+  };
+  rust = rust_1_58;
+
+  mrustc = callPackage ../development/compilers/mrustc { };
+  mrustc-minicargo = callPackage ../development/compilers/mrustc/minicargo.nix { };
+  mrustc-bootstrap = callPackage ../development/compilers/mrustc/bootstrap.nix { };
+
+  rustPackages_1_58 = rust_1_58.packages.stable;
+  rustPackages = rustPackages_1_58;
+
+  inherit (rustPackages) cargo clippy rustc rustPlatform;
+
+  makeRustPlatform = callPackage ../development/compilers/rust/make-rust-platform.nix {};
+
+  buildRustCrate = callPackage ../build-support/rust/build-rust-crate { };
+  buildRustCrateHelpers = callPackage ../build-support/rust/build-rust-crate/helpers.nix { };
+  cratesIO = callPackage ../build-support/rust/crates-io.nix { };
+
+  cargo-web = callPackage ../development/tools/cargo-web {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  cargo-flamegraph = callPackage ../development/tools/cargo-flamegraph {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (linuxPackages) perf;
+  };
+
+  carnix = (callPackage ../build-support/rust/carnix.nix { }).carnix { };
+
+  defaultCrateOverrides = callPackage ../build-support/rust/default-crate-overrides.nix { };
+
+  cargo-about = callPackage ../tools/package-management/cargo-about { };
+  cargo-all-features = callPackage ../development/tools/rust/cargo-all-features { };
+  cargo-audit = callPackage ../tools/package-management/cargo-audit {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-bisect-rustc = callPackage ../development/tools/rust/cargo-bisect-rustc {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-bitbake = callPackage ../development/tools/rust/cargo-bitbake { };
+  cargo-c = callPackage ../development/tools/rust/cargo-c {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+  cargo-criterion = callPackage ../development/tools/rust/cargo-criterion { };
+  cargo-deadlinks = callPackage ../development/tools/rust/cargo-deadlinks {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-deb = callPackage ../tools/package-management/cargo-deb {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-deps = callPackage ../tools/package-management/cargo-deps { };
+  cargo-download = callPackage ../tools/package-management/cargo-download { };
+  cargo-edit = callPackage ../tools/package-management/cargo-edit {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-kcov = callPackage ../tools/package-management/cargo-kcov { };
+  cargo-graph = callPackage ../tools/package-management/cargo-graph { };
+  cargo-license = callPackage ../tools/package-management/cargo-license { };
+  cargo-llvm-lines = callPackage ../development/tools/rust/cargo-llvm-lines { };
+  cargo-outdated = callPackage ../tools/package-management/cargo-outdated {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+  cargo-release = callPackage ../tools/package-management/cargo-release {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-rr = callPackage ../development/tools/rust/cargo-rr { };
+  cargo-tarpaulin = callPackage ../development/tools/analysis/cargo-tarpaulin {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-update = callPackage ../tools/package-management/cargo-update {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  cargo-asm = callPackage ../development/tools/rust/cargo-asm {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-binutils = callPackage ../development/tools/rust/cargo-binutils { };
+  cargo-bloat = callPackage ../development/tools/rust/cargo-bloat { };
+  cargo-cache = callPackage ../development/tools/rust/cargo-cache {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-crev = callPackage ../development/tools/rust/cargo-crev {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+  cargo-cross = callPackage ../development/tools/rust/cargo-cross { };
+  cargo-deny = callPackage ../development/tools/rust/cargo-deny {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-depgraph = callPackage ../development/tools/rust/cargo-depgraph { };
+  cargo-dephell = callPackage ../development/tools/rust/cargo-dephell {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-diet = callPackage ../development/tools/rust/cargo-diet { };
+  cargo-embed = callPackage ../development/tools/rust/cargo-embed {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+  cargo-expand = callPackage ../development/tools/rust/cargo-expand { };
+  cargo-feature = callPackage ../development/tools/rust/cargo-feature { };
+  cargo-flash = callPackage ../development/tools/rust/cargo-flash {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+  cargo-fund = callPackage ../development/tools/rust/cargo-fund {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-fuzz = callPackage ../development/tools/rust/cargo-fuzz { };
+  cargo-geiger = callPackage ../development/tools/rust/cargo-geiger {
+    inherit (darwin) libiconv;
+    inherit (darwin.apple_sdk.frameworks) Security CoreFoundation;
+  };
+  cargo-inspect = callPackage ../development/tools/rust/cargo-inspect {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-insta = callPackage ../development/tools/rust/cargo-insta { };
+  cargo-limit = callPackage ../development/tools/rust/cargo-limit { };
+  cargo-make = callPackage ../development/tools/rust/cargo-make {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+  cargo-modules = callPackage ../development/tools/rust/cargo-modules {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices;
+  };
+  cargo-msrv = callPackage ../development/tools/rust/cargo-msrv {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-play = callPackage ../development/tools/rust/cargo-play { };
+  cargo-raze = callPackage ../development/tools/rust/cargo-raze {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-readme = callPackage ../development/tools/rust/cargo-readme {};
+  cargo-sort = callPackage ../development/tools/rust/cargo-sort { };
+  cargo-spellcheck = callPackage ../development/tools/rust/cargo-spellcheck {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-supply-chain = callPackage ../development/tools/rust/cargo-supply-chain {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  cargo-sweep = callPackage ../development/tools/rust/cargo-sweep { };
+  cargo-sync-readme = callPackage ../development/tools/rust/cargo-sync-readme {};
+  cargo-tally = callPackage ../development/tools/rust/cargo-tally {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation IOKit;
+  };
+  cargo-udeps = callPackage ../development/tools/rust/cargo-udeps {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security SystemConfiguration;
+  };
+  cargo-valgrind = callPackage ../development/tools/rust/cargo-valgrind { };
+  cargo-watch = callPackage ../development/tools/rust/cargo-watch {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Foundation;
+  };
+  cargo-wipe = callPackage ../development/tools/rust/cargo-wipe { };
+  cargo-xbuild = callPackage ../development/tools/rust/cargo-xbuild { };
+  cargo-generate = callPackage ../development/tools/rust/cargo-generate {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  cargo-whatfeatures = callPackage ../development/tools/rust/cargo-whatfeatures {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  crate2nix = callPackage ../development/tools/rust/crate2nix { };
+
+  convco = callPackage ../development/tools/convco {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  devserver = callPackage ../development/tools/rust/devserver {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  maturin = callPackage ../development/tools/rust/maturin {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  panamax = callPackage ../development/tools/rust/panamax {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rhack = callPackage ../development/tools/rust/rhack { };
+  inherit (rustPackages) rls;
+  roogle = callPackage ../development/tools/rust/roogle { };
+  rustfmt = rustPackages.rustfmt;
+  rustracer = callPackage ../development/tools/rust/racer {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  rust-analyzer-unwrapped = callPackage ../development/tools/rust/rust-analyzer {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+  rust-analyzer = callPackage ../development/tools/rust/rust-analyzer/wrapper.nix { };
+  rust-bindgen-unwrapped = callPackage ../development/tools/rust/bindgen/unwrapped.nix { };
+  rust-bindgen = callPackage ../development/tools/rust/bindgen { };
+  rust-cbindgen = callPackage ../development/tools/rust/cbindgen {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  rust-script = callPackage ../development/tools/rust/rust-script { };
+  rustup = callPackage ../development/tools/rust/rustup {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+  rustup-toolchain-install-master = callPackage ../development/tools/rust/rustup-toolchain-install-master {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  rusty-man = callPackage ../development/tools/rust/rusty-man { };
+
+  sagittarius-scheme = callPackage ../development/compilers/sagittarius-scheme {};
+
+  sbclBootstrap = callPackage ../development/compilers/sbcl/bootstrap.nix {};
+  sbcl_2_0_8 = callPackage ../development/compilers/sbcl/2.0.8.nix {};
+  sbcl_2_0_9 = callPackage ../development/compilers/sbcl/2.0.9.nix {};
+  sbcl_2_1_1 = callPackage ../development/compilers/sbcl/2.1.1.nix {};
+  sbcl_2_1_2 = callPackage ../development/compilers/sbcl/2.1.2.nix {};
+  sbcl_2_1_9 = callPackage ../development/compilers/sbcl/2.1.9.nix {};
+  sbcl_2_1_10 = callPackage ../development/compilers/sbcl/2.1.10.nix {};
+  sbcl_2_1_11 = callPackage ../development/compilers/sbcl/2.1.11.nix {};
+  sbcl = sbcl_2_1_11;
+
+  roswell = callPackage ../development/tools/roswell { };
+
+  scala_2_10 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.10"; jre = jdk8; };
+  scala_2_11 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.11"; jre = jdk8; };
+  scala_2_12 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.12"; };
+  scala_2_13 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.13"; };
+
+  scala = scala_2_13;
+  scala-runners = callPackage ../development/compilers/scala-runners {
+    coursier = coursier.override { jre = jdk8; };
+  };
+
+  metal = callPackage ../development/libraries/metal { };
+  metals = callPackage ../development/tools/metals { };
+  scalafix = callPackage ../development/tools/scalafix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  scalafmt = callPackage ../development/tools/scalafmt { };
+
+  scryer-prolog = callPackage ../development/compilers/scryer-prolog { };
+
+  sdcc = callPackage ../development/compilers/sdcc {
+    gputils = null;
+  };
+
+  seren = callPackage ../applications/networking/instant-messengers/seren { };
+
+  serialdv = callPackage ../development/libraries/serialdv {  };
+
+  serpent = callPackage ../development/compilers/serpent { };
+
+  shmig = callPackage ../development/tools/database/shmig { };
+
+  # smlnjBootstrap should be redundant, now that smlnj works on Darwin natively
+  smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { };
+  smlnj = callPackage ../development/compilers/smlnj {
+    inherit (darwin) Libsystem;
+  };
+
+  smlpkg = callPackage ../tools/package-management/smlpkg { };
+
+  solc = callPackage ../development/compilers/solc {
+    boost = boost172;
+  };
+
+  souffle = callPackage ../development/compilers/souffle {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  spasm-ng = callPackage ../development/compilers/spasm-ng { };
+
+  spirv-llvm-translator = callPackage ../development/compilers/spirv-llvm-translator { };
+
+  sqldeveloper = callPackage ../development/tools/database/sqldeveloper {
+    jdk = oraclejdk;
+  };
+
+  sqlfluff = callPackage ../development/tools/database/sqlfluff { };
+
+  sqlx-cli = callPackage ../development/tools/rust/sqlx-cli {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration CoreFoundation Security;
+  };
+
+  squeak = callPackage ../development/compilers/squeak { };
+
+  squirrel-sql = callPackage ../development/tools/database/squirrel-sql {
+    drivers = [ jtds_jdbc mssql_jdbc mysql_jdbc postgresql_jdbc ];
+  };
+
+  stalin = callPackage ../development/compilers/stalin { };
+
+  metaBuildEnv = callPackage ../development/compilers/meta-environment/meta-build-env { };
+
+  svd2rust = callPackage ../development/tools/rust/svd2rust { };
+
+  svdtools = with python3Packages; toPythonApplication svdtools;
+
+  swift = callPackage ../development/compilers/swift { };
+
+  swiProlog = callPackage ../development/compilers/swi-prolog {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    jdk = openjdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  swiPrologWithGui = swiProlog.override { withGui = true; };
+
+  tbb = callPackage ../development/libraries/tbb { };
+
+  terra = callPackage ../development/compilers/terra {
+    llvmPackages = llvmPackages_10;
+  };
+
+  teyjus = callPackage ../development/compilers/teyjus (
+    with ocaml-ng.ocamlPackages_4_02; {
+      inherit ocaml;
+      omake = omake_rc1;
+  });
+
+  thrust = callPackage ../development/tools/thrust {
+    gconf = gnome2.GConf;
+  };
+
+  tinycc = callPackage ../development/compilers/tinycc { };
+
+  tinygo = callPackage ../development/compilers/tinygo {
+    inherit (llvmPackages_10) llvm clang-unwrapped lld;
+    avrgcc = pkgsCross.avr.buildPackages.gcc;
+  };
+
+  tinyscheme = callPackage ../development/interpreters/tinyscheme {
+    stdenv = gccStdenv;
+  };
+
+  bupc = callPackage ../development/compilers/bupc { };
+
+  uasm = callPackage ../development/compilers/uasm { };
+
+  urn = callPackage ../development/compilers/urn { };
+
+  urweb = callPackage ../development/compilers/urweb {
+    icu = icu67;
+  };
+
+  urbackup-client = callPackage ../applications/backup/urbackup-client { };
+
+  vlang = callPackage ../development/compilers/vlang { };
+
+  vala-lint = callPackage ../development/tools/vala-lint { };
+
+  inherit (callPackage ../development/compilers/vala { })
+    vala_0_48
+    vala_0_54
+    vala;
+
+  vyper = with python3Packages; toPythonApplication vyper;
+
+  wcc = callPackage ../development/compilers/wcc { };
+
+  wla-dx = callPackage ../development/compilers/wla-dx { };
+
+  wrapCCWith =
+    { cc
+    , # This should be the only bintools runtime dep with this sort of logic. The
+      # Others should instead delegate to the next stage's choice with
+      # `targetPackages.stdenv.cc.bintools`. This one is different just to
+      # provide the default choice, avoiding infinite recursion.
+      # See the bintools attribute for the logic and reasoning. We need to provide
+      # a default here, since eval will hit this function when bootstrapping
+      # stdenv where the bintools attribute doesn't exist, but will never actually
+      # be evaluated -- callPackage ends up being too eager.
+      bintools ? pkgs.bintools
+    , libc ? bintools.libc
+    , # libc++ from the default LLVM version is bound at the top level, but we
+      # want the C++ library to be explicitly chosen by the caller, and null by
+      # default.
+      libcxx ? null
+    , extraPackages ? lib.optional (cc.isGNU or false && stdenv.targetPlatform.isMinGW) threadsCross
+    , ...
+    } @ extraArgs:
+      callPackage ../build-support/cc-wrapper (let self = {
+    nativeTools = stdenv.targetPlatform == stdenv.hostPlatform && stdenv.cc.nativeTools or false;
+    nativeLibc = stdenv.targetPlatform == stdenv.hostPlatform && stdenv.cc.nativeLibc or false;
+    nativePrefix = stdenv.cc.nativePrefix or "";
+    noLibc = !self.nativeLibc && (self.libc == null);
+
+    isGNU = cc.isGNU or false;
+    isClang = cc.isClang or false;
+
+    inherit cc bintools libc libcxx extraPackages zlib;
+  } // extraArgs; in self);
+
+  wrapCC = cc: wrapCCWith {
+    inherit cc;
+  };
+
+  wrapBintoolsWith =
+    { bintools
+    , libc ? if stdenv.targetPlatform != stdenv.hostPlatform then libcCross else stdenv.cc.libc
+    , ...
+    } @ extraArgs:
+      callPackage ../build-support/bintools-wrapper (let self = {
+    nativeTools = stdenv.targetPlatform == stdenv.hostPlatform && stdenv.cc.nativeTools or false;
+    nativeLibc = stdenv.targetPlatform == stdenv.hostPlatform && stdenv.cc.nativeLibc or false;
+    nativePrefix = stdenv.cc.nativePrefix or "";
+
+    noLibc = (self.libc == null);
+
+    inherit bintools libc;
+    inherit (darwin) postLinkSignHook signingUtils;
+  } // extraArgs; in self);
+
+  yaml-language-server = nodePackages.yaml-language-server;
+
+  # prolog
+  yap = callPackage ../development/compilers/yap { };
+
+  yasm = callPackage ../development/compilers/yasm { };
+
+  yosys = callPackage ../development/compilers/yosys { };
+  yosys-bluespec = callPackage ../development/compilers/yosys/plugins/bluespec.nix { };
+  yosys-ghdl = callPackage ../development/compilers/yosys/plugins/ghdl.nix { };
+  yosys-symbiflow = callPackage ../development/compilers/yosys/plugins/symbiflow.nix { };
+
+  z88dk = callPackage ../development/compilers/z88dk { };
+
+  zulip = callPackage ../applications/networking/instant-messengers/zulip {
+    # Bubblewrap breaks zulip, see https://github.com/NixOS/nixpkgs/pull/97264#issuecomment-704454645
+    appimageTools = pkgs.appimageTools.override {
+      buildFHSUserEnv = pkgs.buildFHSUserEnv;
+    };
+  };
+
+  zulip-term = callPackage ../applications/networking/instant-messengers/zulip-term { };
+
+  zulu8 = callPackage ../development/compilers/zulu/8.nix { };
+  zulu = callPackage ../development/compilers/zulu { };
+
+  ### DEVELOPMENT / INTERPRETERS
+
+  acl2 = callPackage ../development/interpreters/acl2 { };
+  acl2-minimal = callPackage ../development/interpreters/acl2 { certifyBooks = false; };
+
+  angelscript = callPackage ../development/interpreters/angelscript {};
+
+  angelscript_2_22 = callPackage ../development/interpreters/angelscript/2.22.nix {};
+
+  babashka = callPackage ../development/interpreters/clojure/babashka.nix { };
+
+  # BQN interpreters and compilers
+
+  mbqn = callPackage ../development/interpreters/bqn/mlochbaum-bqn { };
+
+  cbqn = cbqn-bootstrap.phase2;
+  cbqn-standalone = cbqn-bootstrap.phase0;
+
+  # Below, the classic self-bootstrapping process
+  cbqn-bootstrap = lib.dontRecurseIntoAttrs {
+    mbqn-source = buildPackages.mbqn.src;
+
+    phase0 = callPackage ../development/interpreters/bqn/cbqn {
+      genBytecode = false;
+      bqn-path = null;
+      mbqn-source = null;
+    };
+
+    phase1 = callPackage ../development/interpreters/bqn/cbqn {
+      inherit (cbqn-bootstrap) mbqn-source;
+      genBytecode = true;
+      bqn-path = "${buildPackages.cbqn-bootstrap.phase0}/bin/cbqn";
+    };
+
+    phase2 = callPackage ../development/interpreters/bqn/cbqn {
+      inherit (cbqn-bootstrap) mbqn-source;
+      genBytecode = true;
+      bqn-path = "${buildPackages.cbqn-bootstrap.phase1}/bin/cbqn";
+    };
+  };
+
+  dbqn = callPackage ../development/interpreters/bqn/dzaima-bqn {
+    buildNativeImage = false;
+    stdenv = stdenvNoCC;
+    jdk = jre;
+  };
+  dbqn-native = callPackage ../development/interpreters/bqn/dzaima-bqn {
+    buildNativeImage = true;
+    jdk = graalvm11-ce;
+  };
+
+  chibi = callPackage ../development/interpreters/chibi { };
+
+  ceptre = callPackage ../development/interpreters/ceptre { };
+
+  cling = callPackage ../development/interpreters/cling { };
+
+  clips = callPackage ../development/interpreters/clips { };
+
+  cliscord = callPackage ../misc/cliscord { };
+
+  clisp = callPackage ../development/interpreters/clisp { };
+  clisp-tip = callPackage ../development/interpreters/clisp/hg.nix { };
+
+  clojupyter = callPackage ../applications/editors/jupyter-kernels/clojupyter {
+    jre = jre8;
+  };
+
+  clojure = callPackage ../development/interpreters/clojure {
+    # set this to an LTS version of java
+    jdk = jdk11;
+  };
+
+  clojure-lsp = callPackage ../development/tools/misc/clojure-lsp { };
+
+  clooj = callPackage ../development/interpreters/clojure/clooj.nix { };
+
+  dhall = haskell.lib.compose.justStaticExecutables haskellPackages.dhall;
+
+  dhall-bash = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-bash;
+
+  dhall-docs = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-docs;
+
+  dhall-lsp-server = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-lsp-server;
+
+  dhall-json = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-json;
+
+  dhall-nix = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-nix;
+
+  dhall-nixpkgs = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-nixpkgs;
+
+  dhall-text = haskell.lib.compose.justStaticExecutables haskellPackages.dhall-text;
+
+  dhallPackages = recurseIntoAttrs (callPackage ./dhall-packages.nix { });
+
+  duktape = callPackage ../development/interpreters/duktape { };
+
+  duckscript = callPackage ../development/tools/rust/duckscript {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  evcxr = callPackage ../development/interpreters/evcxr {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  beam = callPackage ./beam-packages.nix { };
+  beam_nox = callPackage ./beam-packages.nix { beam = beam_nox; wxSupport = false; };
+  beam_minimal = callPackage ./beam-packages.nix {
+    beam = beam_minimal;
+    wxSupport = false;
+    systemdSupport = false;
+  };
+
+  inherit (beam.interpreters)
+    erlang erlangR24 erlangR23 erlangR22 erlangR21
+    erlang_odbc erlang_javac erlang_odbc_javac erlang_basho_R16B02
+    elixir elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir_1_9
+    elixir_ls;
+
+  erlang_nox = beam_nox.interpreters.erlang;
+
+  inherit (beam.packages.erlang)
+    erlang-ls erlfmt elvis-erlang
+    rebar rebar3 rebar3WithPlugins
+    fetchHex beamPackages;
+
+  inherit (beam.packages.erlangR21) lfe lfe_1_3;
+
+  gnudatalanguage = callPackage ../development/interpreters/gnudatalanguage {
+    inherit (llvmPackages) openmp;
+    # MPICH currently build on Darwin
+    mpi = mpich;
+  };
+
+  graphql-client = callPackage ../development/tools/graphql-client {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  groovy = callPackage ../development/interpreters/groovy { };
+
+  inherit (callPackages ../applications/networking/cluster/hadoop { })
+    hadoop_3_3
+    hadoop_3_2
+    hadoop2;
+  hadoop3 = hadoop_3_3;
+  hadoop = hadoop3;
+
+  io = callPackage ../development/interpreters/io { };
+
+  ivy = callPackage ../development/interpreters/ivy { };
+
+  j = callPackage ../development/interpreters/j {
+    stdenv = clangStdenv;
+  };
+
+  jacinda = haskell.lib.compose.justStaticExecutables haskell.packages.ghc921.jacinda;
+
+  janet = callPackage ../development/interpreters/janet {};
+
+  jpm = callPackage ../development/interpreters/janet/jpm.nix {};
+
+  jelly = callPackage ../development/interpreters/jelly {};
+
+  jimtcl = callPackage ../development/interpreters/jimtcl {};
+
+  jmeter = callPackage ../applications/networking/jmeter {};
+
+  joker = callPackage ../development/interpreters/joker {};
+
+  davmail = callPackage ../applications/networking/davmail {};
+
+  kanif = callPackage ../applications/networking/cluster/kanif { };
+
+  lumo = callPackage ../development/interpreters/clojurescript/lumo {
+    nodejs = nodejs_latest;
+  };
+
+  lxappearance = callPackage ../desktops/lxde/core/lxappearance { };
+
+  lxappearance-gtk2 = callPackage ../desktops/lxde/core/lxappearance {
+    gtk2 = gtk2-x11;
+    withGtk3 = false;
+  };
+
+  lxmenu-data = callPackage ../desktops/lxde/core/lxmenu-data.nix { };
+
+  lxpanel = callPackage ../desktops/lxde/core/lxpanel {
+    gtk2 = gtk2-x11;
+  };
+
+  lxtask = callPackage ../desktops/lxde/core/lxtask { };
+
+  lxrandr = callPackage ../desktops/lxde/core/lxrandr { };
+
+  lxsession = callPackage ../desktops/lxde/core/lxsession { };
+
+  kona = callPackage ../development/interpreters/kona {};
+
+  lolcode = callPackage ../development/interpreters/lolcode { };
+
+  love_0_10 = callPackage ../development/interpreters/love/0.10.nix { };
+  love_11 = callPackage ../development/interpreters/love/11.nix { };
+  love = love_0_10;
+
+  wabt = callPackage ../development/tools/wabt { };
+
+  ### LUA interpreters
+  luaInterpreters = callPackage ./../development/interpreters/lua-5 {};
+  inherit (luaInterpreters) lua5_1 lua5_2 lua5_2_compat lua5_3 lua5_3_compat lua5_4 lua5_4_compat luajit_2_1 luajit_2_0;
+
+  lua5 = lua5_2_compat;
+  lua = lua5;
+
+  lua51Packages = recurseIntoAttrs lua5_1.pkgs;
+  lua52Packages = recurseIntoAttrs lua5_2.pkgs;
+  lua53Packages = recurseIntoAttrs lua5_3.pkgs;
+  luajitPackages = recurseIntoAttrs luajit.pkgs;
+
+  luaPackages = lua52Packages;
+
+  luajit = luajit_2_1;
+
+  luarocks = luaPackages.luarocks;
+  luarocks-nix = luaPackages.luarocks-nix;
+
+  toluapp = callPackage ../development/tools/toluapp {
+    lua = lua5_1; # doesn't work with any other :(
+  };
+
+  ### END OF LUA
+
+  ### CuboCore
+  CuboCore = recurseIntoAttrs (import ./cubocore-packages.nix {
+    inherit newScope lxqt lib libsForQt5;
+  });
+
+  ### End of CuboCore
+
+  maude = callPackage ../development/interpreters/maude {
+    stdenv = if stdenv.cc.isClang then llvmPackages_5.stdenv else stdenv;
+  };
+
+  me_cleaner = callPackage ../tools/misc/me_cleaner { };
+
+  mesos-dns = callPackage ../servers/mesos-dns { };
+
+  metamath = callPackage ../development/interpreters/metamath { };
+
+  minder = callPackage ../applications/misc/minder { };
+
+  mujs = callPackage ../development/interpreters/mujs { };
+
+  nextflow = callPackage ../development/interpreters/nextflow { };
+
+  ngn-k = callPackage ../development/interpreters/ngn-k { };
+
+  obb = callPackage ../development/interpreters/clojure/obb.nix { };
+
+  octave = callPackage ../development/interpreters/octave {
+    python = python3;
+    mkDerivation = stdenv.mkDerivation;
+  };
+  octave-jit = callPackage ../development/interpreters/octave {
+    python = python3;
+    enableJIT = true;
+    mkDerivation = stdenv.mkDerivation;
+  };
+  octaveFull = libsForQt5.callPackage ../development/interpreters/octave {
+    python = python3;
+    enableQt = true;
+    overridePlatforms = ["x86_64-linux" "x86_64-darwin"];
+  };
+
+  octave-kernel = callPackage ../applications/editors/jupyter-kernels/octave { };
+
+  octavePackages = recurseIntoAttrs octave.pkgs;
+
+  ocropus = callPackage ../applications/misc/ocropus { };
+
+  pachyderm = callPackage ../applications/networking/cluster/pachyderm { };
+
+
+  # PHP interpreters, packages and extensions.
+  #
+  # Set default PHP interpreter, extensions and packages
+  php = php80;
+  phpExtensions = php.extensions;
+  phpPackages = php.packages;
+
+  # Import PHP81 interpreter, extensions and packages
+  php81 = callPackage ../development/interpreters/php/8.1.nix {
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+  };
+  php81Extensions = recurseIntoAttrs php81.extensions;
+  php81Packages = recurseIntoAttrs php81.packages;
+
+  # Import PHP80 interpreter, extensions and packages
+  php80 = callPackage ../development/interpreters/php/8.0.nix {
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+  };
+  php80Extensions = recurseIntoAttrs php80.extensions;
+  php80Packages = recurseIntoAttrs php80.packages;
+
+  # Import PHP74 interpreter, extensions and packages
+  php74 = callPackage ../development/interpreters/php/7.4.nix {
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+  };
+  php74Extensions = recurseIntoAttrs php74.extensions;
+  php74Packages = recurseIntoAttrs php74.packages;
+
+
+  picoc = callPackage ../development/interpreters/picoc {};
+
+  picolisp = callPackage ../development/interpreters/picolisp {};
+
+  polyml = callPackage ../development/compilers/polyml { };
+  polyml56 = callPackage ../development/compilers/polyml/5.6.nix { };
+  polyml57 = callPackage ../development/compilers/polyml/5.7.nix { };
+
+  pure = callPackage ../development/interpreters/pure {
+    /*llvm = llvm_35;*/
+  };
+  purePackages = recurseIntoAttrs (callPackage ./pure-packages.nix {});
+
+  # Python interpreters. All standard library modules are included except for tkinter, which is
+  # available as `pythonPackages.tkinter` and can be used as any other Python package.
+  # When switching these sets, please update docs at ../../doc/languages-frameworks/python.md
+  python2 = python27;
+  python3 = python39;
+  pypy = pypy2;
+  pypy2 = pypy27;
+  pypy3 = pypy38;
+
+  # Python interpreter that is build with all modules, including tkinter.
+  # These are for compatibility and should not be used inside Nixpkgs.
+  python2Full = python2.override {
+    self = python2Full;
+    pythonAttr = "python2Full";
+    x11Support = true;
+  };
+  python27Full = python27.override {
+    self = python27Full;
+    pythonAttr = "python27Full";
+    x11Support = true;
+  };
+  python3Full = python3.override {
+    self = python3Full;
+    pythonAttr = "python3Full";
+    bluezSupport = true;
+    x11Support = true;
+  };
+  python37Full = python37.override {
+    self = python37Full;
+    pythonAttr = "python37Full";
+    bluezSupport = true;
+    x11Support = true;
+  };
+  python38Full = python38.override {
+    self = python38Full;
+    pythonAttr = "python38Full";
+    bluezSupport = true;
+    x11Support = true;
+  };
+  python39Full = python39.override {
+    self = python39Full;
+    pythonAttr = "python39Full";
+    bluezSupport = true;
+    x11Support = true;
+  };
+
+  # pythonPackages further below, but assigned here because they need to be in sync
+  python2Packages = python2.pkgs;
+  python3Packages = python3.pkgs;
+
+  pythonInterpreters = callPackage ./../development/interpreters/python { };
+  inherit (pythonInterpreters) python27 python37 python38 python39 python310 python311 python3Minimal pypy27 pypy38 pypy37 rustpython;
+
+  # Python package sets.
+  python27Packages = python27.pkgs;
+  python37Packages = python37.pkgs;
+  python38Packages = python38.pkgs;
+  python39Packages = recurseIntoAttrs python39.pkgs;
+  python310Packages = recurseIntoAttrs python310.pkgs;
+  python311Packages = python311.pkgs;
+  pypyPackages = pypy.pkgs;
+  pypy2Packages = pypy2.pkgs;
+  pypy27Packages = pypy27.pkgs;
+  pypy3Packages = pypy3.pkgs;
+  pypy37Packages = pypy37.pkgs;
+  pypy38Packages = pypy38.pkgs;
+
+  py3c = callPackage ../development/libraries/py3c { };
+
+  pythonManylinuxPackages = callPackage ./../development/interpreters/python/manylinux { };
+
+  pythonCondaPackages = callPackage ./../development/interpreters/python/conda { };
+
+  update-python-libraries = callPackage ../development/interpreters/python/update-python-libraries { };
+
+  # Should eventually be moved inside Python interpreters.
+  python-setup-hook = callPackage ../development/interpreters/python/setup-hook.nix { };
+
+  pythonDocs = recurseIntoAttrs (callPackage ../development/interpreters/python/cpython/docs {});
+
+  pypi2nix = callPackage ../development/tools/pypi2nix {};
+
+  pypi-mirror = callPackage ../development/tools/pypi-mirror {};
+
+  setupcfg2nix = python3Packages.callPackage ../development/tools/setupcfg2nix {};
+
+  # These pyside tools do not provide any Python modules and are meant to be here.
+  # See ../development/python-modules/pyside for details.
+  pysideApiextractor = callPackage ../development/python-modules/pyside/apiextractor.nix { };
+  pysideGeneratorrunner = callPackage ../development/python-modules/pyside/generatorrunner.nix { };
+
+  svg2tikz = python27Packages.svg2tikz;
+
+  pew = callPackage ../development/tools/pew {};
+
+  poetry = callPackage ../development/tools/poetry2nix/poetry2nix/pkgs/poetry {
+    python = python3;
+  };
+  poetry2nix = callPackage ../development/tools/poetry2nix/poetry2nix {
+    inherit pkgs lib;
+  };
+
+  poetry2conda = python3Packages.callPackage ../development/python-modules/poetry2conda { };
+
+  pipenv = callPackage ../development/tools/pipenv {};
+
+  pipewire = callPackage ../development/libraries/pipewire {};
+  pipewire-media-session = callPackage ../development/libraries/pipewire/media-session.nix {};
+  pipewire_0_2 = callPackage ../development/libraries/pipewire/0.2.nix {};
+  wireplumber = callPackage ../development/libraries/pipewire/wireplumber.nix {};
+
+  pyradio = callPackage ../applications/audio/pyradio {};
+
+  racket = callPackage ../development/interpreters/racket {
+    # racket 6.11 doesn't build with gcc6 + recent glibc:
+    # https://github.com/racket/racket/pull/1886
+    # https://github.com/NixOS/nixpkgs/pull/31017#issuecomment-343574769
+    stdenv = if stdenv.isDarwin then stdenv else gcc7Stdenv;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+  racket_7_9 = callPackage ../development/interpreters/racket/racket_7_9.nix {
+    stdenv = if stdenv.isDarwin then stdenv else gcc7Stdenv;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+  racket-minimal = callPackage ../development/interpreters/racket/minimal.nix { };
+
+  rakudo = callPackage ../development/interpreters/rakudo {};
+  moarvm = callPackage ../development/interpreters/rakudo/moarvm.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices;
+  };
+  nqp = callPackage  ../development/interpreters/rakudo/nqp.nix { };
+  zef = callPackage ../development/interpreters/rakudo/zef.nix { };
+
+  rascal = callPackage ../development/interpreters/rascal { };
+
+  red = callPackage ../development/interpreters/red { };
+
+  regexploit = callPackage ../tools/security/regexploit { };
+
+  regextester = callPackage ../applications/misc/regextester { };
+
+  regina = callPackage ../development/interpreters/regina { };
+
+  inherit (ocamlPackages) reason;
+
+  pixie = callPackage ../development/interpreters/pixie { };
+  dust = callPackage ../development/interpreters/pixie/dust.nix { };
+
+  buildRubyGem = callPackage ../development/ruby-modules/gem { };
+  defaultGemConfig = callPackage ../development/ruby-modules/gem-config {
+    inherit (darwin) DarwinTools cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+  bundix = callPackage ../development/ruby-modules/bundix { };
+  bundler = callPackage ../development/ruby-modules/bundler { };
+  bundlerEnv = callPackage ../development/ruby-modules/bundler-env { };
+  bundlerApp = callPackage ../development/ruby-modules/bundler-app { };
+  bundlerUpdateScript = callPackage ../development/ruby-modules/bundler-update-script { };
+
+  bundler-audit = callPackage ../tools/security/bundler-audit { };
+
+  solargraph = rubyPackages.solargraph;
+
+  rbenv = callPackage ../development/ruby-modules/rbenv { };
+
+  inherit (callPackage ../development/interpreters/ruby {
+    inherit (darwin) libiconv libobjc libunwind;
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  })
+    ruby_1_9
+    ruby_2_0
+    ruby_2_1
+    ruby_2_2
+    ruby_2_3
+    ruby_2_4
+    ruby_2_5
+    ruby_2_6
+    ruby_2_7
+    ruby_3_0
+    ruby_3_1;
+
+  ruby = ruby_2_7;
+  rubyPackages = rubyPackages_2_7;
+
+  rubyPackages_1_9 = recurseIntoAttrs ruby_1_9.gems;
+  rubyPackages_2_0 = recurseIntoAttrs ruby_2_0.gems;
+  rubyPackages_2_1 = recurseIntoAttrs ruby_2_1.gems;
+  rubyPackages_2_2 = recurseIntoAttrs ruby_2_2.gems;
+  rubyPackages_2_3 = recurseIntoAttrs ruby_2_2.gems;
+  rubyPackages_2_4 = recurseIntoAttrs ruby_2_4.gems;
+  rubyPackages_2_5 = recurseIntoAttrs ruby_2_5.gems;
+  rubyPackages_2_6 = recurseIntoAttrs ruby_2_6.gems;
+  rubyPackages_2_7 = recurseIntoAttrs ruby_2_7.gems;
+  rubyPackages_3_0 = recurseIntoAttrs ruby_3_0.gems;
+  rubyPackages_3_1 = recurseIntoAttrs ruby_3_1.gems;
+
+  ruby_1_9-gems = recurseIntoAttrs ruby_1_9.gems;
+  ruby_2_0-gems = recurseIntoAttrs ruby_2_0.gems;
+  ruby_2_1-gems = recurseIntoAttrs ruby_2_1.gems;
+  ruby_2_2-gems = recurseIntoAttrs ruby_2_2.gems;
+  ruby_2_3-gems = recurseIntoAttrs ruby_2_3.gems;
+  ruby_2_4-gems = recurseIntoAttrs ruby_2_4.gems;
+  ruby_2_5-gems = recurseIntoAttrs ruby_2_5.gems;
+  ruby_2_6-gems = recurseIntoAttrs ruby_2_6.gems;
+
+  mruby = callPackage ../development/compilers/mruby { };
+
+  scsh = callPackage ../development/interpreters/scsh { };
+
+  scheme48 = callPackage ../development/interpreters/scheme48 { };
+
+  scheme-bytestructures = callPackage ../development/scheme-modules/scheme-bytestructures { };
+
+  self = pkgsi686Linux.callPackage ../development/interpreters/self { };
+
+  inherit (callPackages ../applications/networking/cluster/spark { })
+    spark3
+    spark2;
+  spark = spark3;
+
+  sparkleshare = callPackage ../applications/version-management/sparkleshare { };
+
+  spidermonkey_78 = callPackage ../development/interpreters/spidermonkey/78.nix { };
+  spidermonkey_91 = callPackage ../development/interpreters/spidermonkey/91.nix { };
+
+  ssm-agent = callPackage ../applications/networking/cluster/ssm-agent { };
+  ssm-session-manager-plugin = callPackage ../applications/networking/cluster/ssm-session-manager-plugin { };
+
+  supercollider = libsForQt5.callPackage ../development/interpreters/supercollider {
+    fftw = fftwSinglePrec;
+  };
+
+  supercollider_scel = supercollider.override { useSCEL = true; };
+
+  taktuk = callPackage ../applications/networking/cluster/taktuk { };
+
+  tcl = tcl-8_6;
+  tcl-8_5 = callPackage ../development/interpreters/tcl/8.5.nix { };
+  tcl-8_6 = callPackage ../development/interpreters/tcl/8.6.nix { };
+
+  tclreadline = callPackage ../development/interpreters/tclreadline { };
+
+  trealla = callPackage ../development/interpreters/trealla { };
+
+  wasm = ocamlPackages.wasm;
+
+  wasm3 = callPackage ../development/interpreters/wasm3 { };
+
+  yex-lang = callPackage ../development/interpreters/yex-lang { };
+
+  ### DEVELOPMENT / MISC
+
+  h3 = callPackage ../development/misc/h3 { };
+
+  amtk = callPackage ../development/libraries/amtk { };
+
+  avrlibc      = callPackage ../development/misc/avr/libc {};
+  avrlibcCross = callPackage ../development/misc/avr/libc {
+    stdenv = crossLibcStdenv;
+  };
+
+  avr8burnomat = callPackage ../development/misc/avr8-burn-omat { };
+
+  betaflight = callPackage ../development/embedded/stm32/betaflight {
+    gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc;
+    binutils-arm-embedded = pkgsCross.arm-embedded.buildPackages.binutils;
+  };
+
+  sourceFromHead = callPackage ../build-support/source-from-head-fun.nix {};
+
+  jruby = callPackage ../development/interpreters/jruby { };
+
+  jython = callPackage ../development/interpreters/jython {};
+
+  gImageReader = callPackage ../applications/misc/gImageReader { };
+
+  guile_1_8 = callPackage ../development/interpreters/guile/1.8.nix { };
+
+  # Needed for autogen
+  guile_2_0 = callPackage ../development/interpreters/guile/2.0.nix { };
+
+  guile_2_2 = callPackage ../development/interpreters/guile/2.2.nix { };
+
+  guile_3_0 = callPackage ../development/interpreters/guile/3.0.nix { };
+
+  guile = guile_2_2;
+
+  guile-cairo = callPackage ../development/guile-modules/guile-cairo { };
+
+  guile-commonmark = callPackage ../development/guile-modules/guile-commonmark { };
+
+  guile-fibers = callPackage ../development/guile-modules/guile-fibers { };
+
+  guile-gcrypt = callPackage ../development/guile-modules/guile-gcrypt { };
+
+  guile-git = callPackage ../development/guile-modules/guile-git { };
+
+  guile-json = callPackage ../development/guile-modules/guile-json { };
+
+  guile-lib = callPackage ../development/guile-modules/guile-lib { };
+
+  guile-ncurses = callPackage ../development/guile-modules/guile-ncurses { };
+
+  guile-opengl = callPackage ../development/guile-modules/guile-opengl { };
+
+  guile-reader = callPackage ../development/guile-modules/guile-reader { };
+
+  guile-sdl = callPackage ../development/guile-modules/guile-sdl { };
+
+  guile-sdl2 = callPackage ../development/guile-modules/guile-sdl2 { };
+
+  guile-ssh = callPackage ../development/guile-modules/guile-ssh { };
+
+  guile-xcb = callPackage ../development/guile-modules/guile-xcb {
+    guile = guile_2_0;
+  };
+
+  inav = callPackage ../development/embedded/stm32/inav {
+    gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc;
+    binutils-arm-embedded = pkgsCross.arm-embedded.buildPackages.binutils;
+  };
+
+  inav-blackbox-tools = callPackage ../tools/misc/inav-blackbox-tools { };
+
+  infracost = callPackage ../tools/misc/infracost { };
+
+  msp430GccSupport = callPackage ../development/misc/msp430/gcc-support.nix { };
+
+  msp430Newlib      = callPackage ../development/misc/msp430/newlib.nix { };
+  msp430NewlibCross = callPackage ../development/misc/msp430/newlib.nix {
+    inherit (buildPackages.xorg) lndir;
+    newlib = newlibCross;
+  };
+
+  mspds = callPackage ../development/misc/msp430/mspds { };
+  mspds-bin = callPackage ../development/misc/msp430/mspds/binary.nix { };
+
+  mspdebug = callPackage ../development/misc/msp430/mspdebug.nix { };
+
+  vc4-newlib = callPackage ../development/misc/vc4/newlib.nix {};
+  resim = callPackage ../applications/emulators/resim {};
+
+  or1k-newlib = callPackage ../development/misc/or1k/newlib.nix {};
+
+  rappel = callPackage ../development/misc/rappel { };
+
+  pharo-vms = callPackage ../development/pharo/vm { };
+  pharo = pharo-vms.multi-vm-wrapper;
+  pharo-cog32 = pharo-vms.cog32;
+  pharo-spur32 = pharo-vms.spur32;
+  pharo-spur64 = assert stdenv.is64bit; pharo-vms.spur64;
+  pharo-launcher = callPackage ../development/pharo/launcher { };
+
+  protege-distribution = callPackage ../development/web/protege-distribution { };
+
+  umr = callPackage ../development/misc/umr {
+    llvmPackages = llvmPackages_latest;
+  };
+
+  srandrd = callPackage ../tools/X11/srandrd { };
+
+  srecord = callPackage ../development/tools/misc/srecord { };
+
+  srelay = callPackage ../tools/networking/srelay { };
+
+  xidel = callPackage ../tools/text/xidel { };
+
+  asdf-vm = callPackage ../tools/misc/asdf-vm { };
+
+  ### DEVELOPMENT / TOOLS
+
+  abi-compliance-checker = callPackage ../development/tools/misc/abi-compliance-checker { };
+
+  abi-dumper = callPackage ../development/tools/misc/abi-dumper { };
+
+  abuild = callPackage ../development/tools/abuild { };
+
+  actionlint = callPackage ../development/tools/analysis/actionlint { };
+
+  adtool = callPackage ../tools/admin/adtool { };
+
+  inherit (callPackage ../development/tools/alloy {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  })
+    alloy5
+    alloy6
+    alloy;
+
+  altair = callPackage ../development/tools/altair-graphql-client { };
+
+  ameba = callPackage ../development/tools/ameba { };
+
+  anybadge = with python3Packages; toPythonApplication anybadge;
+
+  augeas = callPackage ../tools/system/augeas { };
+
+  inherit (callPackage ../tools/admin/ansible { })
+    ansible
+    ansible_2_8
+    ansible_2_9
+    ansible_2_10
+    ansible_2_11;
+
+  ansible-lint = with python3.pkgs; toPythonApplication ansible-lint;
+
+  antlr2 = callPackage ../development/tools/parsing/antlr/2.7.7.nix {
+    jdk = jdk8; # todo: remove override https://github.com/nixos/nixpkgs/pull/89731
+  };
+
+  antlr3_4 = callPackage ../development/tools/parsing/antlr/3.4.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  antlr3_5 = callPackage ../development/tools/parsing/antlr/3.5.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  antlr3 = antlr3_5;
+
+  antlr4_8 = callPackage ../development/tools/parsing/antlr/4.8.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  antlr4_9 = callPackage ../development/tools/parsing/antlr/4.9.nix { };
+
+  antlr4 = antlr4_8;
+
+  antlr = antlr4;
+
+  apacheAnt = callPackage ../development/tools/build-managers/apache-ant { };
+  apacheAnt_1_9 = callPackage ../development/tools/build-managers/apache-ant/1.9.nix { };
+  ant = apacheAnt;
+
+  apacheKafka = apacheKafka_2_8;
+  apacheKafka_2_7 = callPackage ../servers/apache-kafka { majorVersion = "2.7"; };
+  apacheKafka_2_8 = callPackage ../servers/apache-kafka { majorVersion = "2.8"; };
+
+  kt = callPackage ../tools/misc/kt {};
+
+  argbash = callPackage ../development/tools/misc/argbash {};
+
+  arpa2cm = callPackage ../development/tools/build-managers/arpa2cm { };
+
+  arpa2common = callPackage ../development/libraries/arpa2common { };
+
+  asn2quickder = python2Packages.callPackage ../development/tools/asn2quickder {};
+
+  astyle = callPackage ../development/tools/misc/astyle { };
+
+  automaticcomponenttoolkit = callPackage ../development/tools/misc/automaticcomponenttoolkit { };
+
+  aviator = callPackage ../development/tools/misc/aviator { };
+
+  awf = callPackage ../development/tools/misc/awf { };
+
+  aws-adfs = with python3Packages; toPythonApplication aws-adfs;
+
+  inherit (callPackages ../development/tools/electron { })
+    electron
+    electron_9
+    electron_10
+    electron_11
+    electron_12
+    electron_13
+    electron_14
+    electron_15
+    electron_16
+    electron_17;
+
+  autobuild = callPackage ../development/tools/misc/autobuild { };
+
+  autoconf = autoconf271;
+
+  autoconf-archive = callPackage ../development/tools/misc/autoconf-archive { };
+
+  autoconf213 = callPackage ../development/tools/misc/autoconf/2.13.nix { };
+  autoconf264 = callPackage ../development/tools/misc/autoconf/2.64.nix { };
+  autoconf269 = callPackage ../development/tools/misc/autoconf/2.69.nix { };
+  autoconf271 = callPackage ../development/tools/misc/autoconf { };
+
+  autocutsel = callPackage ../tools/X11/autocutsel{ };
+
+  automake = automake116x;
+
+  automake111x = callPackage ../development/tools/misc/automake/automake-1.11.x.nix { };
+
+  automake115x = callPackage ../development/tools/misc/automake/automake-1.15.x.nix { };
+
+  automake116x = callPackage ../development/tools/misc/automake/automake-1.16.x.nix { };
+
+  automoc4 = callPackage ../development/tools/misc/automoc4 { };
+
+  avrdude = callPackage ../development/embedded/avrdude { };
+
+  b4 = callPackage ../development/tools/b4 { };
+
+  babeltrace = callPackage ../development/tools/misc/babeltrace { };
+
+  bam = callPackage ../development/tools/build-managers/bam {};
+
+  bazel = bazel_3;
+
+  bazel_0 = bazel_0_26;
+
+  bazel_0_26 = callPackage ../development/tools/build-managers/bazel/bazel_0_26 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk8_headless;
+    buildJdkName = "jdk8";
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+  };
+
+  bazel_0_29 = callPackage ../development/tools/build-managers/bazel/bazel_0_29 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk8_headless;
+    buildJdkName = "jdk8";
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+    bazel_self = bazel_0_29;
+  };
+
+  bazel_1 = callPackage ../development/tools/build-managers/bazel/bazel_1 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk8_headless;
+    buildJdkName = "jdk8";
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+    bazel_self = bazel_1;
+  };
+
+  bazel_3 = callPackage ../development/tools/build-managers/bazel/bazel_3 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk11_headless;
+    buildJdkName = "java11";
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+    bazel_self = bazel_3;
+  };
+
+  bazel_4 = callPackage ../development/tools/build-managers/bazel/bazel_4 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk11_headless;
+    buildJdkName = "java11";
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+    bazel_self = bazel_4;
+  };
+
+  bazel_5 = callPackage ../development/tools/build-managers/bazel/bazel_5 {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk11_headless;
+    runJdk = jdk11_headless;
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+    bazel_self = bazel_5;
+  };
+
+  bazel-buildtools = callPackage ../development/tools/build-managers/bazel/buildtools { };
+  buildifier = bazel-buildtools;
+  buildozer = bazel-buildtools;
+  unused_deps = bazel-buildtools;
+
+  bazel-remote = callPackage ../development/tools/build-managers/bazel/bazel-remote { };
+
+  bazel-watcher = callPackage ../development/tools/bazel-watcher { };
+
+  bazel-gazelle = callPackage ../development/tools/bazel-gazelle { };
+
+  bazel-kazel = callPackage ../development/tools/bazel-kazel { };
+
+  bazelisk = callPackage ../development/tools/bazelisk { };
+
+  rebazel = callPackage ../development/tools/rebazel {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  buildBazelPackage = callPackage ../build-support/build-bazel-package { };
+
+  bear = callPackage ../development/tools/build-managers/bear { };
+
+  bingrep = callPackage ../development/tools/analysis/bingrep { };
+
+  binutils-unwrapped = callPackage ../development/tools/misc/binutils {
+    autoreconfHook = if targetPlatform.isiOS then autoreconfHook269 else autoreconfHook;
+    # FHS sys dirs presumably only have stuff for the build platform
+    noSysDirs = (stdenv.targetPlatform != stdenv.hostPlatform) || noSysDirs;
+  };
+  binutils = wrapBintoolsWith {
+    bintools = binutils-unwrapped;
+  };
+  binutils_nogold = lowPrio (wrapBintoolsWith {
+    bintools = binutils-unwrapped.override {
+      gold = false;
+    };
+  });
+  binutilsNoLibc = wrapBintoolsWith {
+    bintools = binutils-unwrapped;
+    libc = preLibcCrossHeaders;
+  };
+
+  # Here we select the default bintools implementations to be used.  Note when
+  # cross compiling these are used not for this stage but the *next* stage.
+  # That is why we choose using this stage's target platform / next stage's
+  # host platform.
+  #
+  # Because this is the *next* stages choice, it's a bit non-modular to put
+  # here. In theory, bootstraping is supposed to not be a chain but at tree,
+  # where each stage supports many "successor" stages, like multiple possible
+  # futures. We don't have a better alternative, but with this downside in
+  # mind, please be judicious when using this attribute. E.g. for building
+  # things in *this* stage you should use probably `stdenv.cc.bintools` (from a
+  # default or alternate `stdenv`), at build time, and try not to "force" a
+  # specific bintools at runtime at all.
+  #
+  # In other words, try to only use this in wrappers, and only use those
+  # wrappers from the next stage.
+  bintools-unwrapped = let
+    inherit (stdenv.targetPlatform) linker;
+  in     if linker == "lld"     then llvmPackages.bintools-unwrapped
+    else if linker == "cctools" then darwin.binutils-unwrapped
+    else if linker == "bfd"     then binutils-unwrapped
+    else if linker == "gold"    then binutils-unwrapped
+    else null;
+  bintoolsNoLibc = wrapBintoolsWith {
+    bintools = bintools-unwrapped;
+    libc = preLibcCrossHeaders;
+  };
+  bintools = wrapBintoolsWith {
+    bintools = bintools-unwrapped;
+  };
+
+  bison = callPackage ../development/tools/parsing/bison { };
+
+  bisoncpp = callPackage ../development/tools/parsing/bisonc++ { };
+
+  black = with python3Packages; toPythonApplication black;
+
+  blackfire = callPackage ../development/tools/misc/blackfire { };
+
+  black-macchiato = with python3Packages; toPythonApplication black-macchiato;
+
+  blackmagic = callPackage ../development/embedded/blackmagic { };
+
+  bloaty = callPackage ../development/tools/bloaty { };
+
+  bloomrpc = callPackage ../development/web/bloomrpc { };
+
+  bloop = callPackage ../development/tools/build-managers/bloop { };
+
+  bossa = callPackage ../development/embedded/bossa {
+    wxGTK = wxGTK30;
+  };
+
+  buck = callPackage ../development/tools/build-managers/buck { };
+
+  build2 = callPackage ../development/tools/build-managers/build2 {
+    # Break cycle by using self-contained toolchain for bootstrapping
+    build2 = buildPackages.callPackage ../development/tools/build-managers/build2/bootstrap.nix { };
+  };
+
+  # Dependency of build2, must also break cycle for this
+  libbutl = callPackage ../development/libraries/libbutl {
+    build2 = build2.bootstrap;
+  };
+
+  libbpkg = callPackage ../development/libraries/libbpkg { };
+  libodb = callPackage ../development/libraries/libodb { };
+  libodb-sqlite = callPackage ../development/libraries/libodb-sqlite { };
+  bdep = callPackage ../development/tools/build-managers/build2/bdep.nix { };
+  bpkg = callPackage ../development/tools/build-managers/build2/bpkg.nix { };
+
+  buildkite-agent = callPackage ../development/tools/continuous-integration/buildkite-agent { };
+
+  buildkite-agent-metrics = callPackage ../servers/monitoring/buildkite-agent-metrics { };
+
+  buildkite-cli = callPackage ../development/tools/continuous-integration/buildkite-cli { };
+
+  bump = callPackage ../development/tools/github/bump { };
+
+  libbpf = callPackage ../os-specific/linux/libbpf { };
+
+  bpftools = callPackage ../os-specific/linux/bpftools { };
+
+  bcc = callPackage ../os-specific/linux/bcc {
+    python = pkgs.python3;
+  };
+
+  bpftrace = callPackage ../os-specific/linux/bpftrace { };
+
+  bpm-tools = callPackage ../tools/audio/bpm-tools { };
+
+  byacc = callPackage ../development/tools/parsing/byacc { };
+
+  cadre = callPackage ../development/tools/cadre { };
+
+  cask = callPackage ../development/tools/cask { };
+
+  cbrowser = callPackage ../development/tools/misc/cbrowser { };
+
+  cc-tool = callPackage ../development/embedded/cc-tool { };
+
+  ccache = callPackage ../development/tools/misc/ccache { };
+
+  # Wrapper that works as gcc or g++
+  # It can be used by setting in nixpkgs config like this, for example:
+  #    replaceStdenv = { pkgs }: pkgs.ccacheStdenv;
+  # But if you build in chroot, you should have that path in chroot
+  # If instantiated directly, it will use $HOME/.ccache as the cache directory,
+  # i.e. /homeless-shelter/.ccache using the Nix daemon.
+  # You should specify a different directory using an override in
+  # packageOverrides to set extraConfig.
+  #
+  # Example using Nix daemon (i.e. multiuser Nix install or on NixOS):
+  #    packageOverrides = pkgs: {
+  #     ccacheWrapper = pkgs.ccacheWrapper.override {
+  #       extraConfig = ''
+  #         export CCACHE_COMPRESS=1
+  #         export CCACHE_DIR=/var/cache/ccache
+  #         export CCACHE_UMASK=007
+  #       '';
+  #     };
+  # You can use a different directory, but whichever directory you choose
+  # should be owned by user root, group nixbld with permissions 0770.
+  ccacheWrapper = makeOverridable ({ extraConfig, cc }:
+    cc.override {
+      cc = ccache.links {
+        inherit extraConfig;
+        unwrappedCC = cc.cc;
+      };
+    }) {
+      extraConfig = "";
+      inherit (stdenv) cc;
+    };
+
+  ccacheStdenv = lowPrio (makeOverridable ({ stdenv, ... } @ extraArgs:
+    overrideCC stdenv (buildPackages.ccacheWrapper.override ({
+      inherit (stdenv) cc;
+    } // lib.optionalAttrs (builtins.hasAttr "extraConfig" extraArgs) {
+      extraConfig = extraArgs.extraConfig;
+    }))) {
+      inherit stdenv;
+    });
+
+  cccc = callPackage ../development/tools/analysis/cccc { };
+
+  cgdb = callPackage ../development/tools/misc/cgdb { };
+
+  cheat = callPackage ../applications/misc/cheat { };
+
+  chefdk = callPackage ../development/tools/chefdk { };
+
+  matter-compiler = callPackage ../development/compilers/matter-compiler {};
+
+  cfr = callPackage ../development/tools/java/cfr { };
+
+  cfripper = callPackage ../tools/security/cfripper { };
+
+  checkra1n = callPackage ../development/mobile/checkra1n { };
+
+  checkstyle = callPackage ../development/tools/analysis/checkstyle { };
+
+  chromedriver = callPackage ../development/tools/selenium/chromedriver { };
+
+  chromium-xorg-conf = callPackage ../os-specific/linux/chromium-xorg-conf { };
+
+  chrpath = callPackage ../development/tools/misc/chrpath { };
+
+  chruby = callPackage ../development/tools/misc/chruby { rubies = null; };
+
+  chruby-fish = callPackage ../development/tools/misc/chruby-fish { };
+
+  cl-launch = callPackage ../development/tools/misc/cl-launch {};
+
+  cloud-nuke = callPackage ../development/tools/cloud-nuke { };
+
+  cloudcompare = libsForQt5.callPackage ../applications/graphics/cloudcompare {};
+
+  cloudfoundry-cli = callPackage ../applications/networking/cluster/cloudfoundry-cli { };
+
+  clpm = callPackage ../development/tools/clpm {};
+
+  coan = callPackage ../development/tools/analysis/coan { };
+
+  compile-daemon = callPackage ../development/tools/compile-daemon { };
+
+  complexity = callPackage ../development/tools/misc/complexity { };
+
+  conan = callPackage ../development/tools/build-managers/conan { };
+
+  cookiecutter = with python3Packages; toPythonApplication cookiecutter;
+
+  corrosion = callPackage ../development/tools/build-managers/corrosion { };
+
+  corundum = callPackage ../development/tools/corundum { };
+
+  confluent-platform = callPackage ../servers/confluent-platform {};
+
+  ctags = callPackage ../development/tools/misc/ctags { };
+
+  ctagsWrapped = callPackage ../development/tools/misc/ctags/wrapped.nix {};
+
+  ctodo = callPackage ../applications/misc/ctodo { };
+
+  cubiomes-viewer = libsForQt5.callPackage ../applications/misc/cubiomes-viewer { };
+
+  ctmg = callPackage ../tools/security/ctmg { };
+
+  cmake = libsForQt5.callPackage ../development/tools/build-managers/cmake {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  cmakeMinimal = libsForQt5.callPackage ../development/tools/build-managers/cmake {
+    isBootstrap = true;
+    # There is no SystemConfiguration in bootstrapTools, so this version gets
+    # patched to remove that dependency.
+    SystemConfiguration = null;
+  };
+
+  cmakeCurses = cmake.override { useNcurses = true; };
+
+  cmakeWithGui = cmakeCurses.override { withQt5 = true; };
+
+  cmake-format = python3Packages.callPackage ../development/tools/cmake-format { };
+
+  cmake-language-server = python3Packages.callPackage ../development/tools/cmake-language-server {
+    inherit cmake;
+  };
+
+  # Does not actually depend on Qt 5
+  inherit (plasma5Packages) extra-cmake-modules;
+
+  coccinelle = callPackage ../development/tools/misc/coccinelle { };
+
+  cpptest = callPackage ../development/libraries/cpptest { };
+
+  cppi = callPackage ../development/tools/misc/cppi { };
+
+  cproto = callPackage ../development/tools/misc/cproto { };
+
+  cflow = callPackage ../development/tools/misc/cflow { };
+
+  cov-build = callPackage ../development/tools/analysis/cov-build {};
+
+  cppcheck = callPackage ../development/tools/analysis/cppcheck { };
+
+  cpplint = callPackage ../development/tools/analysis/cpplint { };
+
+  ccls = callPackage ../development/tools/misc/ccls {
+    llvmPackages = llvmPackages_latest;
+  };
+
+  credstash = with python3Packages; toPythonApplication credstash;
+
+  creduce = callPackage ../development/tools/misc/creduce {
+    inherit (llvmPackages_8) llvm libclang;
+  };
+
+  cscope = callPackage ../development/tools/misc/cscope { };
+
+  csmith = callPackage ../development/tools/misc/csmith { };
+
+  csslint = callPackage ../development/web/csslint { };
+
+  css-html-js-minify = with python3Packages; toPythonApplication css-html-js-minify;
+
+  cvehound = callPackage ../development/tools/analysis/cvehound { };
+
+  cvise = python3Packages.callPackage ../development/tools/misc/cvise {
+    # cvise keeps up with fresh llvm releases and supports wide version range
+    inherit (llvmPackages_latest) llvm libclang;
+  };
+
+  cwltool = callPackage ../applications/science/misc/cwltool { };
+
+  dprint = callPackage ../development/tools/dprint {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  libcxx = llvmPackages.libcxx;
+  libcxxabi = llvmPackages.libcxxabi;
+
+  librarian-puppet-go = callPackage ../development/tools/librarian-puppet-go { };
+
+  libgcc = callPackage ../development/libraries/gcc/libgcc {
+    stdenvNoLibs = gccStdenvNoLibs; # cannot be built with clang it seems
+  };
+
+  # This is for e.g. LLVM libraries on linux.
+  gccForLibs =
+    if stdenv.targetPlatform == stdenv.hostPlatform && targetPackages.stdenv.cc.isGNU
+    # Can only do this is in the native case, otherwise we might get infinite
+    # recursion if `targetPackages.stdenv.cc.cc` itself uses `gccForLibs`.
+      then targetPackages.stdenv.cc.cc
+    else gcc.cc;
+
+  libstdcxx5 = callPackage ../development/libraries/gcc/libstdc++/5.nix { };
+
+  libsigrok = callPackage ../development/tools/libsigrok {
+    python = python3;
+  };
+  # old version:
+  libsigrok_0_3 = libsigrok.override {
+    python = python3;
+    version = "0.3.0";
+    sha256 = "0l3h7zvn3w4c1b9dgvl3hirc4aj1csfkgbk87jkpl7bgl03nk4j3";
+    doInstallCheck = false;
+  };
+
+  libsigrokdecode = callPackage ../development/tools/libsigrokdecode {
+    python3 = python38;
+  };
+
+  # special forks used for dsview
+  libsigrok4dsl = callPackage ../applications/science/electronics/dsview/libsigrok4dsl.nix { };
+  libsigrokdecode4dsl = callPackage ../applications/science/electronics/dsview/libsigrokdecode4dsl.nix { };
+
+  cli11 = callPackage ../development/tools/misc/cli11 { };
+
+  datree = callPackage ../development/tools/datree { };
+
+  dcadec = callPackage ../development/tools/dcadec { };
+
+  dejagnu = callPackage ../development/tools/misc/dejagnu { };
+
+  devd = callPackage ../development/tools/devd { };
+
+  devtodo = callPackage ../development/tools/devtodo { };
+
+  dfeet = callPackage ../development/tools/misc/d-feet { };
+
+  dfu-programmer = callPackage ../development/tools/misc/dfu-programmer { };
+
+  dfu-util = callPackage ../development/tools/misc/dfu-util { };
+
+  ddd = callPackage ../development/tools/misc/ddd { };
+
+  lattice-diamond = callPackage ../development/embedded/fpga/lattice-diamond { };
+
+  direvent = callPackage ../development/tools/misc/direvent { };
+
+  distcc = callPackage ../development/tools/misc/distcc {
+    libiberty_static = libiberty.override { staticBuild = true; };
+  };
+
+  # distccWrapper: wrapper that works as gcc or g++
+  # It can be used by setting in nixpkgs config like this, for example:
+  #    replaceStdenv = { pkgs }: pkgs.distccStdenv;
+  # But if you build in chroot, a default 'nix' will create
+  # a new net namespace, and won't have network access.
+  # You can use an override in packageOverrides to set extraConfig:
+  #    packageOverrides = pkgs: {
+  #     distccWrapper = pkgs.distccWrapper.override {
+  #       extraConfig = ''
+  #         DISTCC_HOSTS="myhost1 myhost2"
+  #       '';
+  #     };
+  #
+  distccWrapper = makeOverridable ({ extraConfig ? "" }:
+    wrapCC (distcc.links extraConfig)) {};
+  distccStdenv = lowPrio (overrideCC stdenv buildPackages.distccWrapper);
+
+  distccMasquerade = if stdenv.isDarwin
+    then null
+    else callPackage ../development/tools/misc/distcc/masq.nix {
+      gccRaw = gcc.cc;
+      binutils = binutils;
+    };
+
+  dive = callPackage ../development/tools/dive { };
+
+  doclifter = callPackage ../development/tools/misc/doclifter { };
+
+  docutils = with python3Packages; toPythonApplication docutils;
+
+  doctl = callPackage ../development/tools/doctl { };
+
+  doit = with python3Packages; toPythonApplication doit;
+
+  dolt = callPackage ../servers/sql/dolt { };
+
+  dot2tex = with python3.pkgs; toPythonApplication dot2tex;
+
+  doxygen = callPackage ../development/tools/documentation/doxygen {
+    qt5 = null;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  doxygen_gui = lowPrio (doxygen.override { inherit qt5; });
+
+  drake = callPackage ../development/tools/build-managers/drake { };
+
+  drip = callPackage ../development/tools/drip { };
+
+  drm_info = callPackage ../development/tools/drm_info { };
+
+  drush = callPackage ../development/tools/misc/drush { };
+
+  dura = callPackage ../development/tools/misc/dura { };
+
+  dwfv = callPackage ../applications/science/electronics/dwfv { };
+
+  dwz = callPackage ../development/tools/misc/dwz { };
+
+  easypdkprog = callPackage ../development/embedded/easypdkprog { };
+
+  editorconfig-checker = callPackage ../development/tools/misc/editorconfig-checker { };
+
+  editorconfig-core-c = callPackage ../development/tools/misc/editorconfig-core-c { };
+
+  edb = libsForQt5.callPackage ../development/tools/misc/edb { };
+
+  eggdbus = callPackage ../development/tools/misc/eggdbus { };
+
+  effitask = callPackage ../applications/misc/effitask { };
+
+  efm-langserver = callPackage ../development/tools/efm-langserver { };
+
+  egypt = callPackage ../development/tools/analysis/egypt { };
+
+  elf2uf2-rs = callPackage ../development/embedded/elf2uf2-rs { };
+
+  elfinfo = callPackage ../development/tools/misc/elfinfo { };
+
+  elfkickers = callPackage ../development/tools/misc/elfkickers { };
+
+  elfutils = callPackage ../development/tools/misc/elfutils { };
+
+  eliot-tree = callPackage ../development/tools/eliot-tree { };
+
+  emma = callPackage ../development/tools/analysis/emma { };
+
+  ent-go = callPackage ../development/tools/ent { };
+
+  epm = callPackage ../development/tools/misc/epm { };
+
+  eresi = callPackage ../development/tools/analysis/eresi { };
+
+  evmdis = callPackage ../development/tools/analysis/evmdis { };
+
+  eweb = callPackage ../development/tools/literate-programming/eweb { };
+
+  funnelweb = callPackage ../development/tools/literate-programming/funnelweb { };
+
+  Literate = callPackage ../development/tools/literate-programming/Literate { };
+
+  md-tangle = callPackage ../development/tools/literate-programming/md-tangle { };
+
+  # NOTE: Override and set useIcon = false to use Awk instead of Icon.
+  noweb = callPackage ../development/tools/literate-programming/noweb { };
+
+  nuweb = callPackage ../development/tools/literate-programming/nuweb {
+    tex = texlive.combined.scheme-medium;
+  };
+
+  eztrace = callPackage ../development/tools/profiling/EZTrace { };
+
+  faas-cli = callPackage ../development/tools/faas-cli { };
+
+  findbugs = callPackage ../development/tools/analysis/findbugs { };
+
+  findnewest = callPackage ../development/tools/misc/findnewest { };
+
+  flootty = callPackage ../development/tools/flootty { };
+
+  fffuu = haskell.lib.compose.justStaticExecutables (haskellPackages.callPackage ../tools/misc/fffuu { });
+
+  ffuf = callPackage ../tools/security/ffuf { };
+
+  flow = callPackage ../development/tools/analysis/flow {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+    ocamlPackages = ocaml-ng.ocamlPackages_4_12;
+  };
+
+  fly = callPackage ../development/tools/continuous-integration/fly { };
+
+  foreman = callPackage ../tools/system/foreman { };
+  goreman = callPackage ../tools/system/goreman { };
+
+  fprettify = callPackage ../development/tools/fprettify { };
+
+  fortran-language-server = python3.pkgs.callPackage ../development/tools/fortran-language-server { };
+
+  framac = callPackage ../development/tools/analysis/frama-c { };
+
+  frame = callPackage ../development/libraries/frame { };
+
+  frp = callPackage ../tools/networking/frp { };
+
+  fsatrace = callPackage ../development/tools/misc/fsatrace { };
+
+  fswatch = callPackage ../development/tools/misc/fswatch {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  fsearch = callPackage ../tools/misc/fsearch { };
+
+  fujprog = callPackage ../development/embedded/fpga/fujprog {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  fundoc = callPackage ../development/tools/fundoc { };
+
+  gede = libsForQt5.callPackage ../development/tools/misc/gede { };
+
+  gdbgui = python3Packages.callPackage ../development/tools/misc/gdbgui { };
+
+  pmd = callPackage ../development/tools/analysis/pmd {
+    openjdk = openjdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  pmdk = callPackage ../development/libraries/pmdk { };
+
+  jdepend = callPackage ../development/tools/analysis/jdepend {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  flex_2_5_35 = callPackage ../development/tools/parsing/flex/2.5.35.nix { };
+  flex = callPackage ../development/tools/parsing/flex { };
+
+  flexibee = callPackage ../applications/office/flexibee { };
+
+  flexcpp = callPackage ../development/tools/parsing/flexc++ { };
+
+  geis = callPackage ../development/libraries/geis {
+    inherit (xorg) libX11 libXext libXi libXtst;
+  };
+
+  gi-docgen = callPackage ../development/tools/documentation/gi-docgen { };
+
+  git-aggregator = callPackage ../development/tools/git-aggregator { };
+
+  github-release = callPackage ../development/tools/github/github-release { };
+
+  global = callPackage ../development/tools/misc/global { };
+
+  gnatcoll-db2ada = callPackage ../development/libraries/ada/gnatcoll/db.nix {
+    component = "gnatcoll_db2ada";
+  };
+
+  gnatinspect = callPackage ../development/libraries/ada/gnatcoll/db.nix {
+    component = "gnatinspect";
+  };
+
+  gnome-doc-utils = callPackage ../development/tools/documentation/gnome-doc-utils {};
+
+  gnome-desktop-testing = callPackage ../development/tools/gnome-desktop-testing {};
+
+  gnome-firmware-updater = callPackage ../applications/misc/gnome-firmware-updater {};
+
+  gnome-usage = callPackage ../applications/misc/gnome-usage {};
+
+  gnome-inform7 = callPackage ../applications/editors/gnome-inform7 { };
+
+  gnome-latex = callPackage ../applications/editors/gnome-latex { };
+
+  gnome-network-displays = callPackage ../applications/networking/gnome-network-displays { };
+
+  gnome-multi-writer = callPackage ../applications/misc/gnome-multi-writer {};
+
+  gnome-online-accounts = callPackage ../development/libraries/gnome-online-accounts { };
+
+  gnome-video-effects = callPackage ../development/libraries/gnome-video-effects { };
+
+  gnum4 = callPackage ../development/tools/misc/gnum4 { };
+  m4 = gnum4;
+
+  gnumake = callPackage ../development/tools/build-managers/gnumake { };
+  gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { };
+
+  gnustep = recurseIntoAttrs (callPackage ../desktops/gnustep {});
+
+  gob2 = callPackage ../development/tools/misc/gob2 { };
+
+  gocd-agent = callPackage ../development/tools/continuous-integration/gocd-agent { };
+
+  gocd-server = callPackage ../development/tools/continuous-integration/gocd-server { };
+
+  gotify-server = callPackage ../servers/gotify { };
+
+  gotty = callPackage ../servers/gotty { };
+
+  gprbuild-boot = callPackage ../development/tools/build-managers/gprbuild/boot.nix { };
+
+  gprbuild = callPackage ../development/tools/build-managers/gprbuild { };
+
+  gputils = callPackage ../development/embedded/gputils { };
+
+  gpuvis = callPackage ../development/tools/misc/gpuvis { };
+
+  gradle-packages = import ../development/tools/build-managers/gradle {
+    inherit jdk8 jdk11 jdk17;
+  };
+  gradleGen = gradle-packages.gen;
+  gradle_4 = callPackage gradle-packages.gradle_4 { };
+  gradle_5 = callPackage gradle-packages.gradle_5 { };
+  gradle_6 = callPackage gradle-packages.gradle_6 { };
+  gradle_7 = callPackage gradle-packages.gradle_7 { };
+  gradle = gradle_7;
+
+  grcov = callPackage ../development/tools/misc/grcov { };
+
+  gperf = callPackage ../development/tools/misc/gperf { };
+  # 3.1 changed some parameters from int to size_t, leading to mismatches.
+  gperf_3_0 = callPackage ../development/tools/misc/gperf/3.0.x.nix { };
+
+  grail = callPackage ../development/libraries/grail { };
+
+  graphene-hardened-malloc = callPackage ../development/libraries/graphene-hardened-malloc { };
+
+  graphene = callPackage ../development/libraries/graphene { };
+
+  gtk-doc = callPackage ../development/tools/documentation/gtk-doc { };
+
+  gtkdialog = callPackage ../development/tools/misc/gtkdialog { };
+
+  crowdin-cli = callPackage ../tools/text/crowdin-cli { };
+
+  gtranslator = callPackage ../tools/text/gtranslator { };
+
+  guff = callPackage ../tools/graphics/guff { };
+
+  guile-lint = callPackage ../development/tools/guile/guile-lint {
+    guile = guile_1_8;
+  };
+
+  gwrap = callPackage ../development/tools/guile/g-wrap {
+    guile = guile_2_0;
+  };
+
+  hadolint = haskell.lib.compose.justStaticExecutables haskellPackages.hadolint;
+
+  halfempty = callPackage ../development/tools/halfempty {};
+
+  hcloud = callPackage ../development/tools/hcloud { };
+
+  help2man = callPackage ../development/tools/misc/help2man { };
+
+  heroku = callPackage ../development/tools/heroku { };
+
+  ccloud-cli = callPackage ../development/tools/ccloud-cli { };
+
+  confluent-cli = callPackage ../development/tools/confluent-cli { };
+
+  htmlunit-driver = callPackage ../development/tools/selenium/htmlunit-driver { };
+
+  hyenae = callPackage ../tools/networking/hyenae { };
+
+  iaca_2_1 = callPackage ../development/tools/iaca/2.1.nix { };
+  iaca_3_0 = callPackage ../development/tools/iaca/3.0.nix { };
+  iaca = iaca_3_0;
+
+  icestorm = callPackage ../development/embedded/fpga/icestorm { };
+
+  icmake = callPackage ../development/tools/build-managers/icmake { };
+
+  iconnamingutils = callPackage ../development/tools/misc/icon-naming-utils { };
+
+  ikos = callPackage ../development/tools/analysis/ikos {
+    inherit (llvmPackages_9) stdenv clang llvm;
+  };
+
+  img = callPackage ../development/tools/img { };
+
+  include-what-you-use = callPackage ../development/tools/analysis/include-what-you-use {
+    llvmPackages = llvmPackages_13;
+  };
+
+  indent = callPackage ../development/tools/misc/indent { };
+
+  inotify-tools = callPackage ../development/tools/misc/inotify-tools { };
+
+  intel-gpu-tools = callPackage ../development/tools/misc/intel-gpu-tools { };
+
+  insomnia = callPackage ../development/web/insomnia { };
+
+  iozone = callPackage ../development/tools/misc/iozone { };
+
+  itstool = callPackage ../development/tools/misc/itstool { };
+
+  jam = callPackage ../development/tools/build-managers/jam { };
+
+  ftjam = callPackage ../development/tools/build-managers/jam/ftjam.nix { };
+
+  javacc = callPackage ../development/tools/parsing/javacc {
+    jdk = jdk8;
+  };
+
+  jbake = callPackage ../development/tools/jbake { };
+
+  jbang = callPackage ../development/tools/jbang { };
+
+  jikespg = callPackage ../development/tools/parsing/jikespg { };
+
+  jenkins = callPackage ../development/tools/continuous-integration/jenkins { };
+
+  jenkins-job-builder = with python3Packages; toPythonApplication jenkins-job-builder;
+
+  jpexs = callPackage ../development/tools/jpexs { };
+
+  k0sctl = callPackage ../applications/networking/cluster/k0sctl { };
+
+  k2tf = callPackage ../development/tools/misc/k2tf { };
+
+  kafka-delta-ingest = callPackage ../development/tools/kafka-delta-ingest { };
+
+  kati = callPackage ../development/tools/build-managers/kati { };
+
+  kcat = callPackage ../development/tools/kcat { };
+
+  kcc = libsForQt5.callPackage ../applications/graphics/kcc { };
+
+  kconfig-frontends = callPackage ../development/tools/misc/kconfig-frontends {
+    gperf = gperf_3_0;
+  };
+
+  kcgi = callPackage ../development/web/kcgi { };
+
+  kcov = callPackage ../development/tools/analysis/kcov { };
+
+  kind = callPackage ../development/tools/kind {  };
+
+  khronos-ocl-icd-loader = callPackage ../development/libraries/khronos-ocl-icd-loader {  };
+
+  ko = callPackage ../development/tools/ko { };
+
+  konstraint = callPackage ../development/tools/konstraint { };
+
+  krankerl = callPackage ../development/tools/krankerl { };
+
+  krew = callPackage ../development/tools/krew { };
+
+  kube-aws = callPackage ../development/tools/kube-aws { };
+
+  kube-hunter = callPackage ../tools/security/kube-hunter { };
+
+  kubeaudit = callPackage ../tools/security/kubeaudit { };
+
+  kubectx = callPackage ../development/tools/kubectx { };
+
+  kube-linter = callPackage ../development/tools/kube-linter { };
+
+  kube-prompt = callPackage ../development/tools/kube-prompt { };
+
+  kubei = callPackage ../tools/security/kubei { };
+
+  kubemq-community = callPackage ../servers/kubemq-community { };
+
+  kubeone = callPackage ../applications/networking/cluster/kubeone { };
+
+  kubeprompt = callPackage ../development/tools/kubeprompt { };
+
+  kubescape = callPackage ../tools/security/kubescape { };
+
+  kubesec = callPackage ../tools/security/kubesec { };
+
+  kubespy = callPackage ../applications/networking/cluster/kubespy { };
+
+  kubicorn = callPackage ../development/tools/kubicorn {  };
+
+  kubie = callPackage ../development/tools/kubie {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  kustomize = callPackage ../development/tools/kustomize { };
+
+  kustomize_3 = callPackage ../development/tools/kustomize/3.nix { };
+
+  kustomize-sops = callPackage ../development/tools/kustomize/kustomize-sops.nix { };
+
+  ktlint = callPackage ../development/tools/ktlint { };
+
+  kythe = callPackage ../development/tools/kythe { };
+
+  lazygit = callPackage ../development/tools/lazygit { };
+
+  laminar = callPackage ../development/tools/continuous-integration/laminar { };
+
+  lcov = callPackage ../development/tools/analysis/lcov { };
+
+  leiningen = callPackage ../development/tools/build-managers/leiningen { };
+
+  lemon = callPackage ../development/tools/parsing/lemon { };
+
+  lenmus = callPackage ../applications/misc/lenmus { };
+
+  libtool = libtool_2;
+
+  libtool_1_5 = callPackage ../development/tools/misc/libtool { };
+
+  libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix { };
+
+  libwhich = callPackage ../development/tools/misc/libwhich { };
+
+  linuxkit = callPackage ../development/tools/misc/linuxkit { };
+
+  lit = callPackage ../development/tools/misc/lit { };
+
+  litecli = callPackage ../development/tools/database/litecli {};
+
+  litestream = callPackage ../development/tools/database/litestream {};
+
+  lsof = callPackage ../development/tools/misc/lsof { };
+
+  ltrace = callPackage ../development/tools/misc/ltrace { };
+
+  lttng-tools = callPackage ../development/tools/misc/lttng-tools { };
+
+  lttng-ust = callPackage ../development/tools/misc/lttng-ust { };
+
+  lttng-ust_2_12 = callPackage ../development/tools/misc/lttng-ust/2.12.nix { };
+
+  lttv = callPackage ../development/tools/misc/lttv { };
+
+  luaformatter = callPackage ../development/tools/luaformatter
+    (lib.optionalAttrs (stdenv.cc.isClang && lib.versionOlder stdenv.cc.version "9") {
+      stdenv = overrideCC stdenv llvmPackages_9.clang;
+    });
+
+  malt = callPackage ../development/tools/profiling/malt {};
+
+  massif-visualizer = libsForQt5.callPackage ../development/tools/analysis/massif-visualizer { };
+
+  mastodon-archive = callPackage ../tools/backup/mastodon-archive { };
+
+  maven = maven3;
+  maven3 = callPackage ../development/tools/build-managers/apache-maven { };
+
+  mavproxy = python3Packages.callPackage ../applications/science/robotics/mavproxy { };
+
+  go-md2man = callPackage ../development/tools/misc/go-md2man {};
+
+  mage = callPackage ../development/tools/build-managers/mage { };
+
+  mbed-cli = callPackage ../development/tools/mbed-cli { };
+
+  mdl = callPackage ../development/tools/misc/mdl { };
+
+  python-language-server = callPackage ../development/dotnet-modules/python-language-server { };
+
+  minify = callPackage ../development/web/minify { };
+
+  minizinc = callPackage ../development/tools/minizinc { };
+  minizincide = qt514.callPackage ../development/tools/minizinc/ide.nix { };
+
+  mkcert = callPackage ../development/tools/misc/mkcert { };
+
+  mkdocs = with python3Packages; toPythonApplication mkdocs;
+
+  mmtf-cpp = callPackage ../development/libraries/science/chemistry/mmtf-cpp { };
+
+  mockgen = callPackage ../development/tools/mockgen { };
+
+  modd = callPackage ../development/tools/modd { };
+
+  mold = callPackage ../development/tools/mold {
+    stdenv = llvmPackages_latest.stdenv;
+  };
+
+  msgpack-tools = callPackage ../development/tools/msgpack-tools { };
+
+  msgpuck = callPackage ../development/libraries/msgpuck { };
+
+  msitools = callPackage ../development/tools/misc/msitools { };
+
+  haskell-ci = haskell.lib.compose.justStaticExecutables haskellPackages.haskell-ci;
+  haskell-ci-unstable = lowPrio (haskell.lib.compose.justStaticExecutables haskellPackages.haskell-ci-unstable);
+
+  neoload = callPackage ../development/tools/neoload {
+    licenseAccepted = (config.neoload.accept_license or false);
+    fontsConf = makeFontsConf {
+      fontDirectories = [
+        dejavu_fonts.minimal
+      ];
+    };
+  };
+
+  nailgun = callPackage ../development/tools/nailgun { };
+
+  ninja = callPackage ../development/tools/build-managers/ninja { };
+
+  nimbo = with python3Packages; callPackage ../applications/misc/nimbo { };
+
+  gn = callPackage ../development/tools/build-managers/gn { };
+  gn1924 = callPackage ../development/tools/build-managers/gn/rev1924.nix { };
+
+  nixbang = callPackage ../development/tools/misc/nixbang {
+    pythonPackages = python3Packages;
+  };
+
+  nix-build-uncached = callPackage ../development/tools/misc/nix-build-uncached { };
+
+  nexus = callPackage ../development/tools/repository-managers/nexus {
+    jre_headless = jre8_headless;
+  };
+
+  nwjs = callPackage ../development/tools/nwjs { };
+
+  nwjs-sdk = callPackage ../development/tools/nwjs {
+    sdk = true;
+  };
+
+  # only kept for nixui, see https://github.com/matejc/nixui/issues/27
+  nwjs_0_12 = callPackage ../development/tools/node-webkit/nw12.nix {
+    gconf = gnome2.GConf;
+  };
+
+  nrfutil = callPackage ../development/tools/misc/nrfutil { };
+
+  obelisk = callPackage ../development/tools/ocaml/obelisk { menhir = ocamlPackages.menhir; };
+
+  obuild = callPackage ../development/tools/ocaml/obuild { };
+
+  omake = callPackage ../development/tools/ocaml/omake { };
+
+  omniorb = callPackage ../development/tools/omniorb { };
+
+  openai = with python3Packages; toPythonApplication openai;
+
+  opengrok = callPackage ../development/tools/misc/opengrok { };
+
+  openocd = callPackage ../development/embedded/openocd { };
+
+  oprofile = callPackage ../development/tools/profiling/oprofile {
+    libiberty_static = libiberty.override { staticBuild = true; };
+  };
+
+  pactorio = callPackage ../development/tools/pactorio {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  pahole = callPackage ../development/tools/misc/pahole {};
+
+  panopticon = callPackage ../development/tools/analysis/panopticon {};
+
+  parinfer-rust = callPackage ../development/tools/parinfer-rust {};
+
+  parse-cli-bin = callPackage ../development/tools/parse-cli-bin { };
+
+  patchelf = callPackage ../development/tools/misc/patchelf { };
+  patchelf_0_9 = callPackage ../development/tools/misc/patchelf/0.9.nix { };
+
+  patchelfUnstable = lowPrio (callPackage ../development/tools/misc/patchelf/unstable.nix { });
+
+  pax-rs = callPackage ../development/tools/pax-rs { };
+
+  perfect-hash = callPackage ../development/tools/misc/perfect-hash { };
+
+  peg = callPackage ../development/tools/parsing/peg { };
+
+  pgcli = pkgs.python3Packages.pgcli;
+
+  phantomjs2 = libsForQt514.callPackage ../development/tools/phantomjs2 { };
+
+  picotool = callPackage ../development/tools/picotool { };
+
+  pmccabe = callPackage ../development/tools/misc/pmccabe { };
+
+  pkgconf-unwrapped = callPackage ../development/tools/misc/pkgconf {};
+  pkgconf = callPackage ../build-support/pkg-config-wrapper {
+    pkg-config = pkgconf-unwrapped;
+    baseBinName = "pkgconf";
+  };
+  libpkgconf = pkgconf-unwrapped;
+
+  pkg-config-unwrapped = callPackage ../development/tools/misc/pkg-config { };
+  pkg-config = callPackage ../build-support/pkg-config-wrapper {
+    pkg-config = pkg-config-unwrapped;
+  };
+
+  pkg-configUpstream = lowPrio (pkg-config.override (old: {
+    pkg-config = old.pkg-config.override {
+      vanilla = true;
+    };
+  }));
+
+  polar = callPackage ../tools/misc/polar { };
+
+  inherit (nodePackages) postcss-cli;
+
+  postiats-utilities = callPackage ../development/tools/postiats-utilities {};
+
+  postman = callPackage ../development/web/postman {};
+
+  pprof = callPackage ../development/tools/profiling/pprof { };
+
+  pqrs = callPackage ../development/tools/pqrs { };
+
+  pyprof2calltree = with python3Packages; toPythonApplication pyprof2calltree;
+
+  prelink = callPackage ../development/tools/misc/prelink { };
+
+  premake3 = callPackage ../development/tools/misc/premake/3.nix { };
+
+  premake4 = callPackage ../development/tools/misc/premake { };
+
+  premake5 = callPackage ../development/tools/misc/premake/5.nix {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  premake = premake4;
+
+  privacyidea = callPackage ../applications/misc/privacyidea { };
+
+  procodile = callPackage ../tools/system/procodile { };
+
+  pry = callPackage ../development/tools/pry { };
+
+  pup = callPackage ../development/tools/pup { };
+
+  puppet-bolt = callPackage ../tools/admin/puppet/puppet-bolt { };
+
+  puppet-lint = callPackage ../development/tools/puppet/puppet-lint { };
+
+  puppeteer-cli = callPackage ../tools/graphics/puppeteer-cli {};
+
+  pyrseas = callPackage ../development/tools/database/pyrseas { };
+
+  pycritty = with python3Packages; toPythonApplication pycritty;
+
+  pylint-exit = callPackage ../development/tools/pylint-exit { };
+
+  qtcreator = libsForQt5.callPackage ../development/tools/qtcreator {
+    inherit (linuxPackages) perf;
+  };
+
+  qxmledit = libsForQt5.callPackage ../applications/editors/qxmledit {} ;
+
+  r10k = callPackage ../tools/system/r10k { };
+
+  radare2 = callPackage ../development/tools/analysis/radare2 ({
+    lua = lua5;
+  } // (config.radare or {}));
+
+  ran = callPackage ../servers/http/ran { };
+
+  retry = callPackage ../tools/system/retry { };
+
+  rizin = pkgs.callPackage ../development/tools/analysis/rizin { };
+
+  cutter = libsForQt515.callPackage ../development/tools/analysis/rizin/cutter.nix { };
+
+  ragel = ragelStable;
+
+  randoop = callPackage ../development/tools/analysis/randoop { };
+
+  inherit (callPackages ../development/tools/parsing/ragel {
+      tex = texlive.combined.scheme-small;
+    }) ragelStable ragelDev;
+
+  hammer = callPackage ../development/tools/parsing/hammer { };
+
+  rdocker = callPackage ../development/tools/rdocker { };
+
+  redis-dump = callPackage ../development/tools/redis-dump { };
+
+  redo = callPackage ../development/tools/build-managers/redo { };
+
+  redo-apenwarr = callPackage ../development/tools/build-managers/redo-apenwarr { };
+
+  redo-c = callPackage ../development/tools/build-managers/redo-c { };
+
+  redo-sh = callPackage ../development/tools/build-managers/redo-sh { };
+
+  regclient = callPackage ../development/tools/regclient { };
+  inherit (regclient) regbot regctl regsync;
+
+  reno = callPackage ../development/tools/reno { };
+
+  re2c = callPackage ../development/tools/parsing/re2c { };
+
+  remake = callPackage ../development/tools/build-managers/remake { };
+
+  replace-secret = callPackage ../build-support/replace-secret/replace-secret.nix { };
+
+  replacement = callPackage ../development/tools/misc/replacement { };
+
+  retdec = callPackage ../development/tools/analysis/retdec {
+    stdenv = gcc8Stdenv;
+  };
+  retdec-full = retdec.override {
+    withPEPatterns = true;
+  };
+
+  reviewdog = callPackage ../development/tools/misc/reviewdog { };
+
+  rman = callPackage ../development/tools/misc/rman { };
+
+  rnix-lsp = callPackage ../development/tools/rnix-lsp { };
+
+  rnginline = with python3Packages; toPythonApplication rnginline;
+
+  rolespec = callPackage ../development/tools/misc/rolespec { };
+
+  rr = callPackage ../development/tools/analysis/rr { };
+  rr-unstable = callPackage ../development/tools/analysis/rr/unstable.nix { }; # This is a temporary attribute, please see the corresponding file for details.
+
+  rufo = callPackage ../development/tools/rufo { };
+
+  samurai = callPackage ../development/tools/build-managers/samurai { };
+
+  saleae-logic = callPackage ../development/tools/misc/saleae-logic { };
+
+  saleae-logic-2 = callPackage ../development/tools/misc/saleae-logic-2 { };
+
+  sauce-connect = callPackage ../development/tools/sauce-connect { };
+
+  sawjap = callPackage ../development/tools/java/sawjap { };
+
+  sd-local = callPackage ../development/tools/sd-local { };
+
+  selenium-server-standalone = callPackage ../development/tools/selenium/server { };
+
+  selendroid = callPackage ../development/tools/selenium/selendroid { };
+
+  semver-tool = callPackage ../development/tools/misc/semver-tool { };
+
+  semantik = libsForQt5.callPackage ../applications/office/semantik { };
+
+  sconsPackages = dontRecurseIntoAttrs (callPackage ../development/tools/build-managers/scons { });
+  scons = sconsPackages.scons_latest;
+
+  mill = callPackage ../development/tools/build-managers/mill {
+    jre = jre8;
+  };
+
+  sbt = callPackage ../development/tools/build-managers/sbt { };
+  sbt-with-scala-native = callPackage ../development/tools/build-managers/sbt/scala-native.nix { };
+  simpleBuildTool = sbt;
+
+  sbt-extras = callPackage ../development/tools/build-managers/sbt-extras { };
+
+  scala-cli = callPackage ../development/tools/build-managers/scala-cli {};
+
+  scc = callPackage ../development/tools/misc/scc { };
+
+  scss-lint = callPackage ../development/tools/scss-lint { };
+
+  segger-ozone = callPackage ../development/tools/misc/segger-ozone { };
+
+  selene = callPackage ../development/tools/selene {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  shadowenv = callPackage ../tools/misc/shadowenv {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  shake = haskell.lib.compose.justStaticExecutables haskellPackages.shake;
+
+  shallot = callPackage ../tools/misc/shallot { };
+
+  inherit (callPackage ../development/tools/build-managers/shards { })
+    shards_0_15
+    shards_0_16
+    shards;
+
+  shellcheck = callPackage ../development/tools/shellcheck {
+    ShellCheck = haskellPackages.ShellCheck_0_8_0;
+  };
+
+  shellharden = callPackage ../development/tools/shellharden {};
+
+  schemaspy = callPackage ../development/tools/database/schemaspy { };
+
+  scenebuilder = callPackage ../development/tools/scenebuilder { };
+
+  scenic-view = callPackage ../development/tools/scenic-view { };
+
+  shncpd = callPackage ../tools/networking/shncpd { };
+
+  sigrok-cli = callPackage ../development/tools/sigrok-cli { };
+
+  silicon = callPackage ../tools/misc/silicon {
+    inherit (darwin.apple_sdk.frameworks) AppKit CoreText Security;
+  };
+
+  simpleTpmPk11 = callPackage ../tools/security/simple-tpm-pk11 { };
+
+  slimerjs = callPackage ../development/tools/slimerjs {};
+
+  sloccount = callPackage ../development/tools/misc/sloccount { };
+
+  sloc = nodePackages.sloc;
+
+  smatch = callPackage ../development/tools/analysis/smatch {
+    buildllvmsparse = false;
+    buildc2xml = false;
+  };
+
+  smc = callPackage ../tools/misc/smc { };
+
+  snakemake = callPackage ../applications/science/misc/snakemake { };
+
+  snore = callPackage ../tools/misc/snore { };
+
+  snzip = callPackage ../tools/archivers/snzip { };
+
+  snowman = qt5.callPackage ../development/tools/analysis/snowman { };
+
+  sparse = callPackage ../development/tools/analysis/sparse { };
+
+  speedtest-cli = with python3Packages; toPythonApplication speedtest-cli;
+
+  spin = callPackage ../development/tools/analysis/spin { };
+
+  spirv-headers = callPackage ../development/libraries/spirv-headers { };
+  spirv-tools = callPackage ../development/tools/spirv-tools { };
+
+  splint = callPackage ../development/tools/analysis/splint {
+    flex = flex_2_5_35;
+  };
+
+  spoofer = callPackage ../tools/networking/spoofer { };
+
+  spoofer-gui = callPackage ../tools/networking/spoofer { withGUI = true; };
+
+  spooles = callPackage ../development/libraries/science/math/spooles {};
+
+  spruce = callPackage ../development/tools/misc/spruce {};
+
+  sqlcheck = callPackage ../development/tools/database/sqlcheck { };
+
+  sqlitebrowser = libsForQt5.callPackage ../development/tools/database/sqlitebrowser { };
+
+  sqlite-utils = with python3Packages; toPythonApplication sqlite-utils;
+
+  sqlite-web = callPackage ../development/tools/database/sqlite-web { };
+
+  sqlmap = with python3Packages; toPythonApplication sqlmap;
+
+  sselp = callPackage ../tools/X11/sselp{ };
+
+  statix = callPackage ../tools/nix/statix { };
+
+  stm32cubemx = callPackage ../development/embedded/stm32/stm32cubemx { };
+
+  stm32flash = callPackage ../development/embedded/stm32/stm32flash { };
+
+  strace = callPackage ../development/tools/misc/strace { };
+
+  stylua = callPackage ../development/tools/stylua { };
+
+  summon = callPackage ../development/tools/summon { };
+
+  svlint = callPackage ../development/tools/analysis/svlint { };
+
+  svls = callPackage ../development/tools/misc/svls { };
+
+  swarm = callPackage ../development/tools/analysis/swarm { };
+
+  swiftformat = callPackage ../development/tools/swiftformat { };
+
+  symfony-cli = callPackage ../development/tools/symfony-cli { };
+
+  swiftshader = callPackage ../development/libraries/swiftshader { };
+
+  systemfd = callPackage ../development/tools/systemfd { };
+
+  swig1 = callPackage ../development/tools/misc/swig { };
+  swig2 = callPackage ../development/tools/misc/swig/2.x.nix { };
+  swig3 = callPackage ../development/tools/misc/swig/3.x.nix { };
+  swig4 = callPackage ../development/tools/misc/swig/4.nix { };
+  swig = swig3;
+  swigWithJava = swig;
+
+  c2ffi = callPackage ../development/tools/misc/c2ffi { };
+
+  c3c = callPackage ../development/compilers/c3c { };
+
+  swfmill = callPackage ../tools/video/swfmill { };
+
+  swftools = callPackage ../tools/video/swftools {
+    stdenv = gccStdenv;
+  };
+
+  szyszka = callPackage ../tools/misc/szyszka { };
+
+  taplo-cli = callPackage ../development/tools/taplo-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  taplo-lsp = callPackage ../development/tools/taplo-lsp {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  taoup = callPackage ../tools/misc/taoup { };
+
+  tcptrack = callPackage ../development/tools/misc/tcptrack { };
+
+  teensyduino = arduino-core.override { withGui = true; withTeensyduino = true; };
+
+  teensy-loader-cli = callPackage ../development/embedded/teensy-loader-cli { };
+
+  tytools = libsForQt5.callPackage ../development/embedded/tytools { };
+
+  terracognita = callPackage ../development/tools/misc/terracognita { };
+
+  terraform-lsp = callPackage ../development/tools/misc/terraform-lsp { };
+  terraform-ls = callPackage ../development/tools/misc/terraform-ls { };
+
+  terraformer = callPackage ../development/tools/misc/terraformer { };
+
+  terrascan = callPackage ../tools/security/terrascan { };
+
+  texinfo413 = callPackage ../development/tools/misc/texinfo/4.13a.nix { };
+  texinfo4 = texinfo413;
+  texinfo5 = callPackage ../development/tools/misc/texinfo/5.2.nix { };
+  texinfo6_5 = callPackage ../development/tools/misc/texinfo/6.5.nix { }; # needed for allegro
+  texinfo6_7 = callPackage ../development/tools/misc/texinfo/6.7.nix { }; # needed for gpm, iksemel and fwknop
+  texinfo6 = callPackage ../development/tools/misc/texinfo/6.8.nix { };
+  texinfo = texinfo6;
+  texinfoInteractive = texinfo.override { interactive = true; };
+
+  texi2html = callPackage ../development/tools/misc/texi2html { };
+
+  texi2mdoc = callPackage ../tools/misc/texi2mdoc { };
+
+  texlab = callPackage ../development/tools/misc/texlab {
+    inherit (darwin.apple_sdk.frameworks) Security CoreServices;
+  };
+
+  time-ghc-modules = callPackage ../development/tools/time-ghc-modules { };
+
+  tflint = callPackage ../development/tools/analysis/tflint { };
+
+  tfsec = callPackage ../development/tools/analysis/tfsec { };
+
+  todoist = callPackage ../applications/misc/todoist { };
+
+  todoist-electron = callPackage ../applications/misc/todoist-electron { };
+
+  toil = callPackage ../applications/science/misc/toil { };
+
+  travis = callPackage ../development/tools/misc/travis { };
+
+  tree-sitter = callPackage ../development/tools/parsing/tree-sitter {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tree-sitter-grammars = recurseIntoAttrs tree-sitter.builtGrammars;
+
+  trellis = callPackage ../development/embedded/fpga/trellis { };
+
+  ttyd = callPackage ../servers/ttyd { };
+
+  turbogit = callPackage ../development/tools/turbogit {
+    libgit2 = libgit2_1_3_0;
+  };
+
+  tweak = callPackage ../applications/editors/tweak { };
+
+  tychus = callPackage ../development/tools/tychus {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+
+  uddup = callPackage ../tools/security/uddup { };
+
+  udis86 = callPackage  ../development/tools/udis86 { };
+
+  uefi-firmware-parser = callPackage ../development/tools/analysis/uefi-firmware-parser { };
+
+  uhd3_5 = callPackage ../applications/radio/uhd/3.5.nix { };
+  uhd = callPackage ../applications/radio/uhd { };
+
+  uisp = callPackage ../development/embedded/uisp { };
+
+  uncrustify = callPackage ../development/tools/misc/uncrustify { };
+
+  universal-ctags = callPackage ../development/tools/misc/universal-ctags { };
+
+  unused = callPackage ../development/tools/misc/unused { };
+
+  vagrant = callPackage ../development/tools/vagrant {};
+
+  vala-language-server = callPackage ../development/tools/vala-language-server {};
+
+  bashdb = callPackage ../development/tools/misc/bashdb { };
+
+  gdb = callPackage ../development/tools/misc/gdb {
+    guile = null;
+    readline = readline81;
+  };
+
+  java-language-server = callPackage ../development/tools/java/java-language-server { };
+
+  jhiccup = callPackage ../development/tools/java/jhiccup { };
+
+  valgrind = callPackage ../development/tools/analysis/valgrind {
+    inherit (buildPackages.darwin) xnu bootstrap_cmds cctools;
+  };
+  valgrind-light = res.valgrind.override { gdb = null; };
+
+  valkyrie = callPackage ../development/tools/analysis/valkyrie { };
+
+  qcachegrind = libsForQt5.callPackage ../development/tools/analysis/qcachegrind {};
+
+  visualvm = callPackage ../development/tools/java/visualvm { };
+
+  vultr = callPackage ../development/tools/vultr { };
+
+  vultr-cli = callPackage ../development/tools/vultr-cli { };
+
+  vulnix = callPackage ../tools/security/vulnix { };
+
+  vtable-dumper = callPackage ../development/tools/misc/vtable-dumper { };
+
+  wails = callPackage ../development/tools/wails { };
+
+  whatsapp-for-linux = callPackage ../applications/networking/instant-messengers/whatsapp-for-linux { };
+
+  whatstyle = callPackage ../development/tools/misc/whatstyle {
+    inherit (llvmPackages) clang-unwrapped;
+  };
+
+  watson-ruby = callPackage ../development/tools/misc/watson-ruby {};
+
+  webdis = callPackage ../development/tools/database/webdis { };
+
+  xc3sprog = callPackage ../development/embedded/xc3sprog { };
+
+  xcb-imdkit = callPackage ../development/libraries/xcb-imdkit { };
+
+  xcode-install = callPackage ../development/tools/xcode-install { };
+
+  xcodebuild = callPackage ../development/tools/xcbuild/wrapper.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices CoreGraphics ImageIO;
+  };
+  xcodebuild6 = xcodebuild.override { stdenv = llvmPackages_6.stdenv; };
+  xcbuild = xcodebuild;
+  xcbuildHook = makeSetupHook {
+    deps = [ xcbuild ];
+  } ../development/tools/xcbuild/setup-hook.sh  ;
+
+  # xcbuild with llvm 6
+  xcbuild6Hook = makeSetupHook {
+    deps = [ xcodebuild6 ];
+  } ../development/tools/xcbuild/setup-hook.sh  ;
+
+  xcpretty = callPackage ../development/tools/xcpretty { };
+
+  xmlindent = callPackage ../development/web/xmlindent {};
+
+  xpwn = callPackage ../development/mobile/xpwn {};
+
+  xxdiff = libsForQt5.callPackage ../development/tools/misc/xxdiff { };
+
+  xxe-pe = callPackage ../applications/editors/xxe-pe { };
+
+  xxdiff-tip = xxdiff;
+
+  xxgdb = callPackage ../development/tools/misc/xxgdb { };
+
+  yaml2json = callPackage ../development/tools/yaml2json { };
+
+  yams = callPackage ../applications/audio/yams { };
+
+  ycmd = callPackage ../development/tools/misc/ycmd {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+    python = python3;
+    boost = boost174;
+  };
+
+  yodl = callPackage ../development/tools/misc/yodl { };
+
+  yq = python3.pkgs.toPythonApplication python3.pkgs.yq;
+
+  yq-go = callPackage ../development/tools/yq-go { };
+
+  ytt = callPackage ../development/tools/ytt {};
+
+  zls = callPackage ../development/tools/zls {
+    zig = zig_0_8_1;
+  };
+
+  zydis = callPackage ../development/libraries/zydis { };
+
+  winpdb = callPackage ../development/tools/winpdb { };
+
+  grabserial = callPackage ../development/tools/grabserial { };
+
+  mypy = with python3Packages; toPythonApplication mypy;
+
+  nsis = callPackage ../development/tools/nsis { };
+
+  tockloader = callPackage ../development/tools/misc/tockloader { };
+
+  ### DEVELOPMENT / LIBRARIES
+
+  a52dec = callPackage ../development/libraries/a52dec { };
+
+  aalib = callPackage ../development/libraries/aalib { };
+
+  abseil-cpp_202111 = callPackage ../development/libraries/abseil-cpp/202111.nix { };
+  abseil-cpp_202103 = callPackage ../development/libraries/abseil-cpp/202103.nix { };
+  abseil-cpp = abseil-cpp_202103;
+
+  accountsservice = callPackage ../development/libraries/accountsservice { };
+
+  acl = callPackage ../development/libraries/acl { };
+
+  acsccid = callPackage ../tools/security/acsccid { };
+
+  activemq = callPackage ../development/libraries/apache-activemq { };
+
+  adns = callPackage ../development/libraries/adns { };
+
+  adslib = callPackage ../development/libraries/adslib { };
+
+  afflib = callPackage ../development/libraries/afflib { };
+
+  aften = callPackage ../development/libraries/aften { };
+
+  alure = callPackage ../development/libraries/alure { };
+
+  alure2 = callPackage ../development/libraries/alure2 { };
+
+  agg = callPackage ../development/libraries/agg { };
+
+  alass = callPackage ../applications/video/alass { };
+
+  allegro = allegro4;
+  allegro4 = callPackage ../development/libraries/allegro {};
+  allegro5 = callPackage ../development/libraries/allegro/5.nix {};
+
+  amdvlk = callPackage ../development/libraries/amdvlk {};
+
+  aml = callPackage ../development/libraries/aml { };
+
+  amrnb = callPackage ../development/libraries/amrnb { };
+
+  amrwb = callPackage ../development/libraries/amrwb { };
+
+  ansi2html = with python3.pkgs; toPythonApplication ansi2html;
+
+  anttweakbar = callPackage ../development/libraries/AntTweakBar { };
+
+  appstream = callPackage ../development/libraries/appstream { };
+
+  appstream-glib = callPackage ../development/libraries/appstream-glib { };
+
+  apr = callPackage ../development/libraries/apr {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  aprutil = callPackage ../development/libraries/apr-util { };
+
+  aravis = callPackage ../development/libraries/aravis {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad;
+  };
+
+  arb = callPackage ../development/libraries/arb {};
+
+  argp-standalone = callPackage ../development/libraries/argp-standalone {};
+
+  aribb25 = callPackage ../development/libraries/aribb25 {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  armadillo = callPackage ../development/libraries/armadillo {};
+
+  arrayfire = callPackage ../development/libraries/arrayfire {};
+
+  arrow-cpp = callPackage ../development/libraries/arrow-cpp ({
+  } // lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+    stdenv = overrideCC stdenv buildPackages.gcc6; # hidden symbol `__divmoddi4'
+  });
+
+  arsenal = callPackage ../tools/security/arsenal { };
+
+  assimp = callPackage ../development/libraries/assimp { };
+
+  asio_1_10 = callPackage ../development/libraries/asio/1.10.nix { };
+  asio = callPackage ../development/libraries/asio { };
+
+  aspell = callPackage ../development/libraries/aspell { };
+
+  aspellDicts = recurseIntoAttrs (callPackages ../development/libraries/aspell/dictionaries.nix {});
+
+  aspellWithDicts = callPackage ../development/libraries/aspell/aspell-with-dicts.nix {
+    aspell = aspell.override { searchNixProfiles = false; };
+  };
+
+  attr = callPackage ../development/libraries/attr { };
+
+  at-spi2-core = callPackage ../development/libraries/at-spi2-core { };
+
+  at-spi2-atk = callPackage ../development/libraries/at-spi2-atk { };
+
+  aqbanking = callPackage ../development/libraries/aqbanking { };
+
+  aubio = callPackage ../development/libraries/aubio { };
+
+  audiality2 = callPackage ../development/libraries/audiality2 { };
+
+  audiofile = callPackage ../development/libraries/audiofile {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit CoreServices;
+  };
+
+  aws-c-auth = callPackage ../development/libraries/aws-c-auth { };
+
+  aws-c-cal = callPackage ../development/libraries/aws-c-cal {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  aws-c-common = callPackage ../development/libraries/aws-c-common { };
+
+  aws-c-compression = callPackage ../development/libraries/aws-c-compression { };
+
+  aws-c-event-stream = callPackage ../development/libraries/aws-c-event-stream { };
+
+  aws-c-http = callPackage ../development/libraries/aws-c-http { };
+
+  aws-c-io = callPackage ../development/libraries/aws-c-io {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  aws-c-mqtt = callPackage ../development/libraries/aws-c-mqtt { };
+
+  aws-c-s3 = callPackage ../development/libraries/aws-c-s3 { };
+
+  aws-c-sdkutils = callPackage ../development/libraries/aws-c-sdkutils { };
+
+  aws-checksums = callPackage ../development/libraries/aws-checksums { };
+
+  aws-crt-cpp = callPackage ../development/libraries/aws-crt-cpp { };
+
+  aws-sdk-cpp = callPackage ../development/libraries/aws-sdk-cpp {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio AudioToolbox;
+  };
+
+  ayatana-ido = callPackage ../development/libraries/ayatana-ido { };
+
+  babl = callPackage ../development/libraries/babl { };
+
+  backward-cpp = callPackage ../development/libraries/backward-cpp { };
+
+  bamf = callPackage ../development/libraries/bamf { };
+
+  inherit (callPackages ../development/libraries/bashup-events { }) bashup-events32 bashup-events44;
+
+  bcg729 = callPackage ../development/libraries/bcg729 { };
+
+  bctoolbox = callPackage ../development/libraries/bctoolbox { };
+
+  bearssl = callPackage ../development/libraries/bearssl { };
+
+  beecrypt = callPackage ../development/libraries/beecrypt { };
+
+  belcard = callPackage ../development/libraries/belcard { };
+
+  belr = callPackage ../development/libraries/belr { };
+
+  beignet = callPackage ../development/libraries/beignet {
+    inherit (llvmPackages_6) libllvm libclang;
+  };
+
+  belle-sip = callPackage ../development/libraries/belle-sip { };
+
+  libbfd = callPackage ../development/libraries/libbfd {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  libopcodes = callPackage ../development/libraries/libopcodes {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  bicpl = callPackage ../development/libraries/science/biology/bicpl { };
+
+  bicgl = callPackage ../development/libraries/science/biology/bicgl { inherit (darwin.apple_sdk.frameworks) GLUT; };
+
+  # TODO(@Ericson2314): Build bionic libc from source
+  bionic = if stdenv.hostPlatform.useAndroidPrebuilt
+    then pkgs."androidndkPkgs_${stdenv.hostPlatform.ndkVer}".libraries
+    else callPackage ../os-specific/linux/bionic-prebuilt { };
+
+
+  bobcat = callPackage ../development/libraries/bobcat { };
+
+  boehmgc = callPackage ../development/libraries/boehm-gc { };
+
+  boolstuff = callPackage ../development/libraries/boolstuff { };
+
+  inherit (callPackage ../development/libraries/boost { inherit (buildPackages) boost-build; })
+    boost155
+    boost159
+    boost160
+    boost165
+    boost166
+    boost168
+    boost169
+    boost170
+    boost172
+    boost173
+    boost174
+    boost175
+    boost177
+  ;
+
+  boost15x = boost159;
+  boost16x = boost169;
+  boost17x = boost177;
+  boost = boost17x;
+
+  boost_process = callPackage ../development/libraries/boost-process { };
+
+  bosh-cli = callPackage ../applications/networking/cluster/bosh-cli { };
+
+  botan = callPackage ../development/libraries/botan {
+    openssl = openssl_1_0_2;
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  botan2 = callPackage ../development/libraries/botan/2.0.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  box2d = callPackage ../development/libraries/box2d { };
+
+  boxfort = callPackage ../development/libraries/boxfort { };
+
+  buddy = callPackage ../development/libraries/buddy { };
+
+  buildkit-nix = callPackage ../applications/virtualization/buildkit-nix { };
+
+  bulletml = callPackage ../development/libraries/bulletml { };
+
+  bwidget = callPackage ../development/libraries/bwidget { };
+
+  bzrtp = callPackage ../development/libraries/bzrtp { };
+
+  c-ares = callPackage ../development/libraries/c-ares { };
+
+  c-blosc = callPackage ../development/libraries/c-blosc { };
+
+  # justStaticExecutables is needed due to https://github.com/NixOS/nix/issues/2990
+  cachix = haskell.lib.compose.justStaticExecutables haskellPackages.cachix;
+
+  hercules-ci-agent = callPackage ../development/tools/continuous-integration/hercules-ci-agent { };
+
+  hci = callPackage ../development/tools/continuous-integration/hci { };
+
+  isa-l = callPackage ../development/libraries/isa-l { };
+
+  niv = lib.getBin (haskell.lib.compose.justStaticExecutables haskellPackages.niv);
+
+  ormolu = haskellPackages.ormolu.bin;
+
+  capnproto = callPackage ../development/libraries/capnproto { };
+
+  capnproto-java = callPackage ../development/tools/capnproto-java { };
+
+  captive-browser = callPackage ../applications/networking/browsers/captive-browser { };
+
+  ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
+
+  ndn-tools = callPackage ../tools/networking/ndn-tools { };
+
+  nfd = callPackage ../servers/nfd { };
+
+  cddlib = callPackage ../development/libraries/cddlib {};
+
+  cdk = callPackage ../development/libraries/cdk {};
+
+  cdk-go = callPackage ../tools/security/cdk-go {};
+
+  cdo = callPackage ../development/libraries/cdo { };
+
+  cimg = callPackage  ../development/libraries/cimg { };
+
+  cjose = callPackage ../development/libraries/cjose { };
+
+  scmccid = callPackage ../development/libraries/scmccid { };
+
+  ccrtp = callPackage ../development/libraries/ccrtp { };
+
+  cctz = callPackage ../development/libraries/cctz { };
+
+  celt = callPackage ../development/libraries/celt {};
+  celt_0_7 = callPackage ../development/libraries/celt/0.7.nix {};
+  celt_0_5_1 = callPackage ../development/libraries/celt/0.5.1.nix {};
+
+  cegui = callPackage ../development/libraries/cegui {
+    ogre = ogre1_10;
+  };
+
+  certbot = python3.pkgs.toPythonApplication python3.pkgs.certbot;
+
+  certbot-full = certbot.withPlugins (cp: with cp; [
+    certbot-dns-cloudflare
+    certbot-dns-rfc2136
+    certbot-dns-route53
+  ]);
+
+  caf = callPackage ../development/libraries/caf {};
+
+  # CGAL 5 has API changes
+  cgal_4 = callPackage ../development/libraries/CGAL/4.nix {};
+  cgal_5 = callPackage ../development/libraries/CGAL {};
+  cgal = cgal_4;
+
+  cgui = callPackage ../development/libraries/cgui {};
+
+  check = callPackage ../development/libraries/check {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  chipmunk = callPackage ../development/libraries/chipmunk {};
+
+  chmlib = callPackage ../development/libraries/chmlib { };
+
+  chromaprint = callPackage ../development/libraries/chromaprint { };
+
+  cl = callPackage ../development/libraries/cl {
+    erlang = erlangR23;
+  };
+
+  clanlib = callPackage ../development/libraries/clanlib { };
+
+  classads = callPackage ../development/libraries/classads { };
+
+  clearsilver = callPackage ../development/libraries/clearsilver { };
+
+  clfft = callPackage ../development/libraries/clfft { };
+
+  clipp  = callPackage ../development/libraries/clipp { };
+
+  clipper = callPackage ../development/libraries/clipper { };
+
+  cln = callPackage ../development/libraries/cln { };
+
+  clucene_core_2 = callPackage ../development/libraries/clucene-core/2.x.nix {
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+  };
+
+  clucene_core_1 = callPackage ../development/libraries/clucene-core {
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+  };
+
+  clucene_core = clucene_core_1;
+
+  clutter = callPackage ../development/libraries/clutter { };
+
+  clutter-gst = callPackage ../development/libraries/clutter-gst {
+  };
+
+  clutter-gtk = callPackage ../development/libraries/clutter-gtk { };
+
+  cminpack = callPackage ../development/libraries/cminpack { };
+
+  cmocka = callPackage ../development/libraries/cmocka { };
+
+  cmrt = callPackage ../development/libraries/cmrt { };
+
+  coeurl = callPackage ../development/libraries/coeurl { };
+
+  cogl = callPackage ../development/libraries/cogl { };
+
+  coin3d = callPackage ../development/libraries/coin3d { };
+
+  soxt = callPackage ../development/libraries/soxt { };
+
+  CoinMP = callPackage ../development/libraries/CoinMP { };
+
+  cointop = callPackage ../applications/misc/cointop { };
+
+  collada-dom = callPackage ../development/libraries/collada-dom { };
+
+  cog = callPackage ../development/web/cog { };
+
+  cosmopolitan = callPackage ../development/libraries/cosmopolitan { };
+
+  ctl = callPackage ../development/libraries/ctl { };
+
+  ctpp2 = callPackage ../development/libraries/ctpp2 { };
+
+  ctpl = callPackage ../development/libraries/ctpl { };
+
+  cppe = callPackage ../development/libraries/science/chemistry/cppe { };
+
+  cppdb = callPackage ../development/libraries/cppdb { };
+
+  cpp-utilities = callPackage ../development/libraries/cpp-utilities { };
+
+  cpp-hocon = callPackage ../development/libraries/cpp-hocon { };
+
+  cpp-ipfs-api = callPackage ../development/libraries/cpp-ipfs-api { };
+
+  cpp-netlib = callPackage ../development/libraries/cpp-netlib {
+    boost = boost169; # fatal error: 'boost/asio/stream_socket_service.hpp' file not found
+  };
+
+  ubus = callPackage ../development/libraries/ubus { };
+
+  uci = callPackage ../development/libraries/uci { };
+
+  uri = callPackage ../development/libraries/uri { };
+
+  cppcms = callPackage ../development/libraries/cppcms { };
+
+  cppunit = callPackage ../development/libraries/cppunit { };
+
+  cpputest = callPackage ../development/libraries/cpputest { };
+
+  cracklib = callPackage ../development/libraries/cracklib { };
+
+  cre2 = callPackage ../development/libraries/cre2 { };
+
+  criterion = callPackage ../development/libraries/criterion { };
+
+  croaring = callPackage ../development/libraries/croaring { };
+
+  cryptopp = callPackage ../development/libraries/crypto++ { };
+
+  cryptominisat = callPackage ../applications/science/logic/cryptominisat { };
+
+  csdr = callPackage ../applications/radio/csdr { };
+
+  ctypes_sh = callPackage ../development/libraries/ctypes_sh { };
+
+  curlcpp = callPackage ../development/libraries/curlcpp { };
+
+  curlpp = callPackage ../development/libraries/curlpp { };
+
+  cutee = callPackage ../development/libraries/cutee { };
+
+  cutelyst = libsForQt5.callPackage ../development/libraries/cutelyst { };
+
+  cxxtools = callPackage ../development/libraries/cxxtools { };
+
+  cwiid = callPackage ../development/libraries/cwiid { };
+
+  cxx-prettyprint = callPackage ../development/libraries/cxx-prettyprint { };
+
+  cxxopts = callPackage ../development/libraries/cxxopts { };
+
+  cxxtest = python2Packages.callPackage ../development/libraries/cxxtest { };
+
+  cypress = callPackage ../development/web/cypress { };
+
+  cyrus_sasl = callPackage ../development/libraries/cyrus-sasl {
+    libkrb5 = if stdenv.isFreeBSD then libheimdal else libkrb5;
+  };
+
+  # Make bdb5 the default as it is the last release under the custom
+  # bsd-like license
+  db = db5;
+  db4 = db48;
+  db48 = callPackage ../development/libraries/db/db-4.8.nix { };
+  db5 = db53;
+  db53 = callPackage ../development/libraries/db/db-5.3.nix { };
+  db6 = db60;
+  db60 = callPackage ../development/libraries/db/db-6.0.nix { };
+  db62 = callPackage ../development/libraries/db/db-6.2.nix { };
+
+  dbxml = callPackage ../development/libraries/dbxml { };
+
+  dbus = callPackage ../development/libraries/dbus { };
+  dbus_cplusplus  = callPackage ../development/libraries/dbus-cplusplus { };
+  dbus-glib       = callPackage ../development/libraries/dbus-glib { };
+  dbus_java       = callPackage ../development/libraries/java/dbus-java { };
+
+  dbus-sharp-1_0 = callPackage ../development/libraries/dbus-sharp/dbus-sharp-1.0.nix { };
+  dbus-sharp-2_0 = callPackage ../development/libraries/dbus-sharp { };
+
+  dbus-sharp-glib-1_0 = callPackage ../development/libraries/dbus-sharp-glib/dbus-sharp-glib-1.0.nix { };
+  dbus-sharp-glib-2_0 = callPackage ../development/libraries/dbus-sharp-glib { };
+
+  makeDBusConf = { suidHelper, serviceDirectories, apparmor ? "disabled" }:
+    callPackage ../development/libraries/dbus/make-dbus-conf.nix {
+      inherit suidHelper serviceDirectories apparmor;
+    };
+
+  dee = callPackage ../development/libraries/dee {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  dhex = callPackage ../applications/editors/dhex { };
+
+  double-conversion = callPackage ../development/libraries/double-conversion { };
+
+  dclib = callPackage ../development/libraries/dclib { };
+
+  dillo = callPackage ../applications/networking/browsers/dillo {
+    fltk = fltk13;
+  };
+
+  directfb = callPackage ../development/libraries/directfb { };
+
+  discordchatexporter-cli = callPackage ../tools/backup/discordchatexporter-cli { };
+
+  discord-rpc = callPackage ../development/libraries/discord-rpc {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  dlib = callPackage ../development/libraries/dlib { };
+
+  doctest = callPackage ../development/libraries/doctest { };
+
+  docopt_cpp = callPackage ../development/libraries/docopt_cpp { };
+
+  docopts = callPackage ../development/tools/misc/docopts { };
+
+  dotconf = callPackage ../development/libraries/dotconf { };
+
+  draco = callPackage ../development/libraries/draco { };
+
+  # Multi-arch "drivers" which we want to build for i686.
+  driversi686Linux = recurseIntoAttrs {
+    inherit (pkgsi686Linux)
+      amdvlk
+      mesa
+      vaapiIntel
+      libvdpau-va-gl
+      vaapiVdpau
+      beignet
+      glxinfo
+      vdpauinfo;
+  };
+
+  drogon = callPackage ../development/libraries/drogon { };
+
+  dssi = callPackage ../development/libraries/dssi {};
+
+  duckdb = callPackage ../development/libraries/duckdb {};
+
+  duckstation = libsForQt5.callPackage ../applications/emulators/duckstation {};
+
+  easyloggingpp = callPackage ../development/libraries/easyloggingpp {};
+
+  eccodes = callPackage ../development/libraries/eccodes {
+    pythonPackages = python3Packages;
+  };
+
+  eclib = callPackage ../development/libraries/eclib {};
+
+  editline = callPackage ../development/libraries/editline { };
+
+  eigen = callPackage ../development/libraries/eigen {};
+
+  eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};
+
+  vapoursynth = callPackage ../development/libraries/vapoursynth {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  vapoursynth-editor = libsForQt5.callPackage ../development/libraries/vapoursynth/editor.nix { };
+
+  vapoursynth-mvtools = callPackage ../development/libraries/vapoursynth-mvtools { };
+
+  vmmlib = callPackage ../development/libraries/vmmlib {
+    inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
+  };
+
+  egl-wayland = callPackage ../development/libraries/egl-wayland {};
+
+  elastix = callPackage ../development/libraries/science/biology/elastix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  elfio = callPackage ../development/libraries/elfio { };
+
+  enchant1 = callPackage ../development/libraries/enchant/1.x.nix { };
+
+  enchant2 = callPackage ../development/libraries/enchant/2.x.nix { };
+  enchant = enchant2;
+
+  enet = callPackage ../development/libraries/enet { };
+
+  entt = callPackage ../development/libraries/entt { };
+
+  libepoxy = callPackage ../development/libraries/libepoxy {
+    inherit (darwin.apple_sdk.frameworks) Carbon OpenGL;
+  };
+
+  libesmtp = callPackage ../development/libraries/libesmtp { };
+
+  liberasurecode = callPackage ../applications/misc/liberasurecode { };
+
+  exiv2 = callPackage ../development/libraries/exiv2 { };
+
+  expat = callPackage ../development/libraries/expat { };
+
+  eventlog = callPackage ../development/libraries/eventlog { };
+
+  faac = callPackage ../development/libraries/faac { };
+
+  faad2 = callPackage ../development/libraries/faad2 { };
+
+  factor-lang-scope = callPackage ../development/compilers/factor-lang/scope.nix { };
+  factor-lang = factor-lang-scope.interpreter;
+
+  far2l = callPackage ../applications/misc/far2l {
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+    inherit (darwin.apple_sdk.frameworks) IOKit Carbon Cocoa AudioToolbox OpenGL;
+  };
+
+  farbfeld = callPackage ../development/libraries/farbfeld { };
+
+  farstream = callPackage ../development/libraries/farstream {
+    inherit (gst_all_1)
+      gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad
+      gst-libav;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  fcgi = callPackage ../development/libraries/fcgi { };
+
+  fcl = callPackage ../development/libraries/fcl { };
+
+  febio = callPackage ../development/libraries/febio { };
+
+  ffcast = callPackage ../tools/X11/ffcast { };
+
+  fflas-ffpack = callPackage ../development/libraries/fflas-ffpack { };
+
+  forge = callPackage ../development/libraries/forge {
+    cudatoolkit = buildPackages.cudatoolkit_11;
+  };
+
+  linbox = callPackage ../development/libraries/linbox { };
+
+  ffmpeg_3_4 = callPackage ../development/libraries/ffmpeg/3.4.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreMedia;
+  };
+  ffmpeg_4 = callPackage ../development/libraries/ffmpeg/4.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreMedia VideoToolbox;
+  };
+  ffmpeg_5 = callPackage ../development/libraries/ffmpeg/5.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreMedia VideoToolbox;
+  };
+
+  # Aliases
+  ffmpeg_3 = ffmpeg_3_4;
+  # Please make sure this is updated to the latest version on the next major
+  # update to ffmpeg
+  # Packages which use ffmpeg as a library, should pin to the relevant major
+  # version number which the upstream support.
+  ffmpeg = ffmpeg_4;
+
+  ffmpeg-full = callPackage ../development/libraries/ffmpeg-full {
+    svt-av1 = if stdenv.isAarch64 then null else svt-av1;
+    rav1e = null; # We already have SVT-AV1 for faster encoding
+    rtmpdump = null; # Prefer the built-in RTMP implementation
+    # The following need to be fixed on Darwin
+    libjack2 = if stdenv.isDarwin then null else libjack2;
+    libmodplug = if stdenv.isDarwin then null else libmodplug;
+    libmfx = if stdenv.isDarwin then null else intel-media-sdk;
+    libpulseaudio = if stdenv.isDarwin then null else libpulseaudio;
+    samba = if stdenv.isDarwin then null else samba;
+    vid-stab = if stdenv.isDarwin then null else vid-stab;
+    inherit (darwin.apple_sdk.frameworks)
+      Cocoa CoreServices CoreAudio AVFoundation MediaToolbox
+      VideoDecodeAcceleration;
+  };
+
+  ffmpegthumbnailer = callPackage ../development/libraries/ffmpegthumbnailer { };
+
+  ffmpeg-sixel = callPackage ../development/libraries/ffmpeg-sixel { };
+
+  ffmpeg-normalize = python3Packages.callPackage ../applications/video/ffmpeg-normalize { };
+
+  ffms = callPackage ../development/libraries/ffms { };
+
+  fftw = callPackage ../development/libraries/fftw { };
+  fftwSinglePrec = fftw.override { precision = "single"; };
+  fftwFloat = fftwSinglePrec; # the configure option is just an alias
+  fftwLongDouble = fftw.override { precision = "long-double"; };
+
+  filter-audio = callPackage ../development/libraries/filter-audio {};
+
+  filtron = callPackage ../servers/filtron {};
+
+  flann = callPackage ../development/libraries/flann { };
+
+  flatcc = callPackage ../development/libraries/flatcc { };
+
+  flint = callPackage ../development/libraries/flint { };
+
+  flite = callPackage ../development/libraries/flite { };
+
+  fltk13 = callPackage ../development/libraries/fltk {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa OpenGL;
+  };
+  fltk14 = callPackage ../development/libraries/fltk/1.4.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa OpenGL;
+  };
+  fltk13-minimal = fltk13.override {
+    withGL = false;
+    withCairo = false;
+    withPango = false;
+    withExamples = false;
+    withDocs = false;
+  };
+  fltk14-minimal = fltk14.override {
+    withGL = false;
+    withCairo = false;
+    withPango = false;
+    withExamples = false;
+    withDocs = false;
+  };
+  fltk = fltk13;
+  fltk-minimal = fltk13-minimal;
+
+  flyway = callPackage ../development/tools/flyway { };
+
+  inherit (callPackages ../development/libraries/fmt { }) fmt_7 fmt_8;
+
+  fmt = fmt_7;
+
+  fplll = callPackage ../development/libraries/fplll {};
+  fplll_20160331 = callPackage ../development/libraries/fplll/20160331.nix {};
+
+  freeimage = callPackage ../development/libraries/freeimage { };
+
+  freetts = callPackage ../development/libraries/freetts {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  frog = res.languageMachines.frog;
+
+  fstrcmp = callPackage ../development/libraries/fstrcmp { };
+
+  fstrm = callPackage ../development/libraries/fstrm { };
+
+  cfitsio = callPackage ../development/libraries/science/astronomy/cfitsio { };
+
+  fontconfig = callPackage ../development/libraries/fontconfig {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation;
+  };
+
+  folly = callPackage ../development/libraries/folly { };
+
+  folks = callPackage ../development/libraries/folks { };
+
+  makeFontsConf = let fontconfig_ = fontconfig; in {fontconfig ? fontconfig_, fontDirectories}:
+    callPackage ../development/libraries/fontconfig/make-fonts-conf.nix {
+      inherit fontconfig fontDirectories;
+    };
+
+  makeFontsCache = let fontconfig_ = fontconfig; in {fontconfig ? fontconfig_, fontDirectories}:
+    callPackage ../development/libraries/fontconfig/make-fonts-cache.nix {
+      inherit fontconfig fontDirectories;
+    };
+
+  f2c = callPackage ../development/tools/f2c { };
+
+  freealut = callPackage ../development/libraries/freealut { };
+
+  freeglut = callPackage ../development/libraries/freeglut { };
+
+  freenect = callPackage ../development/libraries/freenect {
+    inherit (darwin.apple_sdk.frameworks) Cocoa GLUT;
+  };
+
+  freetype = callPackage ../development/libraries/freetype { };
+
+  frei0r = callPackage ../development/libraries/frei0r { };
+
+  fribidi = callPackage ../development/libraries/fribidi { };
+
+  funambol = callPackage ../development/libraries/funambol { };
+
+  galer = callPackage ../tools/security/galer { };
+
+  gamenetworkingsockets = callPackage ../development/libraries/gamenetworkingsockets { };
+
+  gamin = callPackage ../development/libraries/gamin { };
+  fam = gamin; # added 2018-04-25
+
+  ganv = callPackage ../development/libraries/ganv { };
+
+  garble = callPackage ../build-support/go/garble.nix { };
+
+  gcab = callPackage ../development/libraries/gcab { };
+
+  gcovr = with python3Packages; toPythonApplication gcovr;
+
+  gcr = callPackage ../development/libraries/gcr { };
+
+  gdl = callPackage ../development/libraries/gdl { };
+
+  gdome2 = callPackage ../development/libraries/gdome2 { };
+
+  gdbm = callPackage ../development/libraries/gdbm { };
+
+  gecode_3 = callPackage ../development/libraries/gecode/3.nix { };
+  gecode_6 = qt5.callPackage ../development/libraries/gecode { };
+  gecode = gecode_6;
+
+  gephi = callPackage ../applications/science/misc/gephi {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  gegl = callPackage ../development/libraries/gegl {
+    inherit (darwin.apple_sdk.frameworks) OpenCL;
+  };
+
+  gensio = callPackage ../development/libraries/gensio {};
+
+  geoclue2 = callPackage ../development/libraries/geoclue {};
+
+  geoclue2-with-demo-agent = geoclue2.override { withDemoAgent = true; };
+
+  geocode-glib = callPackage ../development/libraries/geocode-glib {};
+
+  geoipWithDatabase = makeOverridable (callPackage ../development/libraries/geoip) {
+    drvName = "geoip-tools";
+    geoipDatabase = geolite-legacy;
+  };
+
+  geoip = callPackage ../development/libraries/geoip { };
+
+  geoipjava = callPackage ../development/libraries/java/geoipjava { };
+
+  geos = callPackage ../development/libraries/geos { };
+
+  getdata = callPackage ../development/libraries/getdata { };
+
+  inherit (callPackages ../development/libraries/getdns { })
+    getdns stubby;
+
+  gettext = callPackage ../development/libraries/gettext { };
+
+  gf2x = callPackage ../development/libraries/gf2x {};
+
+  gd = callPackage ../development/libraries/gd {
+    automake = automake115x;
+    libtiff = null;
+    libXpm = null;
+  };
+
+  gdal = callPackage ../development/libraries/gdal {
+    pythonPackages = python3Packages;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  gdal_2 = callPackage ../development/libraries/gdal/2.4.nix { };
+
+  gdcm = callPackage ../development/libraries/gdcm {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Cocoa;
+  };
+
+  ggz_base_libs = callPackage ../development/libraries/ggz_base_libs {};
+
+  gifticlib = callPackage ../development/libraries/science/biology/gifticlib { };
+
+  gio-sharp = callPackage ../development/libraries/gio-sharp { };
+
+  givaro = callPackage ../development/libraries/givaro {};
+  givaro_3 = callPackage ../development/libraries/givaro/3.nix {};
+  givaro_3_7 = callPackage ../development/libraries/givaro/3.7.nix {};
+
+  ghc_filesystem = callPackage ../development/libraries/ghc_filesystem {};
+
+  ghp-import = with python3Packages; toPythonApplication ghp-import;
+
+  ghcid = haskellPackages.ghcid.bin;
+
+  graphia = libsForQt5.callPackage ../applications/science/misc/graphia { };
+
+  icon-lang = callPackage ../development/interpreters/icon-lang { };
+
+  libgit2 = callPackage ../development/libraries/libgit2 {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  libgit2_1_3_0 = libgit2.overrideAttrs (_: rec {
+    version = "1.3.0";
+    src = pkgs.fetchFromGitHub {
+      owner = "libgit2";
+      repo = "libgit2";
+      rev = "v${version}";
+      sha256 = "sha256-7atNkOBzX+nU1gtFQEaE+EF1L+eex+Ajhq2ocoJY920=";
+    };
+    patches = [];
+  });
+
+  libgit2-glib = callPackage ../development/libraries/libgit2-glib { };
+
+  libhsts = callPackage ../development/libraries/libhsts { };
+
+  glbinding = callPackage ../development/libraries/glbinding { };
+
+  gle = callPackage ../development/libraries/gle { };
+
+  glew = callPackage ../development/libraries/glew {
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+  };
+  glew110 = callPackage ../development/libraries/glew/1.10.nix {
+    inherit (darwin.apple_sdk.frameworks) AGL OpenGL;
+  };
+  glew-egl = callPackage ../development/libraries/glew {
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+    enableEGL = true;
+  };
+
+  glfw = glfw3;
+  glfw-wayland = glfw.override {
+    waylandSupport = true;
+  };
+  glfw2 = callPackage ../development/libraries/glfw/2.x.nix { };
+  glfw3 = callPackage ../development/libraries/glfw/3.x.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa Kernel;
+  };
+
+  glibc = callPackage ../development/libraries/glibc {
+    stdenv = gccStdenv; # doesn't compile without gcc
+  };
+
+  mtrace = callPackage ../development/libraries/glibc/mtrace.nix { };
+
+  # Provided by libc on Operating Systems that use the Extensible Linker Format.
+  elf-header =
+    if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf"
+    then null
+    else elf-header-real;
+
+  elf-header-real = callPackage ../development/libraries/elf-header { };
+
+  glibc_memusage = callPackage ../development/libraries/glibc {
+    withGd = true;
+  };
+
+  # Being redundant to avoid cycles on boot. TODO: find a better way
+  glibcCross = callPackage ../development/libraries/glibc {
+    stdenv = gccCrossLibcStdenv; # doesn't compile without gcc
+  };
+
+  muslCross = musl.override {
+    stdenv = crossLibcStdenv;
+  };
+
+  # These are used when buiding compiler-rt / libgcc, prior to building libc.
+  preLibcCrossHeaders = let
+    inherit (stdenv.targetPlatform) libc;
+  in     if libc == "msvcrt" then targetPackages.windows.mingw_w64_headers or windows.mingw_w64_headers
+    else if libc == "nblibc" then targetPackages.netbsdCross.headers or netbsdCross.headers
+    else if libc == "libSystem" && stdenv.targetPlatform.isAarch64 then targetPackages.darwin.LibsystemCross or darwin.LibsystemCross
+    else null;
+
+  # We can choose:
+  libcCrossChooser = name:
+    # libc is hackily often used from the previous stage. This `or`
+    # hack fixes the hack, *sigh*.
+    /**/ if name == "glibc" then targetPackages.glibcCross or glibcCross
+    else if name == "bionic" then targetPackages.bionic or bionic
+    else if name == "uclibc" then targetPackages.uclibcCross or uclibcCross
+    else if name == "avrlibc" then targetPackages.avrlibcCross or avrlibcCross
+    else if name == "newlib" && stdenv.targetPlatform.isMsp430 then targetPackages.msp430NewlibCross or msp430NewlibCross
+    else if name == "newlib" && stdenv.targetPlatform.isVc4 then targetPackages.vc4-newlib or vc4-newlib
+    else if name == "newlib" && stdenv.targetPlatform.isOr1k then targetPackages.or1k-newlib or or1k-newlib
+    else if name == "newlib" then targetPackages.newlibCross or newlibCross
+    else if name == "newlib-nano" then targetPackages.newlib-nanoCross or newlib-nanoCross
+    else if name == "musl" then targetPackages.muslCross or muslCross
+    else if name == "msvcrt" then targetPackages.windows.mingw_w64 or windows.mingw_w64
+    else if name == "libSystem" then
+      if stdenv.targetPlatform.useiOSPrebuilt
+      then targetPackages.darwin.iosSdkPkgs.libraries or darwin.iosSdkPkgs.libraries
+      else targetPackages.darwin.LibsystemCross or (throw "don't yet have a `targetPackages.darwin.LibsystemCross for ${stdenv.targetPlatform.config}`")
+    else if name == "nblibc" then targetPackages.netbsdCross.libc or netbsdCross.libc
+    else if name == "wasilibc" then targetPackages.wasilibc or wasilibc
+    else if name == "relibc" then targetPackages.relibc or relibc
+    else if stdenv.targetPlatform.isGhcjs then null
+    else throw "Unknown libc ${name}";
+
+  libcCross = assert stdenv.targetPlatform != stdenv.buildPlatform; libcCrossChooser stdenv.targetPlatform.libc;
+
+  threadsCross =
+    if stdenv.targetPlatform.isMinGW && !(stdenv.targetPlatform.useLLVM or false)
+    then targetPackages.windows.mcfgthreads or windows.mcfgthreads
+    else null;
+
+  wasilibc = callPackage ../development/libraries/wasilibc {
+    stdenv = crossLibcStdenv;
+  };
+
+  relibc = callPackage ../development/libraries/relibc { };
+
+  # Only supported on Linux
+  glibcLocales = if stdenv.hostPlatform.isLinux then callPackage ../development/libraries/glibc/locales.nix { } else null;
+
+  glibcInfo = callPackage ../development/libraries/glibc/info.nix { };
+
+  glibc_multi = callPackage ../development/libraries/glibc/multi.nix {
+    glibc32 = pkgsi686Linux.glibc;
+  };
+
+  glm = callPackage ../development/libraries/glm { };
+
+  globalplatform = callPackage ../development/libraries/globalplatform { };
+  gppcscconnectionplugin =
+    callPackage ../development/libraries/globalplatform/gppcscconnectionplugin.nix { };
+
+  glog = callPackage ../development/libraries/glog { };
+
+  gloox = callPackage ../development/libraries/gloox { };
+
+  glpk = callPackage ../development/libraries/glpk { };
+
+  glsurf = callPackage ../applications/science/math/glsurf {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_05;
+  };
+
+  glui = callPackage ../development/libraries/glui {};
+
+  gmime2 = callPackage ../development/libraries/gmime/2.nix { };
+  gmime3 = callPackage ../development/libraries/gmime/3.nix { };
+  gmime = gmime2;
+
+  gmm = callPackage ../development/libraries/gmm { };
+
+  gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { }; # required by older GHC versions
+  gmp5 = callPackage ../development/libraries/gmp/5.1.x.nix { };
+  gmp6 = callPackage ../development/libraries/gmp/6.x.nix { };
+  gmp = gmp6;
+  gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; });
+
+  #GMP ex-satellite, so better keep it near gmp
+  mpfr = callPackage ../development/libraries/mpfr { };
+
+  mpfi = callPackage ../development/libraries/mpfi { };
+
+  mpfshell = callPackage ../development/tools/mpfshell { };
+
+  # A GMP fork
+  mpir = callPackage ../development/libraries/mpir {};
+
+  gnatcoll-core = callPackage ../development/libraries/ada/gnatcoll/core.nix { };
+
+  # gnatcoll-bindings repository
+  gnatcoll-gmp = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "gmp"; };
+  gnatcoll-iconv = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "iconv"; };
+  gnatcoll-lzma = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "lzma"; };
+  gnatcoll-omp = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "omp"; };
+  gnatcoll-python3 = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "python3"; };
+  gnatcoll-readline = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "readline"; };
+  gnatcoll-syslog = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "syslog"; };
+  gnatcoll-zlib = callPackage ../development/libraries/ada/gnatcoll/bindings.nix { component = "zlib"; };
+
+  # gnatcoll-db repository
+  gnatcoll-postgres = callPackage ../development/libraries/ada/gnatcoll/db.nix { component = "postgres"; };
+  gnatcoll-sql = callPackage ../development/libraries/ada/gnatcoll/db.nix { component = "sql"; };
+  gnatcoll-sqlite = callPackage ../development/libraries/ada/gnatcoll/db.nix { component = "sqlite"; };
+  gnatcoll-xref = callPackage ../development/libraries/ada/gnatcoll/db.nix { component = "xref"; };
+
+  gns3Packages = dontRecurseIntoAttrs (callPackage ../applications/networking/gns3 { });
+  gns3-gui = gns3Packages.guiStable;
+  gns3-server = gns3Packages.serverStable;
+
+  gobject-introspection = callPackage ../development/libraries/gobject-introspection {
+    nixStoreDir = config.nix.storeDir or builtins.storeDir;
+    inherit (darwin) cctools;
+  };
+
+  goocanvas = callPackage ../development/libraries/goocanvas { };
+  goocanvas2 = callPackage ../development/libraries/goocanvas/2.x.nix { };
+  goocanvas3 = callPackage ../development/libraries/goocanvas/3.x.nix { };
+  goocanvasmm2 = callPackage ../development/libraries/goocanvasmm { };
+
+  gflags = callPackage ../development/libraries/gflags { };
+
+  gperftools = callPackage ../development/libraries/gperftools { };
+
+  grab-site = callPackage ../tools/backup/grab-site { };
+
+  grilo = callPackage ../development/libraries/grilo { };
+
+  grilo-plugins = callPackage ../development/libraries/grilo-plugins { };
+
+  grpc = callPackage ../development/libraries/grpc { };
+
+  gsettings-qt = libsForQt5.callPackage ../development/libraries/gsettings-qt { };
+
+  gst_all_1 = recurseIntoAttrs(callPackage ../development/libraries/gstreamer {
+    callPackage = newScope (gst_all_1 // { libav = pkgs.ffmpeg; });
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox AVFoundation Cocoa CoreFoundation CoreMedia CoreServices CoreVideo DiskArbitration Foundation IOKit MediaToolbox OpenGL VideoToolbox;
+  });
+
+  gusb = callPackage ../development/libraries/gusb { };
+
+  qt-mobility = callPackage ../development/libraries/qt-mobility {};
+
+
+  qtstyleplugin-kvantum-qt4 = callPackage ../development/libraries/qtstyleplugin-kvantum-qt4 { };
+
+  qxmpp = libsForQt5.callPackage ../development/libraries/qxmpp {};
+
+  gnet = callPackage ../development/libraries/gnet { };
+
+  gnu-config = callPackage ../development/libraries/gnu-config { };
+
+  gnu-efi = if stdenv.hostPlatform.isEfi
+              then callPackage ../development/libraries/gnu-efi { }
+            else null;
+
+  gnutls = callPackage ../development/libraries/gnutls {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    util-linux = util-linuxMinimal; # break the cyclic dependency
+    autoconf = buildPackages.autoconf269;
+  };
+
+  gnutls-kdh = callPackage ../development/libraries/gnutls-kdh/3.5.nix {
+    gperf = gperf_3_0;
+  };
+
+  gpac = callPackage ../applications/video/gpac { };
+
+  gpgme = callPackage ../development/libraries/gpgme { };
+
+  pgpdump = callPackage ../tools/security/pgpdump { };
+
+  pgpkeyserver-lite = callPackage ../servers/web-apps/pgpkeyserver-lite {};
+
+  pgweb = callPackage ../development/tools/database/pgweb { };
+
+  gpshell = callPackage ../development/tools/misc/gpshell { };
+
+  grantlee = callPackage ../development/libraries/grantlee { };
+
+  gsasl = callPackage ../development/libraries/gsasl { };
+
+  gsl = callPackage ../development/libraries/gsl { };
+
+  gsl_1 = callPackage ../development/libraries/gsl/gsl-1_16.nix { };
+
+  gsm = callPackage ../development/libraries/gsm {};
+
+  gsoap = callPackage ../development/libraries/gsoap { };
+
+  gsound = callPackage ../development/libraries/gsound { };
+
+  gss = callPackage ../development/libraries/gss { };
+
+  gtkimageview = callPackage ../development/libraries/gtkimageview { };
+
+  gtkmathview = callPackage ../development/libraries/gtkmathview { };
+
+  glib = callPackage ../development/libraries/glib (let
+    glib-untested = glib.override { doCheck = false; };
+  in {
+    # break dependency cycles
+    # these things are only used for tests, they don't get into the closure
+    shared-mime-info = shared-mime-info.override { glib = glib-untested; };
+    desktop-file-utils = desktop-file-utils.override { glib = glib-untested; };
+    dbus = dbus.override { systemd = null; };
+  });
+
+  glibmm = callPackage ../development/libraries/glibmm { };
+
+  glibmm_2_68 = callPackage ../development/libraries/glibmm/2.68.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  glib-networking = callPackage ../development/libraries/glib-networking {};
+
+  glib-testing = callPackage ../development/libraries/glib-testing { };
+
+  glirc = haskell.lib.compose.justStaticExecutables haskellPackages.glirc;
+
+  gom = callPackage ../development/libraries/gom { };
+
+  ace = callPackage ../development/libraries/ace { };
+
+  atk = callPackage ../development/libraries/atk { };
+
+  atkmm = callPackage ../development/libraries/atkmm { };
+
+  atkmm_2_36 = callPackage ../development/libraries/atkmm/2.36.nix { };
+
+  pixman = callPackage ../development/libraries/pixman { };
+
+  cairo = callPackage ../development/libraries/cairo { };
+
+  cairomm = callPackage ../development/libraries/cairomm { };
+
+  cairomm_1_16 = callPackage ../development/libraries/cairomm/1.16.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  pango = callPackage ../development/libraries/pango {
+    harfbuzz = harfbuzz.override { withCoreText = stdenv.isDarwin; };
+  };
+
+  pangolin = callPackage ../development/libraries/pangolin {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  pangomm = callPackage ../development/libraries/pangomm {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  pangomm_2_48 = callPackage ../development/libraries/pangomm/2.48.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  pangomm_2_42 = callPackage ../development/libraries/pangomm/2.42.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  gdata-sharp = callPackage ../development/libraries/gdata-sharp { };
+
+  gdk-pixbuf = callPackage ../development/libraries/gdk-pixbuf { };
+
+  gdk-pixbuf-xlib = callPackage ../development/libraries/gdk-pixbuf/xlib.nix { };
+
+  gnome-menus = callPackage ../development/libraries/gnome-menus { };
+
+  elementary-cmake-modules = callPackage ../development/libraries/elementary-cmake-modules { };
+
+  gtk2 = callPackage ../development/libraries/gtk/2.x.nix {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa;
+  };
+
+  gtk2-x11 = gtk2.override {
+    cairo = cairo.override { x11Support = true; };
+    pango = pango.override { cairo = cairo.override { x11Support = true; }; x11Support = true; };
+    gdktarget = "x11";
+  };
+
+  gtkextra = callPackage ../development/libraries/gtkextra { };
+
+  gtk3 = callPackage ../development/libraries/gtk/3.x.nix {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa QuartzCore;
+  };
+
+  gtk4 = callPackage ../development/libraries/gtk/4.x.nix {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa;
+  };
+
+
+  # On darwin gtk uses cocoa by default instead of x11.
+  gtk3-x11 = gtk3.override {
+    cairo = cairo.override { x11Support = true; };
+    pango = pango.override { cairo = cairo.override { x11Support = true; }; x11Support = true; };
+    x11Support = true;
+  };
+
+  gtkmm2 = callPackage ../development/libraries/gtkmm/2.x.nix { };
+  gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { };
+  gtkmm4 = callPackage ../development/libraries/gtkmm/4.x.nix { };
+
+  gtk_engines = callPackage ../development/libraries/gtk-engines { };
+
+  gtk-engine-bluecurve = callPackage ../development/libraries/gtk-engine-bluecurve { };
+
+  gtk-engine-murrine = callPackage ../development/libraries/gtk-engine-murrine { };
+
+  gtk-sharp-2_0 = callPackage ../development/libraries/gtk-sharp/2.0.nix { };
+
+  gtk-sharp-3_0 = callPackage ../development/libraries/gtk-sharp/3.0.nix { };
+
+  gtk-sharp-beans = callPackage ../development/libraries/gtk-sharp-beans { };
+
+  gtk-mac-integration = callPackage ../development/libraries/gtk-mac-integration {
+    gtk = gtk3;
+  };
+
+  gtk-mac-integration-gtk2 = gtk-mac-integration.override {
+    gtk = gtk2;
+  };
+
+  gtk-mac-integration-gtk3 = gtk-mac-integration;
+
+  gtk-mac-bundler = callPackage ../development/tools/gtk-mac-bundler {};
+
+  gtksourceview = gtksourceview3;
+
+  gtksourceview3 = callPackage ../development/libraries/gtksourceview/3.x.nix { };
+
+  gtksourceview4 = callPackage ../development/libraries/gtksourceview/4.x.nix { };
+
+  gtksourceview5 = callPackage ../development/libraries/gtksourceview/5.x.nix { };
+
+  gtksourceviewmm = callPackage ../development/libraries/gtksourceviewmm { };
+
+  gtksourceviewmm4 = callPackage ../development/libraries/gtksourceviewmm/4.x.nix { };
+
+  gtkspell2 = callPackage ../development/libraries/gtkspell { enchant = enchant1; };
+
+  gtkspell3 = callPackage ../development/libraries/gtkspell/3.nix { };
+
+  gtkspellmm = callPackage ../development/libraries/gtkspellmm { };
+
+  gtk-layer-shell = callPackage ../development/libraries/gtk-layer-shell { };
+
+  gts = callPackage ../development/libraries/gts { };
+
+  gumbo = callPackage ../development/libraries/gumbo { };
+
+  gvfs = callPackage ../development/libraries/gvfs { };
+
+  gvm-libs = callPackage ../development/libraries/gvm-libs { };
+
+  gwenhywfar = callPackage ../development/libraries/aqbanking/gwenhywfar.nix { };
+
+  hamlib = hamlib_3;
+  hamlib_3 = callPackage ../development/libraries/hamlib { };
+  hamlib_4 = callPackage ../development/libraries/hamlib/4.nix { };
+
+  heimdal = callPackage ../development/libraries/kerberos/heimdal.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security SystemConfiguration;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+  libheimdal = heimdal;
+
+  harfbuzz = callPackage ../development/libraries/harfbuzz {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreText;
+  };
+
+  harfbuzzFull = harfbuzz.override {
+    withCoreText = stdenv.isDarwin;
+    withGraphite2 = true;
+    withIcu = true;
+  };
+
+  hawknl = callPackage ../development/libraries/hawknl { };
+
+  haxor-news = callPackage ../applications/misc/haxor-news { };
+
+  hdt = callPackage ../misc/hdt {};
+
+  hfinger = callPackage ../tools/security/hfinger { };
+
+  herqq = libsForQt5.callPackage ../development/libraries/herqq { };
+
+  hidapi = callPackage ../development/libraries/hidapi {
+    inherit (darwin.apple_sdk.frameworks) Cocoa IOKit;
+    # TODO: remove once `udev` is `systemdMinimal` everywhere.
+    udev = systemdMinimal;
+  };
+
+  highfive = callPackage ../development/libraries/highfive { };
+
+  highfive-mpi = highfive.override { hdf5 = hdf5-mpi; };
+
+  hiredis = callPackage ../development/libraries/hiredis { };
+
+  hiredis-vip = callPackage ../development/libraries/hiredis-vip { };
+
+  hivex = callPackage ../development/libraries/hivex {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  hound = callPackage ../development/tools/misc/hound { };
+
+  hpx = callPackage ../development/libraries/hpx {
+    boost = boost17x;
+    asio = asio.override { boost = boost17x; };
+  };
+
+  hspell = callPackage ../development/libraries/hspell { };
+
+  hspellDicts = callPackage ../development/libraries/hspell/dicts.nix { };
+
+  hsqldb = callPackage ../development/libraries/java/hsqldb { };
+
+  hstr = callPackage ../applications/misc/hstr { };
+
+  htmlcxx = callPackage ../development/libraries/htmlcxx { };
+
+  http-parser = callPackage ../development/libraries/http-parser { };
+
+  hubble = callPackage ../applications/networking/cluster/hubble { };
+
+  hunspell = callPackage ../development/libraries/hunspell { };
+
+  hunspellDicts = recurseIntoAttrs (callPackages ../development/libraries/hunspell/dictionaries.nix {});
+
+  hunspellWithDicts = dicts: callPackage ../development/libraries/hunspell/wrapper.nix { inherit dicts; };
+
+  hwloc = callPackage ../development/libraries/hwloc {};
+
+  inherit (callPackage ../development/tools/misc/hydra { })
+    hydra-unstable;
+
+  hydra-cli = callPackage ../development/tools/misc/hydra-cli { };
+
+  hydraAntLogger = callPackage ../development/libraries/java/hydra-ant-logger { };
+
+  hydra-check = with python3.pkgs; toPythonApplication hydra-check;
+
+  hyena = callPackage ../development/libraries/hyena { };
+
+  hyperscan = callPackage ../development/libraries/hyperscan { };
+
+  icu58 = callPackage (import ../development/libraries/icu/58.nix fetchurl) ({
+    nativeBuildRoot = buildPackages.icu58.override { buildRootOnly = true; };
+  } //
+    (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu59 = callPackage ../development/libraries/icu/59.nix ({
+    nativeBuildRoot = buildPackages.icu59.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu60 = callPackage ../development/libraries/icu/60.nix ({
+    nativeBuildRoot = buildPackages.icu60.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu63 = callPackage ../development/libraries/icu/63.nix ({
+    nativeBuildRoot = buildPackages.icu63.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu64 = callPackage ../development/libraries/icu/64.nix ({
+    nativeBuildRoot = buildPackages.icu64.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu65 = callPackage ../development/libraries/icu/65.nix ({
+    nativeBuildRoot = buildPackages.icu65.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu66 = callPackage ../development/libraries/icu/66.nix ({
+    nativeBuildRoot = buildPackages.icu66.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+  }));
+  icu67 = callPackage ../development/libraries/icu/67.nix ({
+    nativeBuildRoot = buildPackages.icu67.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu68 = callPackage ../development/libraries/icu/68.nix ({
+    nativeBuildRoot = buildPackages.icu68.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu69 = callPackage ../development/libraries/icu/69.nix ({
+    nativeBuildRoot = buildPackages.icu69.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+  icu70 = callPackage ../development/libraries/icu/70.nix ({
+    nativeBuildRoot = buildPackages.icu70.override { buildRootOnly = true; };
+  } // (lib.optionalAttrs (stdenv.hostPlatform.isi686 && stdenv.cc.isGNU) {
+      stdenv = gcc6Stdenv; # with gcc-7: undefined reference to `__divmoddi4'
+    }));
+
+  icu = icu70;
+
+  id3lib = callPackage ../development/libraries/id3lib { };
+
+  idasen = with python3Packages; toPythonApplication idasen;
+
+  ilbc = callPackage ../development/libraries/ilbc { };
+
+  ilixi = callPackage ../development/libraries/ilixi { };
+
+  ilmbase = callPackage ../development/libraries/ilmbase { };
+
+  imgui = callPackage ../development/libraries/imgui { };
+
+  imlib = callPackage ../development/libraries/imlib {
+    libpng = libpng12;
+  };
+
+  imv = callPackage ../applications/graphics/imv { };
+
+  iml = callPackage ../development/libraries/iml { };
+
+  imlib2 = callPackage ../development/libraries/imlib2 { };
+  imlib2-nox = imlib2.override {
+    x11Support = false;
+  };
+
+  imlibsetroot = callPackage ../applications/graphics/imlibsetroot { libXinerama = xorg.libXinerama; } ;
+
+  impy = callPackage ../development/libraries/impy { };
+
+  ineffassign = callPackage ../development/tools/ineffassign { };
+
+  ijs = callPackage ../development/libraries/ijs { };
+
+  itktcl  = callPackage ../development/libraries/itktcl { };
+  incrtcl = callPackage ../development/libraries/incrtcl { };
+
+  indicator-application-gtk2 = callPackage ../development/libraries/indicator-application/gtk2.nix { };
+  indicator-application-gtk3 = callPackage ../development/libraries/indicator-application/gtk3.nix { };
+
+  indicator-sound-switcher = callPackage ../applications/audio/indicator-sound-switcher { };
+
+  indilib = callPackage ../development/libraries/science/astronomy/indilib { };
+  indi-full = callPackage ../development/libraries/science/astronomy/indilib/indi-full.nix { };
+
+  inih = callPackage ../development/libraries/inih { };
+
+  iniparser = callPackage ../development/libraries/iniparser { };
+
+  intel-gmmlib = callPackage ../development/libraries/intel-gmmlib { };
+
+  intel-media-driver = callPackage ../development/libraries/intel-media-driver { };
+
+  intltool = callPackage ../development/tools/misc/intltool { };
+
+  ios-cross-compile = callPackage ../development/compilers/ios-cross-compile/9.2.nix {};
+
+  ip2location-c = callPackage ../development/libraries/ip2location-c { };
+
+  irrlicht = if !stdenv.isDarwin then
+    callPackage ../development/libraries/irrlicht { }
+  else callPackage ../development/libraries/irrlicht/mac.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL IOKit;
+  };
+
+  isocodes = callPackage ../development/libraries/iso-codes { };
+
+  iso-flags = callPackage ../data/icons/iso-flags { };
+
+  ispc = callPackage ../development/compilers/ispc {
+    inherit (llvmPackages) stdenv;
+  };
+
+  isso = callPackage ../servers/isso {
+    nodejs = nodejs-14_x;
+  };
+
+  itk4 = callPackage ../development/libraries/itk/4.x.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  itk = callPackage ../development/libraries/itk {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  jama = callPackage ../development/libraries/jama { };
+
+  jansson = callPackage ../development/libraries/jansson { };
+
+  jasper = callPackage ../development/libraries/jasper { };
+
+  jbig2dec = callPackage ../development/libraries/jbig2dec { };
+
+  jcal = callPackage ../development/libraries/jcal { };
+
+  jbigkit = callPackage ../development/libraries/jbigkit { };
+
+  jemalloc = callPackage ../development/libraries/jemalloc {
+    # tests fail with LLVM 11+
+    # https://github.com/jemalloc/jemalloc/issues/2091
+    stdenv = if stdenv.cc.isClang then llvmPackages_10.stdenv else stdenv;
+  };
+
+  jose = callPackage ../development/libraries/jose { };
+
+  jshon = callPackage ../development/tools/parsing/jshon { };
+
+  json2hcl = callPackage ../development/tools/json2hcl { };
+
+  json2yaml = haskell.lib.compose.justStaticExecutables haskellPackages.json2yaml;
+
+  json-glib = callPackage ../development/libraries/json-glib { };
+
+  json_c = callPackage ../development/libraries/json-c { };
+
+  jsoncpp = callPackage ../development/libraries/jsoncpp { };
+
+  jsonnet = callPackage ../development/compilers/jsonnet { };
+
+  jsonnet-bundler = callPackage ../development/tools/jsonnet-bundler { };
+
+  jrsonnet = callPackage ../development/compilers/jrsonnet { };
+
+  go-jsonnet = callPackage ../development/compilers/go-jsonnet { };
+
+  jsonrpc-glib = callPackage ../development/libraries/jsonrpc-glib { };
+
+  jxrlib = callPackage ../development/libraries/jxrlib { };
+
+  libjson = callPackage ../development/libraries/libjson { };
+
+  libb64 = callPackage ../development/libraries/libb64 { };
+
+  judy = callPackage ../development/libraries/judy { };
+
+  kddockwidgets = libsForQt5.callPackage ../development/libraries/kddockwidgets { };
+
+  keybinder = callPackage ../development/libraries/keybinder {
+    automake = automake111x;
+    lua = lua5_1;
+  };
+
+  keybinder3 = callPackage ../development/libraries/keybinder3 {
+    gtk3 = if stdenv.isDarwin then gtk3-x11 else gtk3;
+    automake = automake111x;
+  };
+
+  krb5 = callPackage ../development/libraries/kerberos/krb5.nix {
+    inherit (buildPackages.darwin) bootstrap_cmds;
+  };
+  krb5Full = krb5;
+  libkrb5 = krb5.override { type = "lib"; };
+
+  kronosnet = callPackage ../development/libraries/kronosnet { };
+
+  l-smash = callPackage ../development/libraries/l-smash {
+    stdenv = gccStdenv;
+  };
+
+  languageMachines = recurseIntoAttrs (import ../development/libraries/languagemachines/packages.nix {
+    inherit pkgs;
+  });
+
+  lasem = callPackage ../development/libraries/lasem { };
+
+  lasso = callPackage ../development/libraries/lasso { };
+
+  LAStools = callPackage ../development/libraries/LAStools { };
+
+  LASzip = callPackage ../development/libraries/LASzip { };
+  LASzip2 = callPackage ../development/libraries/LASzip/LASzip2.nix { };
+
+  lcms = lcms1;
+
+  lcms1 = callPackage ../development/libraries/lcms { };
+
+  lcms2 = callPackage ../development/libraries/lcms2 { };
+
+  ldacbt = callPackage ../development/libraries/ldacbt { };
+
+  ldb = callPackage ../development/libraries/ldb { };
+
+  lensfun = callPackage ../development/libraries/lensfun {};
+
+  lesstif = callPackage ../development/libraries/lesstif { };
+
+  leveldb = callPackage ../development/libraries/leveldb { };
+
+  lmdb = callPackage ../development/libraries/lmdb { };
+
+  lmdbxx = callPackage ../development/libraries/lmdbxx { };
+
+  lemon-graph = callPackage ../development/libraries/lemon-graph { };
+
+  levmar = callPackage ../development/libraries/levmar { };
+
+  leptonica = callPackage ../development/libraries/leptonica { };
+
+  lib2geom = callPackage ../development/libraries/lib2geom { };
+
+  lib3ds = callPackage ../development/libraries/lib3ds { };
+
+  lib3mf = callPackage ../development/libraries/lib3mf { };
+
+  libAfterImage = callPackage ../development/libraries/libAfterImage { };
+
+  libaacs = callPackage ../development/libraries/libaacs { };
+
+  libaal = callPackage ../development/libraries/libaal { };
+
+  libabigail = callPackage ../development/libraries/libabigail { };
+
+  libaccounts-glib = callPackage ../development/libraries/libaccounts-glib { };
+
+  libacr38u = callPackage ../tools/security/libacr38u {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  libad9361 = callPackage ../development/libraries/libad9361 { };
+
+  libadwaita = callPackage ../development/libraries/libadwaita { };
+
+  libaec = callPackage ../development/libraries/libaec { };
+
+  libagar = callPackage ../development/libraries/libagar { };
+  libagar_test = callPackage ../development/libraries/libagar/libagar_test.nix { };
+
+  libao = callPackage ../development/libraries/libao {
+    usePulseAudio = config.pulseaudio or stdenv.isLinux;
+    inherit (darwin.apple_sdk.frameworks) CoreAudio CoreServices AudioUnit;
+  };
+
+  libaosd = callPackage ../development/libraries/libaosd { };
+
+  libabw = callPackage ../development/libraries/libabw { };
+
+  libamqpcpp = callPackage ../development/libraries/libamqpcpp { };
+
+  libantlr3c = callPackage ../development/libraries/libantlr3c {};
+
+  libaom = callPackage ../development/libraries/libaom { };
+
+  libappindicator-gtk2 = libappindicator.override { gtkVersion = "2"; };
+  libappindicator-gtk3 = libappindicator.override { gtkVersion = "3"; };
+  libappindicator = callPackage ../development/libraries/libappindicator { };
+
+  libayatana-appindicator-gtk2 = libayatana-appindicator.override { gtkVersion = "2"; };
+  libayatana-appindicator-gtk3 = libayatana-appindicator.override { gtkVersion = "3"; };
+  libayatana-appindicator = callPackage ../development/libraries/libayatana-appindicator { };
+
+  libargs = callPackage ../development/libraries/libargs { };
+
+  libarchive = callPackage ../development/libraries/libarchive {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  libarchive-qt = libsForQt5.callPackage ../development/libraries/libarchive-qt { };
+
+  libasr = callPackage ../development/libraries/libasr { };
+
+  libass = callPackage ../development/libraries/libass { };
+
+  libast = callPackage ../development/libraries/libast { };
+
+  libassuan = callPackage ../development/libraries/libassuan { };
+
+  libasyncns = callPackage ../development/libraries/libasyncns { };
+
+  libatomic_ops = callPackage ../development/libraries/libatomic_ops {};
+
+  libaudclient = callPackage ../development/libraries/libaudclient { };
+
+  libaudec = callPackage ../development/libraries/libaudec { };
+
+  libav = libav_11; # branch 11 is API-compatible with branch 10
+  libav_all = callPackages ../development/libraries/libav { };
+  inherit (libav_all) libav_0_8 libav_11 libav_12;
+
+  libavc1394 = callPackage ../development/libraries/libavc1394 { };
+
+  libavif = callPackage ../development/libraries/libavif { };
+
+  libb2 = callPackage ../development/libraries/libb2 { };
+
+  libbacktrace = callPackage ../development/libraries/libbacktrace { };
+
+  libbap = callPackage ../development/libraries/libbap {
+    inherit (ocaml-ng.ocamlPackages) bap ocaml findlib ctypes;
+  };
+
+  libbaseencode = callPackage ../development/libraries/libbaseencode { };
+
+  libbass = (callPackage ../development/libraries/audio/libbass { }).bass;
+  libbass_fx = (callPackage ../development/libraries/audio/libbass { }).bass_fx;
+
+  libbde = callPackage ../development/libraries/libbde { };
+
+  libbencodetools = callPackage ../development/libraries/libbencodetools { };
+
+  libbluedevil = callPackage ../development/libraries/libbluedevil { };
+
+  libbdplus = callPackage ../development/libraries/libbdplus { };
+
+  libblockdev = callPackage ../development/libraries/libblockdev { };
+
+  libblocksruntime = callPackage ../development/libraries/libblocksruntime { };
+
+  libbluray = callPackage ../development/libraries/libbluray {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration;
+  };
+
+  libbs2b = callPackage ../development/libraries/audio/libbs2b { };
+
+  libbson = callPackage ../development/libraries/libbson { };
+
+  libburn = callPackage ../development/libraries/libburn { };
+
+  libbytesize = callPackage ../development/libraries/libbytesize { };
+
+  libcaca = callPackage ../development/libraries/libcaca {
+    inherit (xorg) libX11 libXext;
+  };
+
+  libcacard = callPackage ../development/libraries/libcacard { };
+
+  libcamera = callPackage ../development/libraries/libcamera { };
+
+  libcanberra = callPackage ../development/libraries/libcanberra {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreServices;
+  };
+  libcanberra-gtk2 = pkgs.libcanberra.override {
+    gtkSupport = "gtk2";
+  };
+  libcanberra-gtk3 = pkgs.libcanberra.override {
+    gtkSupport = "gtk3";
+  };
+
+  libcanberra_kde = if (config.kde_runtime.libcanberraWithoutGTK or true)
+    then pkgs.libcanberra
+    else pkgs.libcanberra-gtk2;
+
+  libcbor = callPackage ../development/libraries/libcbor { };
+
+  libccd = callPackage ../development/libraries/libccd { };
+
+  libcec = callPackage ../development/libraries/libcec {
+    libraspberrypi = null;
+  };
+
+  libcec_platform = callPackage ../development/libraries/libcec/platform.nix { };
+
+  libcef = callPackage ../development/libraries/libcef {};
+
+  libcello = callPackage ../development/libraries/libcello {};
+
+  libcerf = callPackage ../development/libraries/libcerf {};
+
+  libcdada = callPackage ../development/libraries/libcdada { };
+
+  libcdaudio = callPackage ../development/libraries/libcdaudio { };
+
+  libcddb = callPackage ../development/libraries/libcddb { };
+
+  libcdio = callPackage ../development/libraries/libcdio {
+    inherit (darwin.apple_sdk.frameworks) Carbon IOKit;
+  };
+
+  libcdio-paranoia = callPackage ../development/libraries/libcdio-paranoia {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration IOKit;
+  };
+
+  libcdr = callPackage ../development/libraries/libcdr { lcms = lcms2; };
+
+  libchamplain = callPackage ../development/libraries/libchamplain { };
+
+  libchardet = callPackage ../development/libraries/libchardet { };
+
+  libchewing = callPackage ../development/libraries/libchewing { };
+
+  libchipcard = callPackage ../development/libraries/aqbanking/libchipcard.nix { };
+
+  libcrafter = callPackage ../development/libraries/libcrafter { };
+
+  libcrossguid = callPackage ../development/libraries/libcrossguid { };
+
+  libuchardet = callPackage ../development/libraries/libuchardet { };
+
+  libchop = callPackage ../development/libraries/libchop { };
+
+  libcint = callPackage ../development/libraries/libcint { };
+
+  libclc = callPackage ../development/libraries/libclc { };
+
+  libcli = callPackage ../development/libraries/libcli { };
+
+  libclthreads = callPackage ../development/libraries/libclthreads  { };
+
+  libclxclient = callPackage ../development/libraries/libclxclient  { };
+
+  libconfuse = callPackage ../development/libraries/libconfuse { };
+
+  libcangjie = callPackage ../development/libraries/libcangjie { };
+
+  libcollectdclient = callPackage ../development/libraries/libcollectdclient { };
+
+  libcredis = callPackage ../development/libraries/libcredis { };
+
+  libctb = callPackage ../development/libraries/libctb { };
+
+  libctemplate = callPackage ../development/libraries/libctemplate { };
+
+  libcotp = callPackage ../development/libraries/libcotp { };
+
+  libcouchbase = callPackage ../development/libraries/libcouchbase { };
+
+  libcue = callPackage ../development/libraries/libcue { };
+
+  libcutl = callPackage ../development/libraries/libcutl { };
+
+  libdaemon = callPackage ../development/libraries/libdaemon { };
+
+  libdap = callPackage ../development/libraries/libdap { };
+
+  libdatrie = callPackage ../development/libraries/libdatrie { };
+
+  libdazzle = callPackage ../development/libraries/libdazzle { };
+
+  libdbi = callPackage ../development/libraries/libdbi { };
+
+  libdbiDriversBase = libdbiDrivers.override {
+    libmysqlclient = null;
+    sqlite = null;
+  };
+
+  libdbiDrivers = callPackage ../development/libraries/libdbi-drivers { };
+
+  libunity = callPackage ../development/libraries/libunity { };
+
+  libdbusmenu = callPackage ../development/libraries/libdbusmenu { };
+  libdbusmenu-gtk2 = libdbusmenu.override { gtkVersion = "2"; };
+  libdbusmenu-gtk3 = libdbusmenu.override { gtkVersion = "3"; };
+
+  libdbusmenu_qt = callPackage ../development/libraries/libdbusmenu-qt { };
+
+  libdc1394 = callPackage ../development/libraries/libdc1394 {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  libde265 = callPackage ../development/libraries/libde265 {};
+
+  libdeflate = callPackage ../development/libraries/libdeflate { };
+
+  libdeltachat = callPackage ../development/libraries/libdeltachat {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+    inherit (darwin) libiconv;
+  };
+
+  libdevil = callPackage ../development/libraries/libdevil {
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+  };
+
+  libdevil-nox = libdevil.override {
+    libX11 = null;
+    libGL = null;
+  };
+
+  libdecor = callPackage ../development/libraries/libdecor { };
+
+  libdigidoc = callPackage ../development/libraries/libdigidoc {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  libdigidocpp = callPackage ../development/libraries/libdigidocpp { };
+
+  libdiscid = callPackage ../development/libraries/libdiscid { };
+
+  libdivecomputer = callPackage ../development/libraries/libdivecomputer { };
+
+  libdivsufsort = callPackage ../development/libraries/libdivsufsort { };
+
+  libdmtx = callPackage ../development/libraries/libdmtx { };
+
+  libdmapsharing = callPackage ../development/libraries/libdmapsharing { };
+
+  libdnet = callPackage ../development/libraries/libdnet { };
+
+  libdnf = callPackage ../tools/package-management/libdnf { };
+
+  libdrm = callPackage ../development/libraries/libdrm { };
+
+  libdv = callPackage ../development/libraries/libdv { };
+
+  libdvbpsi = callPackage ../development/libraries/libdvbpsi { };
+
+  libdwg = callPackage ../development/libraries/libdwg { };
+
+  libdvdcss = callPackage ../development/libraries/libdvdcss {
+    inherit (darwin) IOKit;
+  };
+
+  libdvdnav = callPackage ../development/libraries/libdvdnav { };
+  libdvdnav_4_2_1 = callPackage ../development/libraries/libdvdnav/4.2.1.nix {
+    libdvdread = libdvdread_4_9_9;
+  };
+
+  libdvdread = callPackage ../development/libraries/libdvdread { };
+  libdvdread_4_9_9 = callPackage ../development/libraries/libdvdread/4.9.9.nix { };
+
+  inherit (callPackage ../development/libraries/libdwarf { })
+    libdwarf dwarfdump;
+
+  libe57format = callPackage ../development/libraries/libe57format { };
+
+  libeatmydata = callPackage ../development/libraries/libeatmydata {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  libeb = callPackage ../development/libraries/libeb { };
+
+  libebml = callPackage ../development/libraries/libebml { };
+
+  libebur128 = callPackage ../development/libraries/libebur128 { };
+
+  libedit = callPackage ../development/libraries/libedit { };
+
+  libelf = if stdenv.isFreeBSD
+  then callPackage ../development/libraries/libelf-freebsd { }
+  else callPackage ../development/libraries/libelf { };
+
+  libelfin = callPackage ../development/libraries/libelfin { };
+
+  libetpan = callPackage ../development/libraries/libetpan { };
+
+  libexecinfo = callPackage ../development/libraries/libexecinfo { };
+
+  libfaketime = callPackage ../development/libraries/libfaketime { };
+
+  libfakekey = callPackage ../development/libraries/libfakekey { };
+
+  libfido2 = callPackage ../development/libraries/libfido2 {
+    udev = systemdMinimal;
+  };
+
+  libfilezilla = callPackage ../development/libraries/libfilezilla {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  libfishsound = callPackage ../development/libraries/libfishsound { };
+
+  libfm = callPackage ../development/libraries/libfm { };
+  libfm-extra = libfm.override {
+    extraOnly = true;
+  };
+
+  libfprint = callPackage ../development/libraries/libfprint { };
+
+  libfprint-tod = callPackage ../development/libraries/libfprint-tod { };
+
+  libfprint-2-tod1-goodix = callPackage ../development/libraries/libfprint-2-tod1-goodix { };
+
+  libfprint-2-tod1-vfs0090 = callPackage ../development/libraries/libfprint-2-tod1-vfs0090 { };
+
+  libfpx = callPackage ../development/libraries/libfpx { };
+
+  libgadu = callPackage ../development/libraries/libgadu { };
+
+  libgbinder = callPackage ../development/libraries/libgbinder { };
+
+  libgda = callPackage ../development/libraries/libgda { };
+
+  libgda6 = callPackage ../development/libraries/libgda/6.x.nix { };
+
+  libgdamm = callPackage ../development/libraries/libgdamm { };
+
+  libgdata = callPackage ../development/libraries/libgdata { };
+
+  libgee = callPackage ../development/libraries/libgee { };
+
+  libgepub = callPackage ../development/libraries/libgepub { };
+
+  libgig = callPackage ../development/libraries/libgig { };
+
+  libglibutil = callPackage ../development/libraries/libglibutil { };
+
+  libgnome-keyring = callPackage ../development/libraries/libgnome-keyring { };
+  libgnome-keyring3 = gnome.libgnome-keyring;
+
+  libgnome-games-support = callPackage ../development/libraries/libgnome-games-support { };
+
+  libgnomekbd = callPackage ../development/libraries/libgnomekbd { };
+
+  libglvnd = callPackage ../development/libraries/libglvnd { };
+
+  libgnurl = callPackage ../development/libraries/libgnurl { };
+
+  libgringotts = callPackage ../development/libraries/libgringotts { };
+
+  libgrss = callPackage ../development/libraries/libgrss { };
+
+  libgweather = callPackage ../development/libraries/libgweather { };
+
+  libgxps = callPackage ../development/libraries/libgxps { };
+
+  libiio = callPackage ../development/libraries/libiio {
+    python = python3;
+  };
+
+  libinjection = callPackage ../development/libraries/libinjection { };
+
+  libinklevel = callPackage ../development/libraries/libinklevel { };
+
+  libnats-c = callPackage ../development/libraries/libnats-c { };
+
+  liburing = callPackage ../development/libraries/liburing { };
+
+  librseq = callPackage ../development/libraries/librseq { };
+
+  libseccomp = callPackage ../development/libraries/libseccomp { };
+
+  libsecret = callPackage ../development/libraries/libsecret { };
+
+  libserdes = callPackage ../development/libraries/libserdes { };
+
+  libserialport = callPackage ../development/libraries/libserialport { };
+
+  libsignal-protocol-c = callPackage ../development/libraries/libsignal-protocol-c { };
+
+  libsignon-glib = callPackage ../development/libraries/libsignon-glib { };
+
+  libsoundio = callPackage ../development/libraries/libsoundio {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit;
+  };
+
+  libsystemtap = callPackage ../development/libraries/libsystemtap { };
+
+  libgtop = callPackage ../development/libraries/libgtop {};
+
+  libLAS = callPackage ../development/libraries/libLAS {
+    boost = boost172;
+  };
+
+  liblaxjson = callPackage ../development/libraries/liblaxjson { };
+
+  liblo = callPackage ../development/libraries/liblo { };
+
+  liblscp = callPackage ../development/libraries/liblscp { };
+
+  libe-book = callPackage ../development/libraries/libe-book {
+    icu = icu67;
+  };
+
+  libechonest = callPackage ../development/libraries/libechonest { };
+
+  libemf2svg = callPackage ../development/libraries/libemf2svg { };
+
+  libev = callPackage ../development/libraries/libev { };
+
+  libevent = callPackage ../development/libraries/libevent { };
+
+  libewf = callPackage ../development/libraries/libewf { };
+
+  libexif = callPackage ../development/libraries/libexif { };
+
+  libexosip = callPackage ../development/libraries/exosip {};
+
+  libexsid = callPackage ../development/libraries/libexsid { };
+
+  libextractor = callPackage ../development/libraries/libextractor {
+    libmpeg2 = mpeg2dec;
+  };
+
+  libexttextcat = callPackage ../development/libraries/libexttextcat {};
+
+  libf2c = callPackage ../development/libraries/libf2c {};
+
+  libfabric = callPackage ../development/libraries/libfabric {};
+
+  libfive = libsForQt5.callPackage ../development/libraries/libfive { };
+
+  libfixposix = callPackage ../development/libraries/libfixposix {};
+
+  libff = callPackage ../development/libraries/libff { };
+
+  libffcall = callPackage ../development/libraries/libffcall { };
+
+  libffi = callPackage ../development/libraries/libffi { };
+  libffiBoot = libffi.override {
+    doCheck = false;
+  };
+
+  libfreeaptx = callPackage ../development/libraries/libfreeaptx { };
+
+  libfreefare = callPackage ../development/libraries/libfreefare {
+    inherit (darwin) libobjc;
+  };
+
+  libftdi = callPackage ../development/libraries/libftdi { };
+
+  libftdi1 = callPackage ../development/libraries/libftdi/1.x.nix { };
+
+  libfyaml = callPackage ../development/libraries/libfyaml { };
+
+  libgcrypt = callPackage ../development/libraries/libgcrypt { };
+
+  libgcrypt_1_5 = callPackage ../development/libraries/libgcrypt/1.5.nix { };
+
+  libgdiplus = callPackage ../development/libraries/libgdiplus {
+      inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  libgnt = callPackage ../development/libraries/libgnt { };
+
+  libgpg-error = callPackage ../development/libraries/libgpg-error { };
+
+  # https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=blob;f=README;h=fd6e1a83f55696c1f7a08f6dfca08b2d6b7617ec;hb=70058cd9f944d620764e57c838209afae8a58c78#l118
+  libgpg-error-gen-posix-lock-obj = libgpg-error.override {
+    genPosixLockObjOnly = true;
+  };
+
+  libgphoto2 = callPackage ../development/libraries/libgphoto2 { };
+
+  libgpiod = callPackage ../development/libraries/libgpiod { };
+
+  libgpod = callPackage ../development/libraries/libgpod {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  libgssglue = callPackage ../development/libraries/libgssglue { };
+
+  libgudev = callPackage ../development/libraries/libgudev { };
+
+  libguestfs-appliance = callPackage ../development/libraries/libguestfs/appliance.nix {};
+  libguestfs = callPackage ../development/libraries/libguestfs {
+    autoreconfHook = buildPackages.autoreconfHook264;
+  };
+  libguestfs-with-appliance = libguestfs.override {
+    appliance = libguestfs-appliance;
+    autoreconfHook = buildPackages.autoreconfHook264;
+  };
+
+
+  libhangul = callPackage ../development/libraries/libhangul { };
+
+  libharu = callPackage ../development/libraries/libharu { };
+
+  libhdhomerun = callPackage ../development/libraries/libhdhomerun { };
+
+  libheif = callPackage ../development/libraries/libheif {};
+
+  libhttpseverywhere = callPackage ../development/libraries/libhttpseverywhere { };
+
+  libhugetlbfs = callPackage ../development/libraries/libhugetlbfs { };
+
+  libhwy = callPackage ../development/libraries/libhwy { };
+
+  libHX = callPackage ../development/libraries/libHX { };
+
+  libibmad = callPackage ../development/libraries/libibmad { };
+
+  libibumad = callPackage ../development/libraries/libibumad { };
+
+  libical = callPackage ../development/libraries/libical { };
+
+  libicns = callPackage ../development/libraries/libicns { };
+
+  libieee1284 = callPackage ../development/libraries/libieee1284 { };
+
+  libimobiledevice = callPackage ../development/libraries/libimobiledevice { };
+
+  libindicator-gtk2 = libindicator.override { gtkVersion = "2"; };
+  libindicator-gtk3 = libindicator.override { gtkVersion = "3"; };
+  libindicator = callPackage ../development/libraries/libindicator { };
+
+  libayatana-indicator-gtk2 = libayatana-indicator.override { gtkVersion = "2"; };
+  libayatana-indicator-gtk3 = libayatana-indicator.override { gtkVersion = "3"; };
+  libayatana-indicator = callPackage ../development/libraries/libayatana-indicator { };
+
+  libinotify-kqueue = callPackage ../development/libraries/libinotify-kqueue { };
+
+  libiodbc = callPackage ../development/libraries/libiodbc {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  libirecovery = callPackage ../development/libraries/libirecovery { };
+
+  libivykis = callPackage ../development/libraries/libivykis { };
+
+  liblastfmSF = callPackage ../development/libraries/liblastfmSF { };
+
+  liblcf = callPackage ../development/libraries/liblcf { };
+
+  libliftoff = callPackage ../development/libraries/libliftoff { };
+
+  liblqr1 = callPackage ../development/libraries/liblqr-1 {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  liblockfile = callPackage ../development/libraries/liblockfile { };
+
+  liblogging = callPackage ../development/libraries/liblogging { };
+
+  liblognorm = callPackage ../development/libraries/liblognorm { };
+
+  libltc = callPackage ../development/libraries/libltc { };
+
+  liblxi = callPackage ../development/libraries/liblxi { };
+
+  libmaxminddb = callPackage ../development/libraries/libmaxminddb { };
+
+  libmcrypt = callPackage ../development/libraries/libmcrypt {};
+
+  libmediaart = callPackage ../development/libraries/libmediaart { };
+
+  libmediainfo = callPackage ../development/libraries/libmediainfo { };
+
+  libmhash = callPackage ../development/libraries/libmhash {};
+
+  libmodbus = callPackage ../development/libraries/libmodbus {};
+
+  libmtp = callPackage ../development/libraries/libmtp { };
+
+  libmypaint = callPackage ../development/libraries/libmypaint { };
+
+  libmysofa = callPackage ../development/libraries/audio/libmysofa { };
+
+  libmysqlconnectorcpp = callPackage ../development/libraries/libmysqlconnectorcpp { };
+
+  libnatpmp = callPackage ../development/libraries/libnatpmp { };
+
+  libnatspec = callPackage ../development/libraries/libnatspec { };
+
+  libndp = callPackage ../development/libraries/libndp { };
+
+  libnfc = callPackage ../development/libraries/libnfc { };
+
+  libnfs = callPackage ../development/libraries/libnfs { };
+
+  libnice = callPackage ../development/libraries/libnice { };
+
+  libnsl = callPackage ../development/libraries/libnsl { };
+
+  liboping = callPackage ../development/libraries/liboping { };
+
+  libplist = callPackage ../development/libraries/libplist { };
+
+  libre = callPackage ../development/libraries/libre {};
+
+  libredwg = callPackage ../development/libraries/libredwg {};
+
+  librem = callPackage ../development/libraries/librem {};
+
+  librelp = callPackage ../development/libraries/librelp { };
+
+  librepo = callPackage ../tools/package-management/librepo {
+    python = python3;
+  };
+
+  libresample = callPackage ../development/libraries/libresample {};
+
+  librevenge = callPackage ../development/libraries/librevenge {};
+
+  librevisa = callPackage ../development/libraries/librevisa { };
+
+  librime = callPackage ../development/libraries/librime {
+    boost = boost174;
+  };
+
+  librsb = callPackage ../development/libraries/librsb {
+    # Taken from https://build.opensuse.org/package/view_file/science/librsb/librsb.spec
+    memHierarchy = "L3:16/64/8192K,L2:16/64/2048K,L1:8/64/16K";
+  };
+
+  librtprocess = callPackage ../development/libraries/librtprocess { };
+
+  libsamplerate = callPackage ../development/libraries/libsamplerate {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon CoreServices;
+  };
+
+  libsieve = callPackage ../development/libraries/libsieve { };
+
+  libsixel = callPackage ../development/libraries/libsixel { };
+
+  libsolv = callPackage ../development/libraries/libsolv { };
+
+  libspectre = callPackage ../development/libraries/libspectre { };
+
+  libspnav = callPackage ../development/libraries/libspnav { };
+
+  libgsf = callPackage ../development/libraries/libgsf { };
+
+  # GNU libc provides libiconv so systems with glibc don't need to build
+  # libiconv separately. Additionally, Apple forked/repackaged libiconv so we
+  # use that instead of the vanilla version on that OS.
+  #
+  # We also provide `libiconvReal`, which will always be a standalone libiconv,
+  # just in case you want it regardless of platform.
+  libiconv =
+    if lib.elem stdenv.hostPlatform.libc ["glibc" "musl" "wasilibc"]
+      then glibcIconv (if stdenv.hostPlatform != stdenv.buildPlatform
+        then libcCross
+        else stdenv.cc.libc)
+    else if stdenv.hostPlatform.isDarwin
+      then darwin.libiconv
+    else libiconvReal;
+
+  glibcIconv = libc: let
+    inherit (libc) pname version;
+    libcDev = lib.getDev libc;
+  in runCommand "${pname}-iconv-${version}" {} ''
+    mkdir -p $out/include
+    ln -sv ${libcDev}/include/iconv.h $out/include
+  '';
+
+  libiconvReal = callPackage ../development/libraries/libiconv { };
+
+  # On non-GNU systems we need GNU Gettext for libintl.
+  libintl = if stdenv.hostPlatform.libc != "glibc" then gettext else null;
+
+  libid3tag = callPackage ../development/libraries/libid3tag {
+    gperf = gperf_3_0;
+  };
+
+  libidn = callPackage ../development/libraries/libidn { };
+
+  libidn2 = callPackage ../development/libraries/libidn2 { };
+
+  idnkit = callPackage ../development/libraries/idnkit { };
+
+  libiec61883 = callPackage ../development/libraries/libiec61883 { };
+
+  libimagequant = callPackage ../development/libraries/libimagequant {};
+
+  libime = callPackage ../development/libraries/libime { };
+
+  libinfinity = callPackage ../development/libraries/libinfinity { };
+
+  libinput = callPackage ../development/libraries/libinput {
+    graphviz = graphviz-nox;
+  };
+
+  libinput-gestures = callPackage ../tools/inputmethods/libinput-gestures {};
+
+  libinstpatch = callPackage ../development/libraries/audio/libinstpatch { };
+
+  libisofs = callPackage ../development/libraries/libisofs { };
+
+  libisoburn = callPackage ../development/libraries/libisoburn { };
+
+  libipt = callPackage ../development/libraries/libipt { };
+
+  libiptcdata = callPackage ../development/libraries/libiptcdata { };
+
+  libjcat = callPackage ../development/libraries/libjcat { };
+
+  libjpeg_original = callPackage ../development/libraries/libjpeg { };
+  # also known as libturbojpeg
+  libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { };
+  libjpeg = libjpeg_turbo;
+
+  libjreen = callPackage ../development/libraries/libjreen { };
+
+  libjson-rpc-cpp = callPackage ../development/libraries/libjson-rpc-cpp {
+    libmicrohttpd = libmicrohttpd_0_9_72;
+  };
+
+  libjwt = callPackage ../development/libraries/libjwt { };
+
+  libjxl = callPackage ../development/libraries/libjxl { };
+
+  libkate = callPackage ../development/libraries/libkate { };
+
+  libkeyfinder = callPackage ../development/libraries/audio/libkeyfinder { };
+
+  libks = callPackage ../development/libraries/libks { };
+
+  libksba = callPackage ../development/libraries/libksba { };
+
+  libksi = callPackage ../development/libraries/libksi { };
+
+  liblinear = callPackage ../development/libraries/liblinear { };
+
+  libmad = callPackage ../development/libraries/libmad { };
+
+  llama = callPackage ../applications/misc/llama { };
+
+  malcontent = callPackage ../development/libraries/malcontent { };
+
+  malcontent-ui = callPackage ../development/libraries/malcontent/ui.nix { };
+
+  libmanette = callPackage ../development/libraries/libmanette { };
+
+  libmatchbox = callPackage ../development/libraries/libmatchbox { };
+
+  libmatheval = callPackage ../development/libraries/libmatheval {
+    autoconf = buildPackages.autoconf269;
+    guile = guile_2_0;
+  };
+
+  libmatthew_java = callPackage ../development/libraries/java/libmatthew-java {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  libmatroska = callPackage ../development/libraries/libmatroska { };
+
+  libmd = callPackage ../development/libraries/libmd { };
+
+  libmemcached = callPackage ../development/libraries/libmemcached { };
+
+  libmicrohttpd_0_9_70 = callPackage ../development/libraries/libmicrohttpd/0.9.70.nix { };
+  libmicrohttpd_0_9_71 = callPackage ../development/libraries/libmicrohttpd/0.9.71.nix { };
+  libmicrohttpd_0_9_72 = callPackage ../development/libraries/libmicrohttpd/0.9.72.nix { };
+  libmicrohttpd = libmicrohttpd_0_9_71;
+
+  libmikmod = callPackage ../development/libraries/libmikmod {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio;
+  };
+
+  libmilter = callPackage ../development/libraries/libmilter { };
+
+  libminc = callPackage ../development/libraries/libminc {
+    hdf5 = hdf5_1_10;
+  };
+
+  libmirage = callPackage ../applications/emulators/cdemu/libmirage.nix { };
+
+  libmkv = callPackage ../development/libraries/libmkv { };
+
+  libmms = callPackage ../development/libraries/libmms { };
+
+  libmowgli = callPackage ../development/libraries/libmowgli { };
+
+  libmng = callPackage ../development/libraries/libmng { };
+
+  libmnl = callPackage ../development/libraries/libmnl { };
+
+  libmodplug = callPackage ../development/libraries/libmodplug {};
+
+  libmodule = callPackage ../development/libraries/libmodule { };
+
+  libmpcdec = callPackage ../development/libraries/libmpcdec { };
+
+  libmp3splt = callPackage ../development/libraries/libmp3splt { };
+
+  libmrss = callPackage ../development/libraries/libmrss { };
+
+  libmspack = callPackage ../development/libraries/libmspack { };
+
+  libmusicbrainz3 = callPackage ../development/libraries/libmusicbrainz { };
+
+  libmusicbrainz5 = callPackage ../development/libraries/libmusicbrainz/5.x.nix { };
+
+  libmusicbrainz = libmusicbrainz3;
+
+  libmwaw = callPackage ../development/libraries/libmwaw { };
+
+  libmx = callPackage ../development/libraries/libmx { };
+
+  libndctl = callPackage ../development/libraries/libndctl { };
+
+  libnest2d = callPackage ../development/libraries/libnest2d {
+    boost = boost174;
+  };
+
+  libnet = callPackage ../development/libraries/libnet { };
+
+  libnetfilter_acct = callPackage ../development/libraries/libnetfilter_acct { };
+
+  libnetfilter_conntrack = callPackage ../development/libraries/libnetfilter_conntrack { };
+
+  libnetfilter_cthelper = callPackage ../development/libraries/libnetfilter_cthelper { };
+
+  libnetfilter_cttimeout = callPackage ../development/libraries/libnetfilter_cttimeout { };
+
+  libnetfilter_log = callPackage ../development/libraries/libnetfilter_log { };
+
+  libnetfilter_queue = callPackage ../development/libraries/libnetfilter_queue { };
+
+  libnfnetlink = callPackage ../development/libraries/libnfnetlink { };
+
+  libnftnl = callPackage ../development/libraries/libnftnl { };
+
+  libnih = callPackage ../development/libraries/libnih { };
+
+  libnova = callPackage ../development/libraries/science/astronomy/libnova { };
+
+  libnxml = callPackage ../development/libraries/libnxml { };
+
+  libodfgen = callPackage ../development/libraries/libodfgen { };
+
+  libofa = callPackage ../development/libraries/libofa { };
+
+  libofx = callPackage ../development/libraries/libofx { };
+
+  libogg = callPackage ../development/libraries/libogg { };
+
+  liboggz = callPackage ../development/libraries/liboggz { };
+
+  liboil = callPackage ../development/libraries/liboil { };
+
+  libomxil-bellagio = callPackage ../development/libraries/libomxil-bellagio { };
+
+  liboop = callPackage ../development/libraries/liboop { };
+
+  libopenaptx = callPackage ../development/libraries/libopenaptx { };
+
+  libopenglrecorder = callPackage ../development/libraries/libopenglrecorder { };
+
+  libopus = callPackage ../development/libraries/libopus { };
+
+  libopusenc = callPackage ../development/libraries/libopusenc { };
+
+  libosinfo = callPackage ../development/libraries/libosinfo {
+    inherit (gnome) libsoup;
+  };
+
+  libosip = callPackage ../development/libraries/osip {};
+
+  libosmium = callPackage ../development/libraries/libosmium { };
+
+  libosmocore = callPackage ../applications/misc/libosmocore { };
+
+  libosmscout = libsForQt5.callPackage ../development/libraries/libosmscout { };
+
+  libotr = callPackage ../development/libraries/libotr { };
+
+  libow = callPackage ../development/libraries/libow { };
+
+  libp11 = callPackage ../development/libraries/libp11 { };
+
+  libpam-wrapper = callPackage ../development/libraries/libpam-wrapper { };
+
+  libpar2 = callPackage ../development/libraries/libpar2 { };
+
+  libpcap = callPackage ../development/libraries/libpcap { };
+
+  libpeas = callPackage ../development/libraries/libpeas { };
+
+  libpg_query = callPackage ../development/libraries/libpg_query { };
+
+  libpipeline = callPackage ../development/libraries/libpipeline { };
+
+  libpgf = callPackage ../development/libraries/libpgf { };
+
+  libphonenumber = callPackage ../development/libraries/libphonenumber {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  libplacebo = callPackage ../development/libraries/libplacebo { };
+
+  libpng = callPackage ../development/libraries/libpng { };
+  libpng_apng = libpng.override { apngSupport = true; };
+  libpng12 = callPackage ../development/libraries/libpng/12.nix { };
+
+  libpostal = callPackage ../development/libraries/libpostal { };
+
+  libpaper = callPackage ../development/libraries/libpaper { };
+
+  libpfm = callPackage ../development/libraries/libpfm { };
+
+  libpqxx = callPackage ../development/libraries/libpqxx { };
+  libpqxx_6 = callPackage ../development/libraries/libpqxx/6.nix { };
+
+  inherit (callPackages ../development/libraries/prometheus-client-c {
+    stdenv = gccStdenv; # Required for darwin
+  }) libprom libpromhttp;
+
+  libproxy = callPackage ../development/libraries/libproxy {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration CoreFoundation JavaScriptCore;
+  };
+
+  libpseudo = callPackage ../development/libraries/libpseudo { };
+
+  libpsl = callPackage ../development/libraries/libpsl { };
+
+  libpst = callPackage ../development/libraries/libpst { };
+
+  libptytty = callPackage ../development/libraries/libptytty { };
+
+  libpulsar = callPackage ../development/libraries/libpulsar { };
+
+  libpwquality = callPackage ../development/libraries/libpwquality { };
+
+  libqalculate = callPackage ../development/libraries/libqalculate {
+    readline = readline81;
+  };
+
+  libqt5pas = libsForQt5.callPackage ../development/compilers/fpc/libqt5pas.nix { };
+
+  libroxml = callPackage ../development/libraries/libroxml { };
+
+  librsvg = callPackage ../development/libraries/librsvg {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Foundation;
+  };
+
+  librsync = callPackage ../development/libraries/librsync { };
+
+  librttopo = callPackage ../development/libraries/librttopo { };
+
+  libs3 = callPackage ../development/libraries/libs3 { };
+
+  libschrift = callPackage ../development/libraries/libschrift { };
+
+  libsciter = callPackage ../development/libraries/libsciter { };
+
+  libsearpc = callPackage ../development/libraries/libsearpc { };
+
+  libsigcxx = callPackage ../development/libraries/libsigcxx { };
+
+  libsigcxx12 = callPackage ../development/libraries/libsigcxx/1.2.nix { };
+
+  libsigcxx30 = callPackage ../development/libraries/libsigcxx/3.0.nix { };
+
+  libsigsegv = callPackage ../development/libraries/libsigsegv { };
+
+  libslirp = callPackage ../development/libraries/libslirp { };
+
+  libsndfile = callPackage ../development/libraries/libsndfile {
+    inherit (darwin.apple_sdk.frameworks) Carbon AudioToolbox;
+  };
+
+  libsnark = callPackage ../development/libraries/libsnark { };
+
+  libsodium = callPackage ../development/libraries/libsodium { };
+
+  libsoup = callPackage ../development/libraries/libsoup { };
+
+  libsoup_3 = callPackage ../development/libraries/libsoup/3.x.nix { };
+
+  libspectrum = callPackage ../development/libraries/libspectrum { };
+
+  libspiro = callPackage ../development/libraries/libspiro {};
+
+  libspng = callPackage ../development/libraries/libspng { };
+
+  libssh = callPackage ../development/libraries/libssh { };
+
+  libssh2 = callPackage ../development/libraries/libssh2 { };
+  #FIXME: temporary attribute
+  libssh2_1_10 = callPackage ../development/libraries/libssh2/1_10.nix { };
+
+  libstartup_notification = callPackage ../development/libraries/startup-notification { };
+
+  libstemmer = callPackage ../development/libraries/libstemmer { };
+
+  libstroke = callPackage ../development/libraries/libstroke { };
+
+  libstrophe = callPackage ../development/libraries/libstrophe { };
+
+  libspatialaudio = callPackage ../development/libraries/libspatialaudio { };
+
+  libspatialindex = callPackage ../development/libraries/libspatialindex { };
+
+  libspatialite = callPackage ../development/libraries/libspatialite { };
+
+  libstatgrab = callPackage ../development/libraries/libstatgrab {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  libsvm = callPackage ../development/libraries/libsvm { };
+
+  libtar = callPackage ../development/libraries/libtar { };
+
+  libtasn1 = callPackage ../development/libraries/libtasn1 { };
+
+  libtcod = callPackage ../development/libraries/libtcod { };
+
+  libthai = callPackage ../development/libraries/libthai { };
+
+  libtheora = callPackage ../development/libraries/libtheora { };
+
+  libthreadar = callPackage ../development/libraries/libthreadar { };
+
+  libticables2 = callPackage ../development/libraries/libticables2 { };
+
+  libticalcs2 = callPackage ../development/libraries/libticalcs2 {
+    inherit (darwin) libobjc;
+  };
+
+  libticonv = callPackage ../development/libraries/libticonv { };
+
+  libtifiles2 = callPackage ../development/libraries/libtifiles2 { };
+
+  libtiff = if stdenv.isDarwin && stdenv.isAarch64
+    then callPackage ../development/libraries/libtiff/aarch64-darwin.nix { }
+    else callPackage ../development/libraries/libtiff { };
+
+  libtiger = callPackage ../development/libraries/libtiger { };
+
+  libtommath = callPackage ../development/libraries/libtommath { };
+
+  libtomcrypt = callPackage ../development/libraries/libtomcrypt { };
+
+  libtorrent-rasterbar-2_0_x = callPackage ../development/libraries/libtorrent-rasterbar {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+    python = python3;
+  };
+
+  libtorrent-rasterbar-1_2_x = callPackage ../development/libraries/libtorrent-rasterbar/1.2.nix {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+    python = python2;
+  };
+
+  libtorrent-rasterbar-1_1_x = callPackage ../development/libraries/libtorrent-rasterbar/1.1.nix {
+    python = python2;
+  };
+
+  libtorrent-rasterbar = libtorrent-rasterbar-2_0_x;
+
+  # this is still the new version of the old API
+  libtoxcore-new = callPackage ../development/libraries/libtoxcore/new-api.nix { };
+
+  inherit (callPackages ../development/libraries/libtoxcore {})
+    libtoxcore_0_1 libtoxcore_0_2;
+  libtoxcore = libtoxcore_0_2;
+
+  libtpms = callPackage ../tools/security/libtpms { };
+
+  libtap = callPackage ../development/libraries/libtap { };
+
+  libtsm = callPackage ../development/libraries/libtsm { };
+
+  libgeotiff = callPackage ../development/libraries/libgeotiff { };
+
+  libu2f-host = callPackage ../development/libraries/libu2f-host { };
+
+  libu2f-server = callPackage ../development/libraries/libu2f-server { };
+
+  libubox = callPackage ../development/libraries/libubox { };
+
+  libudev-zero = callPackage ../development/libraries/libudev-zero { };
+
+  libudfread = callPackage ../development/libraries/libudfread { };
+
+  libuecc = callPackage ../development/libraries/libuecc { };
+
+  libui = callPackage ../development/libraries/libui {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  libuinputplus = callPackage ../development/libraries/libuinputplus { };
+
+  libunistring = callPackage ../development/libraries/libunistring { };
+
+  libupnp = callPackage ../development/libraries/pupnp { };
+
+  libwhereami = callPackage ../development/libraries/libwhereami { };
+
+  giflib     = callPackage ../development/libraries/giflib { };
+
+  libunarr = callPackage ../development/libraries/libunarr { };
+
+  libunibreak = callPackage ../development/libraries/libunibreak { };
+
+  libuninameslist = callPackage ../development/libraries/libuninameslist { };
+
+  libunique = callPackage ../development/libraries/libunique { };
+  libunique3 = callPackage ../development/libraries/libunique/3.x.nix { };
+
+  liburcu = callPackage ../development/libraries/liburcu { };
+
+  libjaylink = callPackage ../development/libraries/libjaylink { };
+
+  libusb-compat-0_1 = callPackage ../development/libraries/libusb-compat/0.1.nix {};
+
+  libusb1 = callPackage ../development/libraries/libusb1 {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+    # TODO: remove once `udev` is `systemdMinimal` everywhere.
+    udev = systemdMinimal;
+  };
+
+  libusbgx = callPackage ../development/libraries/libusbgx { };
+
+  libusbmuxd = callPackage ../development/libraries/libusbmuxd { };
+
+  libutempter = callPackage ../development/libraries/libutempter { };
+
+  libuldaq = callPackage ../development/libraries/libuldaq { };
+
+  libunwind =
+    if stdenv.isDarwin then darwin.libunwind
+    else if stdenv.hostPlatform.system == "riscv32-linux" then llvmPackages_latest.libunwind
+    else callPackage ../development/libraries/libunwind { };
+
+  libuv = callPackage ../development/libraries/libuv {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
+  };
+
+  libuvc = callPackage ../development/libraries/libuvc { };
+
+  libv4l = lowPrio (v4l-utils.override {
+    withUtils = false;
+  });
+
+  libva = callPackage ../development/libraries/libva { };
+  libva-minimal = libva.override { minimal = true; };
+  libva-utils = callPackage ../development/libraries/libva/utils.nix { };
+
+  libva1 = callPackage ../development/libraries/libva/1.0.0.nix { };
+  libva1-minimal = libva1.override { minimal = true; };
+
+  libvarlink = callPackage ../development/libraries/libvarlink { };
+
+  libvdpau = callPackage ../development/libraries/libvdpau { };
+
+  libmodulemd = callPackage ../development/libraries/libmodulemd { };
+
+  libvdpau-va-gl = callPackage ../development/libraries/libvdpau-va-gl { };
+
+  libversion = callPackage ../development/libraries/libversion { };
+
+  libvirt = callPackage ../development/libraries/libvirt {
+    inherit (darwin.apple_sdk.frameworks) Carbon AppKit;
+  };
+
+  libvirt-glib = callPackage ../development/libraries/libvirt-glib { };
+
+  libvisio = callPackage ../development/libraries/libvisio { };
+
+  libvisio2svg = callPackage ../development/libraries/libvisio2svg { };
+
+  libvisual = callPackage ../development/libraries/libvisual { };
+
+  libvmaf = callPackage ../development/libraries/libvmaf { };
+
+  libvncserver = callPackage ../development/libraries/libvncserver {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  libviper = callPackage ../development/libraries/libviper { };
+
+  libvpx = callPackage ../development/libraries/libvpx { };
+  libvpx_1_8 = callPackage ../development/libraries/libvpx/1_8.nix { };
+
+  libvterm = callPackage ../development/libraries/libvterm { };
+  libvterm-neovim = callPackage ../development/libraries/libvterm-neovim { };
+
+  libvorbis = callPackage ../development/libraries/libvorbis { };
+
+  libvori = callPackage ../development/libraries/libvori { };
+
+  libwbxml = callPackage ../development/libraries/libwbxml { };
+
+  libwebcam = callPackage ../os-specific/linux/libwebcam { };
+
+  libwebp = callPackage ../development/libraries/libwebp { };
+
+  libwmf = callPackage ../development/libraries/libwmf { };
+
+  libwnck = callPackage ../development/libraries/libwnck { };
+  libwnck2 = callPackage ../development/libraries/libwnck/2.nix { };
+
+  libwpd = callPackage ../development/libraries/libwpd { };
+
+  libwpd_08 = callPackage ../development/libraries/libwpd/0.8.nix { };
+
+  libwps = callPackage ../development/libraries/libwps { };
+
+  libwpg = callPackage ../development/libraries/libwpg { };
+
+  libx86 = callPackage ../development/libraries/libx86 {};
+
+  libxcrypt = callPackage ../development/libraries/libxcrypt { };
+
+  libxdg_basedir = callPackage ../development/libraries/libxdg-basedir { };
+
+  libxkbcommon = libxkbcommon_8;
+  libxkbcommon_8 = callPackage ../development/libraries/libxkbcommon { };
+  libxkbcommon_7 = callPackage ../development/libraries/libxkbcommon/libxkbcommon_7.nix { };
+
+  libxklavier = callPackage ../development/libraries/libxklavier { };
+
+  libxls = callPackage ../development/libraries/libxls { };
+
+  libxlsxwriter = callPackage ../development/libraries/libxlsxwriter { };
+
+  libxmi = callPackage ../development/libraries/libxmi { };
+
+  libxml2 = callPackage ../development/libraries/libxml2 {
+    python = python3;
+    inherit (darwin) libiconv;
+  };
+
+  libxml2Python = let
+    libxml2 = python2Packages.libxml2;
+  in pkgs.buildEnv { # slightly hacky
+    name = "libxml2+py-${res.libxml2.version}";
+    paths = with libxml2; [ dev bin py ];
+    inherit (libxml2) passthru;
+    # the hook to find catalogs is hidden by buildEnv
+    postBuild = ''
+      mkdir "$out/nix-support"
+      cp '${libxml2.dev}/nix-support/propagated-build-inputs' "$out/nix-support/"
+    '';
+  };
+
+  libxmlb = callPackage ../development/libraries/libxmlb { };
+
+  libxmlxx = callPackage ../development/libraries/libxmlxx { };
+  libxmlxx3 = callPackage ../development/libraries/libxmlxx/v3.nix { };
+
+  libxmp = callPackage ../development/libraries/libxmp { };
+
+  libxslt = callPackage ../development/libraries/libxslt {
+    python = python3;
+  };
+
+  libxsmm = callPackage ../development/libraries/libxsmm { };
+
+  libixp_hg = callPackage ../development/libraries/libixp-hg { };
+
+  libwpe = callPackage ../development/libraries/libwpe { };
+
+  libwpe-fdo = callPackage ../development/libraries/libwpe/fdo.nix { };
+
+  libyaml = callPackage ../development/libraries/libyaml { };
+
+  libyamlcpp = callPackage ../development/libraries/libyaml-cpp { };
+
+  libyamlcpp_0_3 = callPackage ../development/libraries/libyaml-cpp/0.3.0.nix { };
+
+  libyang = callPackage ../development/libraries/libyang { };
+
+  libcyaml = callPackage ../development/libraries/libcyaml { };
+
+  rang = callPackage ../development/libraries/rang { };
+
+  libykclient = callPackage ../development/libraries/libykclient { };
+
+  libykneomgr = callPackage ../development/libraries/libykneomgr { };
+
+  libytnef = callPackage ../development/libraries/libytnef { };
+
+  libyubikey = callPackage ../development/libraries/libyubikey { };
+
+  libyuv = callPackage ../development/libraries/libyuv { };
+
+  libzapojit = callPackage ../development/libraries/libzapojit { };
+
+  libzen = callPackage ../development/libraries/libzen { };
+
+  libzip = callPackage ../development/libraries/libzip { };
+
+  libzdb = callPackage ../development/libraries/libzdb { };
+
+  libwacom = callPackage ../development/libraries/libwacom { };
+
+  lightning = callPackage ../development/libraries/lightning { };
+
+  lightlocker = callPackage ../misc/screensavers/light-locker { };
+
+  lightspark = callPackage ../misc/lightspark { };
+
+  lightstep-tracer-cpp = callPackage ../development/libraries/lightstep-tracer-cpp { };
+
+  ligolo-ng = callPackage ../tools/networking/ligolo-ng { };
+
+  linenoise = callPackage ../development/libraries/linenoise { };
+
+  linenoise-ng = callPackage ../development/libraries/linenoise-ng { };
+
+  lirc = callPackage ../development/libraries/lirc { };
+
+  liquid-dsp = callPackage ../development/libraries/liquid-dsp { };
+
+  liquidfun = callPackage ../development/libraries/liquidfun { };
+
+  live555 = callPackage ../development/libraries/live555 { };
+
+  log4cpp = callPackage ../development/libraries/log4cpp { };
+
+  log4cxx = callPackage ../development/libraries/log4cxx { };
+
+  log4cplus = callPackage ../development/libraries/log4cplus { };
+
+  log4shib = callPackage ../development/libraries/log4shib { };
+
+  loudmouth = callPackage ../development/libraries/loudmouth { };
+
+  lrdf = callPackage ../development/libraries/lrdf { };
+
+  luabind = callPackage ../development/libraries/luabind { lua = lua5_1; };
+
+  luabind_luajit = luabind.override { lua = luajit; };
+
+  luksmeta = callPackage ../development/libraries/luksmeta {
+    asciidoc = asciidoc-full;
+  };
+
+  lyra = callPackage ../development/libraries/lyra { };
+
+  lzlib = callPackage ../development/libraries/lzlib { };
+
+  lzo = callPackage ../development/libraries/lzo { };
+
+  opencl-clang = callPackage ../development/libraries/opencl-clang { };
+
+  mapnik = callPackage ../development/libraries/mapnik {
+    gdal = gdal.override {
+      libgeotiff = libgeotiff.override { proj = proj_7; };
+      libspatialite = libspatialite.override { proj = proj_7; };
+      proj = proj_7;
+    };
+    proj = proj_7;
+    boost = boost175;
+  };
+
+
+  marisa = callPackage ../development/libraries/marisa {};
+
+  matio = callPackage ../development/libraries/matio { };
+
+  matterhorn = haskell.lib.compose.justStaticExecutables haskellPackages.matterhorn;
+
+  maxflow = callPackage ../development/libraries/maxflow { };
+
+  mbedtls = callPackage ../development/libraries/mbedtls { };
+
+  mdctags = callPackage ../development/tools/misc/mdctags { };
+
+  md4c = callPackage ../development/libraries/md4c { };
+
+  mdds = callPackage ../development/libraries/mdds { };
+
+  mediastreamer = callPackage ../development/libraries/mediastreamer { };
+
+  mediastreamer-openh264 = callPackage ../development/libraries/mediastreamer/msopenh264.nix { };
+
+  memorymapping = callPackage ../development/libraries/memorymapping { };
+  memorymappingHook = makeSetupHook {
+    deps = [ memorymapping ];
+  } ../development/libraries/memorymapping/setup-hook.sh;
+
+  memstream = callPackage ../development/libraries/memstream { };
+  memstreamHook = makeSetupHook {
+    deps = [ memstream ];
+  } ../development/libraries/memstream/setup-hook.sh;
+
+  menu-cache = callPackage ../development/libraries/menu-cache { };
+
+  mergerfs = callPackage ../tools/filesystems/mergerfs { };
+
+  mergerfs-tools = callPackage ../tools/filesystems/mergerfs/tools.nix { };
+
+  ## libGL/libGLU/Mesa stuff
+
+  # Default libGL implementation, should provide headers and
+  # libGL.so/libEGL.so/... to link agains them. Android NDK provides
+  # an OpenGL implementation, we can just use that.
+  libGL = if stdenv.hostPlatform.useAndroidPrebuilt then stdenv
+          else callPackage ../development/libraries/mesa/stubs.nix {
+            inherit (darwin.apple_sdk.frameworks) OpenGL;
+          };
+
+  # Default libGLU
+  libGLU = mesa_glu;
+
+  mesa = callPackage ../development/libraries/mesa {
+    llvmPackages = llvmPackages_latest;
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+    inherit (darwin.apple_sdk.libs) Xplugin;
+  };
+
+  mesa_glu =  callPackage ../development/libraries/mesa-glu {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  ## End libGL/libGLU/Mesa stuff
+
+  meterbridge = callPackage ../applications/audio/meterbridge { };
+
+  mhddfs = callPackage ../tools/filesystems/mhddfs { };
+
+  microsoft_gsl = callPackage ../development/libraries/microsoft_gsl { };
+
+  micronucleus = callPackage ../development/tools/misc/micronucleus { };
+
+  markdown-anki-decks = callPackage ../tools/misc/markdown-anki-decks { };
+
+  micropython = callPackage ../development/interpreters/micropython { };
+
+  MIDIVisualizer = callPackage ../applications/audio/midi-visualizer { };
+
+  mimalloc = callPackage ../development/libraries/mimalloc { };
+
+  minizip = callPackage ../development/libraries/minizip { };
+
+  minizip2 = callPackage ../development/libraries/minizip2 { };
+
+  mkvtoolnix = libsForQt5.callPackage ../applications/video/mkvtoolnix { };
+
+  mkvtoolnix-cli = mkvtoolnix.override {
+    withGUI = false;
+  };
+
+  mlc = callPackage ../tools/system/mlc { };
+
+  mlt = callPackage ../development/libraries/mlt { };
+
+  mlv-app = libsForQt5.callPackage ../applications/video/mlv-app { };
+
+  mono-addins = callPackage ../development/libraries/mono-addins { };
+
+  movine = callPackage ../development/tools/database/movine {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  movit = callPackage ../development/libraries/movit { };
+
+  mosquitto = callPackage ../servers/mqtt/mosquitto { };
+
+  mps = callPackage ../development/libraries/mps { };
+
+  libmpeg2 = callPackage ../development/libraries/libmpeg2 { };
+
+  mpeg2dec = libmpeg2;
+
+  mqtt-bench = callPackage ../applications/misc/mqtt-bench {};
+
+  mqttui = callPackage ../tools/networking/mqttui {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  msgpack = callPackage ../development/libraries/msgpack { };
+
+  msoffcrypto-tool = with python3.pkgs; toPythonApplication msoffcrypto-tool;
+
+  msilbc = callPackage ../development/libraries/msilbc { };
+
+  mp4v2 = callPackage ../development/libraries/mp4v2 { };
+
+  libmpc = callPackage ../development/libraries/libmpc { };
+
+  mpich = callPackage ../development/libraries/mpich {
+    ch4backend = libfabric;
+  };
+
+  mstpd = callPackage ../os-specific/linux/mstpd { };
+
+  mtdev = callPackage ../development/libraries/mtdev { };
+
+  mtpfs = callPackage ../tools/filesystems/mtpfs { };
+
+  mtxclient = callPackage ../development/libraries/mtxclient { };
+
+  mu = callPackage ../tools/networking/mu {
+    texinfo = texinfo4;
+  };
+
+  mueval = callPackage ../development/tools/haskell/mueval { };
+
+  muparser = callPackage ../development/libraries/muparser {
+    inherit (darwin.stubs) setfile;
+  };
+
+  muparserx = callPackage ../development/libraries/muparserx { };
+
+  mutest = callPackage ../development/libraries/mutest { };
+
+  mvapich = callPackage ../development/libraries/mvapich { };
+
+  mygpoclient = with python3.pkgs; toPythonApplication mygpoclient;
+
+  mygui = callPackage ../development/libraries/mygui {
+    ogre = ogre1_9;
+  };
+
+  mysocketw = callPackage ../development/libraries/mysocketw { };
+
+  mythes = callPackage ../development/libraries/mythes { };
+
+  nanodbc = callPackage ../development/libraries/nanodbc { };
+
+  nanoflann = callPackage ../development/libraries/nanoflann { };
+
+  nanomsg = callPackage ../development/libraries/nanomsg { };
+
+  nanovna-saver = libsForQt5.callPackage ../applications/science/electronics/nanovna-saver { };
+
+  ncnn = callPackage ../development/libraries/ncnn { };
+
+  ndpi = callPackage ../development/libraries/ndpi { };
+
+  nemo-qml-plugin-dbus = libsForQt5.callPackage ../development/libraries/nemo-qml-plugin-dbus { };
+
+  nifticlib = callPackage ../development/libraries/science/biology/nifticlib { };
+
+  notify-sharp = callPackage ../development/libraries/notify-sharp { };
+
+  notcurses = callPackage ../development/libraries/notcurses { };
+
+  ncurses5 = ncurses.override {
+    abiVersion = "5";
+  };
+  ncurses6 = ncurses.override {
+    abiVersion = "6";
+  };
+  ncurses =
+    if stdenv.hostPlatform.useiOSPrebuilt
+    then null
+    else callPackage ../development/libraries/ncurses { };
+
+  ndi = callPackage ../development/libraries/ndi { };
+
+  neardal = callPackage ../development/libraries/neardal { };
+
+  neatvnc = callPackage ../development/libraries/neatvnc { };
+
+  neon = callPackage ../development/libraries/neon { };
+
+  nettle = import ../development/libraries/nettle { inherit callPackage fetchurl; };
+
+  newman = callPackage ../development/web/newman {};
+
+  newt = callPackage ../development/libraries/newt { python = python3; };
+
+  nghttp2 = callPackage ../development/libraries/nghttp2 { };
+  libnghttp2 = nghttp2.lib;
+
+  nghttp3 = callPackage ../development/libraries/nghttp3 { };
+
+  ngtcp2 = callPackage ../development/libraries/ngtcp2 { };
+
+  nix-plugins = callPackage ../development/libraries/nix-plugins { nix = nixVersions.nix_2_5; };
+
+  nika-fonts = callPackage ../data/fonts/nika-fonts { };
+
+  nikto = callPackage ../tools/networking/nikto { };
+
+  nlohmann_json = callPackage ../development/libraries/nlohmann_json { };
+
+  nntp-proxy = callPackage ../applications/networking/nntp-proxy { };
+
+  non = callPackage ../applications/audio/non { };
+
+  ntl = callPackage ../development/libraries/ntl { };
+
+  nspr = callPackage ../development/libraries/nspr {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  nss = lowPrio (callPackage ../development/libraries/nss { });
+  nssTools = nss.tools;
+
+  nss_wrapper = callPackage ../development/libraries/nss_wrapper { };
+
+  nsss = skawarePackages.nsss;
+
+  ntbtls = callPackage ../development/libraries/ntbtls { };
+
+  ntk = callPackage ../development/libraries/audio/ntk { };
+
+  ntrack = callPackage ../development/libraries/ntrack { };
+
+  nuraft = callPackage ../development/libraries/nuraft { };
+
+  nuspell = callPackage ../development/libraries/nuspell { };
+  nuspellWithDicts = dicts: callPackage ../development/libraries/nuspell/wrapper.nix { inherit dicts; };
+
+  nv-codec-headers = callPackage ../development/libraries/nv-codec-headers { };
+  nv-codec-headers-10 = callPackage ../development/libraries/nv-codec-headers/10_x.nix { };
+  nv-codec-headers-11 = callPackage ../development/libraries/nv-codec-headers/11_x.nix { };
+
+  mkNvidiaContainerPkg = { name, containerRuntimePath, configTemplate, additionalPaths ? [] }:
+    let
+      nvidia-container-runtime = callPackage ../applications/virtualization/nvidia-container-runtime {
+        inherit containerRuntimePath configTemplate;
+      };
+    in symlinkJoin {
+      inherit name;
+      paths = [
+        (callPackage ../applications/virtualization/libnvidia-container { })
+        nvidia-container-runtime
+        (callPackage ../applications/virtualization/nvidia-container-toolkit {
+          inherit nvidia-container-runtime;
+        })
+      ] ++ additionalPaths;
+    };
+
+  nvidia-docker = mkNvidiaContainerPkg {
+    name = "nvidia-docker";
+    containerRuntimePath = "${docker}/libexec/docker/runc";
+    configTemplate = ../applications/virtualization/nvidia-docker/config.toml;
+    additionalPaths = [ (callPackage ../applications/virtualization/nvidia-docker { }) ];
+  };
+
+  nvidia-podman = mkNvidiaContainerPkg {
+    name = "nvidia-podman";
+    containerRuntimePath = "${runc}/bin/runc";
+    configTemplate = ../applications/virtualization/nvidia-podman/config.toml;
+  };
+
+  nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { };
+
+  nvidia-vaapi-driver = callPackage ../development/libraries/nvidia-vaapi-driver { };
+
+  nvidia-video-sdk = callPackage ../development/libraries/nvidia-video-sdk { };
+
+  nvidia-optical-flow-sdk = callPackage ../development/libraries/nvidia-optical-flow-sdk { };
+
+  nvtop = callPackage ../tools/system/nvtop { };
+
+  ocl-icd = callPackage ../development/libraries/ocl-icd { };
+
+  ode = callPackage ../development/libraries/ode { };
+
+  ogre = callPackage ../development/libraries/ogre {};
+  ogre1_9 = callPackage ../development/libraries/ogre/1.9.x.nix {};
+  ogre1_10 = callPackage ../development/libraries/ogre/1.10.x.nix {};
+
+  ogrepaged = callPackage ../development/libraries/ogrepaged { };
+
+  olm = callPackage ../development/libraries/olm { };
+
+  one_gadget = callPackage ../development/tools/misc/one_gadget { };
+
+  oneDNN = callPackage ../development/libraries/oneDNN { };
+
+  onedrive = callPackage ../applications/networking/sync/onedrive { };
+
+  oneko = callPackage ../applications/misc/oneko { };
+
+  oniguruma = callPackage ../development/libraries/oniguruma { };
+
+  oobicpl = callPackage ../development/libraries/science/biology/oobicpl { };
+
+  ookla-speedtest = callPackage ../tools/networking/ookla-speedtest { };
+
+  openalSoft = callPackage ../development/libraries/openal-soft {
+    inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit AudioToolbox;
+  };
+  openal = openalSoft;
+
+  openbabel = openbabel3;
+
+  openbabel2 = callPackage ../development/libraries/openbabel/2.nix { };
+
+  openbabel3 = callPackage ../development/libraries/openbabel {
+    python = python3;
+  };
+
+  opencascade = callPackage ../development/libraries/opencascade {
+    inherit (darwin.apple_sdk.frameworks) OpenCL Cocoa;
+  };
+  opencascade-occt = callPackage ../development/libraries/opencascade-occt { };
+
+  opencl-headers = callPackage ../development/libraries/opencl-headers { };
+
+  opencl-clhpp = callPackage ../development/libraries/opencl-clhpp { };
+
+  opencollada = callPackage ../development/libraries/opencollada { };
+
+  opencore-amr = callPackage ../development/libraries/opencore-amr { };
+
+  opencsg = callPackage ../development/libraries/opencsg {
+    inherit (qt5) qmake;
+    inherit (darwin.apple_sdk.frameworks) GLUT;
+  };
+
+  openct = callPackage ../development/libraries/openct { };
+
+  opencv2 = callPackage ../development/libraries/opencv {
+    inherit (darwin.apple_sdk.frameworks) Cocoa QTKit;
+    ffmpeg = ffmpeg_4;
+  };
+
+  opencv3 = callPackage ../development/libraries/opencv/3.x.nix {
+    inherit (darwin.apple_sdk.frameworks) AVFoundation Cocoa VideoDecodeAcceleration;
+    ffmpeg = ffmpeg_4;
+  };
+
+  opencv3WithoutCuda = opencv3.override {
+    enableCuda = false;
+  };
+
+  opencv4 = callPackage ../development/libraries/opencv/4.x.nix {
+    inherit (darwin.apple_sdk.frameworks) AVFoundation Cocoa VideoDecodeAcceleration CoreMedia MediaToolbox;
+    pythonPackages = python3Packages;
+    ffmpeg = ffmpeg_4;
+  };
+
+  opencv = opencv4;
+
+  imath = callPackage ../development/libraries/imath { };
+
+  openexr = openexr_2;
+  openexr_2 = callPackage ../development/libraries/openexr { };
+  openexr_3 = callPackage ../development/libraries/openexr/3.nix { };
+
+  openexrid-unstable = callPackage ../development/libraries/openexrid-unstable { };
+
+  openldap = callPackage ../development/libraries/openldap { };
+
+  opencolorio = callPackage ../development/libraries/opencolorio {
+    inherit (darwin.apple_sdk.frameworks) Carbon GLUT Cocoa;
+  };
+  opencolorio_1 = callPackage ../development/libraries/opencolorio/1.x.nix { };
+
+  opendmarc = callPackage ../development/libraries/opendmarc { };
+
+  ois = callPackage ../development/libraries/ois {
+    inherit (darwin.apple_sdk.frameworks) Cocoa IOKit Kernel;
+  };
+
+  openh264 = callPackage ../development/libraries/openh264 { };
+
+  openjpeg = callPackage ../development/libraries/openjpeg { };
+
+  openpa = callPackage ../development/libraries/openpa { };
+
+  opensaml-cpp = callPackage ../development/libraries/opensaml-cpp { };
+
+  openscenegraph = callPackage ../development/libraries/openscenegraph {
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Foundation;
+  };
+
+  openslide = callPackage ../development/libraries/openslide { };
+
+  openslp = callPackage ../development/libraries/openslp {};
+
+  openstackclient = with python3Packages; toPythonApplication python-openstackclient;
+
+  openvdb = callPackage ../development/libraries/openvdb {};
+
+  inherit (callPackages ../development/libraries/libressl { })
+    libressl_3_2
+    libressl_3_4;
+
+  # Please keep this pointed to the latest version. See also
+  # https://discourse.nixos.org/t/nixpkgs-policy-regarding-libraries-available-in-multiple-versions/7026/2
+  libressl = libressl_3_4;
+
+  boringssl = callPackage ../development/libraries/boringssl { };
+
+  wolfssl = callPackage ../development/libraries/wolfssl { };
+
+  openssl = openssl_1_1;
+
+  inherit (callPackages ../development/libraries/openssl { })
+    openssl_1_0_2
+    openssl_1_1
+    openssl_3_0;
+
+  openssl-chacha = callPackage ../development/libraries/openssl/chacha.nix { };
+
+  opensubdiv = callPackage ../development/libraries/opensubdiv { };
+
+  opensupaplex = callPackage ../games/opensupaplex { };
+
+  open-wbo = callPackage ../applications/science/logic/open-wbo {};
+
+  openwsman = callPackage ../development/libraries/openwsman {};
+
+  ortp = callPackage ../development/libraries/ortp { };
+
+  openhmd = callPackage ../development/libraries/openhmd { };
+
+  openwebrx = callPackage ../applications/radio/openwebrx {
+    inherit (python3Packages)
+    buildPythonPackage buildPythonApplication setuptools;
+  };
+
+  optparse-bash = callPackage ../development/libraries/optparse-bash { };
+
+  orcania = callPackage ../development/libraries/orcania { };
+
+  osm-gps-map = callPackage ../development/libraries/osm-gps-map { };
+
+  osmid = callPackage ../applications/audio/osmid {};
+
+  osinfo-db = callPackage ../data/misc/osinfo-db { };
+  osinfo-db-tools = callPackage ../tools/misc/osinfo-db-tools { };
+
+  p11-kit = callPackage ../development/libraries/p11-kit { };
+
+  paperkey = callPackage ../tools/security/paperkey { };
+
+  pcaudiolib = callPackage ../development/libraries/pcaudiolib { };
+
+  pcg_c = callPackage ../development/libraries/pcg-c { };
+
+  pcl = libsForQt5.callPackage ../development/libraries/pcl {
+    inherit (darwin.apple_sdk.frameworks) Cocoa AGL OpenGL;
+  };
+
+  pcre = callPackage ../development/libraries/pcre { };
+  pcre16 = res.pcre.override { variant = "pcre16"; };
+  # pcre32 seems unused
+  pcre-cpp = res.pcre.override { variant = "cpp"; };
+
+  pcre2 = callPackage ../development/libraries/pcre2 { };
+
+  pdal = callPackage ../development/libraries/pdal { } ;
+
+  pdf2xml = callPackage ../development/libraries/pdf2xml {} ;
+
+  pe-parse = callPackage ../development/libraries/pe-parse { };
+
+  inherit (callPackage ../development/libraries/physfs {
+    inherit (darwin.apple_sdk.frameworks) Foundation Carbon;
+  })
+    physfs_2
+    physfs;
+
+  pico-sdk = callPackage ../development/libraries/pico-sdk { };
+
+  pipelight = callPackage ../tools/misc/pipelight {
+    stdenv = stdenv_32bit;
+    wine-staging = pkgsi686Linux.wine-staging;
+  };
+
+  pkcs11helper = callPackage ../development/libraries/pkcs11helper { };
+
+  pkgdiff = callPackage ../tools/misc/pkgdiff { };
+
+  place-cursor-at = haskell.lib.compose.justStaticExecutables haskellPackages.place-cursor-at;
+
+  plib = callPackage ../development/libraries/plib { };
+
+  pocketsphinx = callPackage ../development/libraries/pocketsphinx { };
+
+  poco = callPackage ../development/libraries/poco { };
+
+  podofo = callPackage ../development/libraries/podofo { };
+
+  polkit = callPackage ../development/libraries/polkit { };
+
+  poppler = callPackage ../development/libraries/poppler { lcms = lcms2; };
+  poppler_0_61 = callPackage ../development/libraries/poppler/0.61.nix { lcms = lcms2; };
+
+  poppler_gi = lowPrio (poppler.override {
+    introspectionSupport = true;
+  });
+
+  poppler_min = poppler.override { # TODO: maybe reduce even more
+    # this is currently only used by texlive.bin.
+    minimal = true;
+    suffix = "min";
+  };
+
+  poppler_utils = poppler.override {
+    suffix = "utils";
+    utils = true;
+  };
+
+  popt = callPackage ../development/libraries/popt { };
+
+  portaudio = callPackage ../development/libraries/portaudio {
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox AudioUnit CoreAudio CoreServices Carbon;
+  };
+
+  portaudio2014 = portaudio.overrideAttrs (_: {
+    src = fetchurl {
+      url = "http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz";
+      sha256 = "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g";
+    };
+  });
+
+  portmidi = callPackage ../development/libraries/portmidi {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreAudio CoreFoundation CoreMIDI CoreServices;
+  };
+
+  presage = callPackage ../development/libraries/presage { };
+
+  present = callPackage ../misc/present { };
+
+  prime-server = callPackage ../development/libraries/prime-server { };
+
+  primecount = callPackage ../development/libraries/science/math/primecount { };
+
+  primesieve = callPackage ../development/libraries/science/math/primesieve { };
+
+  prison = callPackage ../development/libraries/prison { };
+
+  proj = callPackage ../development/libraries/proj { };
+
+  proj_7 = callPackage ../development/libraries/proj/7.nix { };
+
+  proj-datumgrid = callPackage ../development/libraries/proj-datumgrid { };
+
+  proselint = callPackage ../tools/text/proselint {
+    inherit (python3Packages)
+    buildPythonApplication click future six;
+  };
+
+  pru = callPackage ../tools/text/pru { };
+
+  prospector = callPackage ../development/tools/prospector { };
+
+  protobuf = protobuf3_19;
+
+  protobuf3_19 = callPackage ../development/libraries/protobuf/3.19.nix { };
+  protobuf3_18 = callPackage ../development/libraries/protobuf/3.18.nix { };
+  protobuf3_17 = callPackage ../development/libraries/protobuf/3.17.nix { };
+  protobuf3_16 = callPackage ../development/libraries/protobuf/3.16.nix { };
+  protobuf3_15 = callPackage ../development/libraries/protobuf/3.15.nix { };
+  protobuf3_14 = callPackage ../development/libraries/protobuf/3.14.nix { };
+  protobuf3_13 = callPackage ../development/libraries/protobuf/3.13.nix { };
+  protobuf3_12 = callPackage ../development/libraries/protobuf/3.12.nix { };
+  protobuf3_11 = callPackage ../development/libraries/protobuf/3.11.nix { };
+  protobuf3_10 = callPackage ../development/libraries/protobuf/3.10.nix { };
+  protobuf3_9 = callPackage ../development/libraries/protobuf/3.9.nix { };
+  protobuf3_8 = callPackage ../development/libraries/protobuf/3.8.nix { };
+  protobuf3_7 = callPackage ../development/libraries/protobuf/3.7.nix { };
+  protobuf3_6 = callPackage ../development/libraries/protobuf/3.6.nix { };
+  protobuf3_1 = callPackage ../development/libraries/protobuf/3.1.nix { };
+  protobuf2_5 = callPackage ../development/libraries/protobuf/2.5.nix { };
+
+  protobufc = callPackage ../development/libraries/protobufc/1.3.nix { };
+
+  protolock = callPackage ../development/libraries/protolock { };
+
+  protozero = callPackage ../development/libraries/protozero { };
+
+  flatbuffers = flatbuffers_2_0;
+  flatbuffers_2_0 = callPackage ../development/libraries/flatbuffers/2.0.nix { };
+  flatbuffers_1_12 = callPackage ../development/libraries/flatbuffers/1.12.nix { };
+
+  nanopb = callPackage ../development/libraries/nanopb { };
+
+  gnupth = callPackage ../development/libraries/pth { };
+  pth = if stdenv.hostPlatform.isMusl then npth else gnupth;
+
+  pslib = callPackage ../development/libraries/pslib { };
+
+  pstreams = callPackage ../development/libraries/pstreams {};
+
+  pufferpanel = callPackage ../servers/pufferpanel { };
+
+  pugixml = callPackage ../development/libraries/pugixml { };
+
+  pylode = callPackage ../misc/pylode {};
+
+  python-qt = callPackage ../development/libraries/python-qt {
+    python = python27;
+    inherit (qt514) qmake qttools qtwebengine qtxmlpatterns;
+  };
+
+  pyotherside = libsForQt5.callPackage ../development/libraries/pyotherside {};
+
+  plasma-hud = callPackage ../misc/plasma-hud { };
+
+  re2 = callPackage ../development/libraries/re2 { };
+
+  qbs = libsForQt5.callPackage ../development/tools/build-managers/qbs { };
+
+  qca2 = callPackage ../development/libraries/qca2 { qt = qt4; };
+
+  qimageblitz = callPackage ../development/libraries/qimageblitz {};
+
+  qjson = callPackage ../development/libraries/qjson { };
+
+  qolibri = libsForQt5.callPackage ../applications/misc/qolibri { };
+
+  qt4 = qt48;
+
+  qt48 = callPackage ../development/libraries/qt-4.x/4.8 {
+    # GNOME dependencies are not used unless gtkStyle == true
+    inherit (gnome2) libgnomeui GConf gnome_vfs;
+    cups = if stdenv.isLinux then cups else null;
+
+    # XXX: mariadb doesn't built on fbsd as of nov 2015
+    libmysqlclient = if (!stdenv.isFreeBSD) then libmysqlclient else null;
+
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices OpenGL Cocoa AGL;
+  };
+
+  qmake48Hook = makeSetupHook
+    { substitutions = { qt4 = qt48; }; }
+    ../development/libraries/qt-4.x/4.8/qmake-hook.sh;
+
+  qmake4Hook = qmake48Hook;
+
+  qt48Full = qt48.override {
+    docs = true;
+    demos = true;
+    examples = true;
+    developerBuild = true;
+  };
+
+  qt512 = recurseIntoAttrs (makeOverridable
+    (import ../development/libraries/qt-5/5.12) {
+      inherit newScope;
+      inherit lib stdenv fetchurl fetchpatch fetchFromGitHub makeSetupHook makeWrapper;
+      inherit bison cups dconf harfbuzz libGL perl gtk3;
+      inherit (gst_all_1) gstreamer gst-plugins-base;
+      inherit darwin;
+    });
+
+  qt514 = recurseIntoAttrs (makeOverridable
+    (import ../development/libraries/qt-5/5.14) {
+      inherit newScope;
+      inherit lib stdenv fetchurl fetchpatch fetchFromGitHub makeSetupHook makeWrapper;
+      inherit bison cups dconf harfbuzz libGL perl gtk3;
+      inherit (gst_all_1) gstreamer gst-plugins-base;
+      inherit darwin;
+    });
+
+  qt515 = recurseIntoAttrs (makeOverridable
+    (import ../development/libraries/qt-5/5.15) {
+      inherit newScope;
+      inherit lib stdenv fetchurl fetchpatch fetchgit fetchFromGitHub makeSetupHook makeWrapper;
+      inherit bison cups dconf harfbuzz libGL perl gtk3;
+      inherit (gst_all_1) gstreamer gst-plugins-base;
+      inherit darwin;
+    });
+
+  libsForQt512 = recurseIntoAttrs (import ./qt5-packages.nix {
+    inherit lib pkgs;
+    qt5 = qt512;
+  });
+
+  libsForQt514 = recurseIntoAttrs (import ./qt5-packages.nix {
+    inherit lib pkgs;
+    qt5 = qt514;
+  });
+
+  libsForQt515 = recurseIntoAttrs (import ./qt5-packages.nix {
+    inherit lib pkgs;
+    qt5 = qt515;
+  });
+
+  # TODO bump to 5.14 on darwin once it's not broken; see #95199
+  qt5 =        if stdenv.hostPlatform.isDarwin then qt512 else qt515;
+  libsForQt5 = if stdenv.hostPlatform.isDarwin then libsForQt512 else libsForQt515;
+
+  # plasma5Packages maps to the Qt5 packages set that is used to build the plasma5 desktop
+  plasma5Packages = libsForQt515;
+
+  qtEnv = qt5.env;
+  qt5Full = qt5.full;
+
+  qtscriptgenerator = callPackage ../development/libraries/qtscriptgenerator { };
+
+  quark-engine = callPackage ../tools/security/quark-engine { };
+
+  quesoglc = callPackage ../development/libraries/quesoglc { };
+
+  quickder = callPackage ../development/libraries/quickder {};
+
+  quicksynergy = callPackage ../applications/misc/quicksynergy { };
+
+  quill = callPackage ../tools/security/quill {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  qv2ray = libsForQt5.callPackage ../applications/networking/qv2ray {};
+
+  qwt = callPackage ../development/libraries/qwt {};
+
+  qwt6_qt4 = callPackage ../development/libraries/qwt/6_qt4.nix {
+    inherit (darwin.apple_sdk.frameworks) AGL;
+  };
+
+  qxt = callPackage ../development/libraries/qxt {};
+
+  rabbitmq-c = callPackage ../development/libraries/rabbitmq-c {};
+
+  raft-canonical = callPackage ../development/libraries/raft-canonical { };
+
+  range-v3 = callPackage ../development/libraries/range-v3 {};
+
+  rabbitmq-java-client = callPackage ../development/libraries/rabbitmq-java-client {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  rapidcheck = callPackage ../development/libraries/rapidcheck {};
+
+  rapidjson = callPackage ../development/libraries/rapidjson {};
+
+  rapidxml = callPackage ../development/libraries/rapidxml {};
+
+  raul = callPackage ../development/libraries/audio/raul { };
+
+  raylib = callPackage ../development/libraries/raylib { };
+
+  readline = readline6;
+  readline6 = readline63;
+
+  readline63 = callPackage ../development/libraries/readline/6.3.nix { };
+
+  readline70 = callPackage ../development/libraries/readline/7.0.nix { };
+
+  readline81 = callPackage ../development/libraries/readline/8.1.nix { };
+
+  readosm = callPackage ../development/libraries/readosm { };
+
+  recastnavigation = callPackage ../development/libraries/recastnavigation { };
+
+  rinutils = callPackage ../development/libraries/rinutils { };
+
+  kissfft = callPackage ../development/libraries/kissfft { };
+
+  lambdabot = callPackage ../development/tools/haskell/lambdabot {
+    haskellLib = haskell.lib.compose;
+  };
+
+  lambda-mod-zsh-theme = callPackage ../shells/zsh/lambda-mod-zsh-theme { };
+
+  libgme = callPackage ../development/libraries/audio/libgme { };
+
+  librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { };
+
+  librdf_raptor2 = callPackage ../development/libraries/librdf/raptor2.nix { };
+
+  librdf_rasqal = callPackage ../development/libraries/librdf/rasqal.nix { };
+
+  librdf_redland = callPackage ../development/libraries/librdf/redland.nix { };
+  redland = librdf_redland; # added 2018-04-25
+
+  libsmf = callPackage ../development/libraries/audio/libsmf { };
+
+  lilv = callPackage ../development/libraries/audio/lilv { };
+
+  lv2 = callPackage ../development/libraries/audio/lv2 { };
+
+  lvtk = callPackage ../development/libraries/audio/lvtk { };
+
+  qm-dsp = callPackage ../development/libraries/audio/qm-dsp { };
+
+  qradiolink = callPackage ../applications/radio/qradiolink { };
+
+  qrupdate = callPackage ../development/libraries/qrupdate { };
+
+  qgnomeplatform = libsForQt5.callPackage ../development/libraries/qgnomeplatform { };
+
+  randomx = callPackage ../development/libraries/randomx { };
+
+  retro-gtk = callPackage ../development/libraries/retro-gtk { };
+
+  resolv_wrapper = callPackage ../development/libraries/resolv_wrapper { };
+
+  restinio = callPackage ../development/libraries/restinio {};
+
+  rhino = callPackage ../development/libraries/java/rhino {
+    javac = jdk8;
+    jvm = jre8;
+  };
+
+  rlog = callPackage ../development/libraries/rlog { };
+
+  rlottie = callPackage ../development/libraries/rlottie { };
+
+  rocksdb = callPackage ../development/libraries/rocksdb { };
+
+  rocksdb_lite = rocksdb.override { enableLite = true; };
+
+  rocksdb_6_23 = rocksdb.overrideAttrs (_: rec {
+    pname = "rocksdb";
+    version = "6.23.3";
+    src = fetchFromGitHub {
+      owner = "facebook";
+      repo = pname;
+      rev = "v${version}";
+     sha256 = "sha256-SsDqhjdCdtIGNlsMj5kfiuS3zSGwcxi4KV71d95h7yk=";
+   };
+  });
+
+  rotate-backups = callPackage ../tools/backup/rotate-backups { };
+
+  rote = callPackage ../development/libraries/rote { };
+
+  round = callPackage ../applications/graphics/round { };
+
+  ronn = callPackage ../development/tools/ronn { };
+
+  rshell = python3.pkgs.callPackage ../development/embedded/rshell { };
+
+  rttr = callPackage ../development/libraries/rttr { };
+
+  rubberband = callPackage ../development/libraries/rubberband { };
+
+  rure = callPackage ../development/libraries/rure { };
+
+  rustc-demangle = callPackage ../development/libraries/rustc-demangle { };
+
+  s2geometry = callPackage ../development/libraries/s2geometry { };
+
+  /*  This package references ghc844, which we no longer have. Unfortunately, I
+      have been unable to mark it as "broken" in a way that the ofBorg bot
+      recognizes. Since I don't want to merge code into master that generates
+      evaluation errors, I have no other idea but to comment it out entirely.
+
+  sad = callPackage ../applications/science/logic/sad { };
+  */
+
+  safefile = callPackage ../development/libraries/safefile {};
+
+  sbc = callPackage ../development/libraries/sbc { };
+
+  schroedinger = callPackage ../development/libraries/schroedinger {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  SDL = callPackage ../development/libraries/SDL ({
+    inherit (darwin.apple_sdk.frameworks) OpenGL CoreAudio CoreServices AudioUnit Kernel Cocoa GLUT;
+  } // lib.optionalAttrs stdenv.hostPlatform.isAndroid {
+    # libGLU doesn’t work with Android’s SDL
+    libGLU = null;
+  });
+
+  SDL_sixel = callPackage ../development/libraries/SDL_sixel { };
+
+  SDL_gfx = callPackage ../development/libraries/SDL_gfx { };
+
+  SDL_gpu = callPackage ../development/libraries/SDL_gpu { };
+
+  SDL_image = callPackage ../development/libraries/SDL_image { };
+
+  SDL_mixer = callPackage ../development/libraries/SDL_mixer { };
+
+  SDL_net = callPackage ../development/libraries/SDL_net { };
+
+  SDL_Pango = callPackage ../development/libraries/SDL_Pango {};
+
+  SDL_sound = callPackage ../development/libraries/SDL_sound { };
+
+  SDL_stretch= callPackage ../development/libraries/SDL_stretch { };
+
+  SDL_ttf = callPackage ../development/libraries/SDL_ttf { };
+
+  SDL2 = callPackage ../development/libraries/SDL2 {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit Cocoa CoreAudio CoreServices ForceFeedback OpenGL;
+  };
+
+  SDL2_image = callPackage ../development/libraries/SDL2_image {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  SDL2_mixer = callPackage ../development/libraries/SDL2_mixer {
+    inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit AudioToolbox;
+  };
+
+  SDL2_net = callPackage ../development/libraries/SDL2_net { };
+
+  SDL2_gfx = callPackage ../development/libraries/SDL2_gfx { };
+
+  SDL2_ttf = callPackage ../development/libraries/SDL2_ttf { };
+
+  SDL2_ttf_2_0_15 = callPackage ../development/libraries/SDL2_ttf/2.0.15.nix { };
+
+  sdnotify-wrapper = skawarePackages.sdnotify-wrapper;
+
+  sdrplay = callPackage ../applications/radio/sdrplay {};
+
+  sdrpp = callPackage ../applications/radio/sdrpp {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  sblim-sfcc = callPackage ../development/libraries/sblim-sfcc {};
+
+  selinux-sandbox = callPackage ../os-specific/linux/selinux-sandbox { };
+
+  seasocks = callPackage ../development/libraries/seasocks { };
+
+  serd = callPackage ../development/libraries/serd {};
+
+  serf = callPackage ../development/libraries/serf {};
+
+  sfsexp = callPackage ../development/libraries/sfsexp {};
+
+  shhgit = callPackage ../tools/security/shhgit { };
+
+  shhmsg = callPackage ../development/libraries/shhmsg { };
+
+  shhopt = callPackage ../development/libraries/shhopt { };
+
+  shine = callPackage ../development/libraries/shine { };
+
+  graphite2 = callPackage ../development/libraries/silgraphite/graphite2.nix {};
+
+  s2n-tls = callPackage ../development/libraries/s2n-tls { };
+
+  simavr = callPackage ../development/tools/simavr {
+    avrgcc = pkgsCross.avr.buildPackages.gcc;
+    avrlibc = pkgsCross.avr.libcCross;
+    inherit (darwin.apple_sdk.frameworks) GLUT;
+  };
+
+  simgear = callPackage ../development/libraries/simgear { };
+
+  simp_le = callPackage ../tools/admin/simp_le { };
+
+  simpleitk = callPackage ../development/libraries/simpleitk { lua = lua5_3; };
+
+  sfml = callPackage ../development/libraries/sfml {
+    inherit (darwin.apple_sdk.frameworks) IOKit Foundation AppKit OpenAL;
+  };
+  csfml = callPackage ../development/libraries/csfml { };
+
+  shapelib = callPackage ../development/libraries/shapelib { };
+
+  sharness = callPackage ../development/libraries/sharness { };
+
+  shibboleth-sp = callPackage ../development/libraries/shibboleth-sp { };
+
+  skaffold = callPackage ../development/tools/skaffold { };
+
+  skjold = callPackage ../development/tools/skjold { };
+
+  skalibs = skawarePackages.skalibs;
+  skalibs_2_10 = skawarePackages.skalibs_2_10;
+
+  skawarePackages = recurseIntoAttrs rec {
+    cleanPackaging = callPackage ../build-support/skaware/clean-packaging.nix { };
+    buildPackage = callPackage ../build-support/skaware/build-skaware-package.nix {
+      inherit cleanPackaging;
+    };
+    buildManPages = callPackage ../build-support/skaware/build-skaware-man-pages.nix { };
+
+    skalibs = callPackage ../development/libraries/skalibs { };
+    skalibs_2_10 = callPackage ../development/libraries/skalibs/2_10.nix { };
+    execline = callPackage ../tools/misc/execline { };
+
+    execline-man-pages = callPackage ../data/documentation/execline-man-pages {
+      inherit buildManPages;
+    };
+
+    s6 = callPackage ../tools/system/s6 { };
+    s6-dns = callPackage ../tools/networking/s6-dns { };
+    s6-linux-init = callPackage ../os-specific/linux/s6-linux-init { };
+    s6-linux-utils = callPackage ../os-specific/linux/s6-linux-utils { };
+    s6-networking = callPackage ../tools/networking/s6-networking { };
+    s6-portable-utils = callPackage ../tools/misc/s6-portable-utils { };
+    s6-rc = callPackage ../tools/system/s6-rc { };
+    s6-man-pages = callPackage ../data/documentation/s6-man-pages {
+      inherit buildManPages;
+    };
+    s6-networking-man-pages = callPackage ../data/documentation/s6-networking-man-pages {
+      inherit buildManPages;
+    };
+
+    mdevd = callPackage ../os-specific/linux/mdevd { };
+    nsss = callPackage ../development/libraries/nsss { };
+    utmps = callPackage ../development/libraries/utmps { };
+    sdnotify-wrapper = callPackage ../os-specific/linux/sdnotify-wrapper { };
+  };
+
+  slang = callPackage ../development/libraries/slang { };
+
+  slibGuile = callPackage ../development/libraries/slib {
+    scheme = guile_1_8;
+    texinfo = texinfo4; # otherwise erros: must be after `@defun' to use `@defunx'
+  };
+
+  smpeg = callPackage ../development/libraries/smpeg { };
+
+  smpeg2 = callPackage ../development/libraries/smpeg2 { };
+
+  snack = callPackage ../development/libraries/snack {
+        # optional
+  };
+
+  snappy = callPackage ../development/libraries/snappy { };
+
+  snow = callPackage ../tools/security/snow { };
+
+  snowcrash = callPackage ../tools/security/snowcrash { };
+
+  soapyairspy = callPackage ../applications/radio/soapyairspy { };
+
+  soapyaudio = callPackage ../applications/radio/soapyaudio { };
+
+  soapybladerf = callPackage ../applications/radio/soapybladerf { };
+
+  soapyhackrf = callPackage ../applications/radio/soapyhackrf { };
+
+  soapysdr = callPackage ../applications/radio/soapysdr { };
+
+  soapyremote = callPackage ../applications/radio/soapyremote { };
+
+  soapysdrplay = callPackage ../applications/radio/soapysdrplay { };
+
+  soapysdr-with-plugins = callPackage ../applications/radio/soapysdr {
+    extraPackages = [
+      limesuite
+      soapyairspy
+      soapyaudio
+      soapybladerf
+      soapyhackrf
+      soapyremote
+      soapyrtlsdr
+      soapyuhd
+    ];
+  };
+
+  soapyrtlsdr = callPackage ../applications/radio/soapyrtlsdr { };
+
+  soapyuhd = callPackage ../applications/radio/soapyuhd { };
+
+  socket_wrapper = callPackage ../development/libraries/socket_wrapper { };
+
+  soco-cli = callPackage ../tools/audio/soco-cli { };
+
+  sofia_sip = callPackage ../development/libraries/sofia-sip {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  soil = callPackage ../development/libraries/soil {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  sonic = callPackage ../development/libraries/sonic { };
+
+  sope = callPackage ../development/libraries/sope { };
+
+  sord = callPackage ../development/libraries/sord {};
+
+  soundtouch = callPackage ../development/libraries/soundtouch {};
+
+  spandsp = callPackage ../development/libraries/spandsp {};
+  spandsp3 = callPackage ../development/libraries/spandsp/3.nix {};
+
+  spaceship-prompt = callPackage ../shells/zsh/spaceship-prompt {};
+
+  spatialite_tools = callPackage ../development/libraries/spatialite-tools { };
+
+  spdk = callPackage ../development/libraries/spdk { };
+
+  speechd = callPackage ../development/libraries/speechd { };
+
+  speech-tools = callPackage ../development/libraries/speech-tools {};
+
+  speex = callPackage ../development/libraries/speex {
+    fftw = fftwFloat;
+  };
+
+  speexdsp = callPackage ../development/libraries/speexdsp {
+    fftw = fftwFloat;
+  };
+
+  sphinx = with python3Packages; toPythonApplication sphinx;
+
+  sphinx-autobuild = with python3Packages; toPythonApplication sphinx-autobuild;
+
+  sphinx-serve = with python3Packages; toPythonApplication sphinx-serve;
+
+  sphinxbase = callPackage ../development/libraries/sphinxbase { };
+
+  sphinxsearch = callPackage ../servers/search/sphinxsearch { };
+
+  spice = callPackage ../development/libraries/spice { };
+
+  spice-gtk = callPackage ../development/libraries/spice-gtk { };
+
+  spice-protocol = callPackage ../development/libraries/spice-protocol { };
+
+  spice-up = callPackage ../applications/office/spice-up { };
+
+  spicetify-cli = callPackage ../applications/misc/spicetify-cli { };
+
+  spirv-cross = callPackage ../tools/graphics/spirv-cross { };
+
+  sratom = callPackage ../development/libraries/audio/sratom { };
+
+  srm = callPackage ../tools/security/srm { };
+
+  srt = callPackage ../development/libraries/srt { };
+
+  srtp = callPackage ../development/libraries/srtp { };
+
+  stargate-libcds = callPackage ../development/libraries/stargate-libcds { };
+
+  stb = callPackage ../development/libraries/stb { };
+
+  StormLib = callPackage ../development/libraries/StormLib { };
+
+  stxxl = callPackage ../development/libraries/stxxl { };
+
+  sqlite = lowPrio (callPackage ../development/libraries/sqlite { });
+
+  unqlite = lowPrio (callPackage ../development/libraries/unqlite { });
+
+  inherit (callPackage ../development/libraries/sqlite/tools.nix {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  }) sqlite-analyzer sqldiff;
+
+  sqlar = callPackage ../development/libraries/sqlite/sqlar.nix { };
+
+  sqlitecpp = callPackage ../development/libraries/sqlitecpp { };
+
+  sqlite-interactive = (sqlite.override { interactive = true; }).bin;
+
+  sqlite-jdbc = callPackage ../servers/sql/sqlite/jdbc { };
+
+  sqlite-replication = sqlite.overrideAttrs (oldAttrs: rec {
+    name = "sqlite-${version}";
+    version = "3.27.2+replication3";
+    src = fetchFromGitHub {
+      owner = "CanonicalLtd";
+      repo = "sqlite";
+      rev = "version-${version}";
+      sha256 = "1aw1naa5y25ial251f74h039pgcz92p4b3994jvfzqpjlz06qwvw";
+    };
+    nativeBuildInputs = [ tcl ];
+    configureFlags = oldAttrs.configureFlags ++ [
+      "--enable-replication"
+      "--disable-amalgamation"
+      "--disable-tcl"
+    ];
+    preConfigure = ''
+      echo "D 2019-03-09T15:45:46" > manifest
+      echo -n "8250984a368079bb1838d48d99f8c1a6282e00bc" > manifest.uuid
+    '';
+  });
+
+  dqlite = callPackage ../development/libraries/dqlite { };
+
+  sqlcipher = callPackage ../development/libraries/sqlcipher { };
+
+  standardnotes = callPackage ../applications/editors/standardnotes { };
+
+  stfl = callPackage ../development/libraries/stfl { };
+
+  stlink = callPackage ../development/tools/misc/stlink { };
+  stlink-gui = callPackage ../development/tools/misc/stlink { withGUI = true; };
+
+  stegseek = callPackage ../tools/security/stegseek {};
+
+  stlport = callPackage ../development/libraries/stlport { };
+
+  streamlink = callPackage ../applications/video/streamlink { };
+  streamlink-twitch-gui-bin = callPackage ../applications/video/streamlink-twitch-gui/bin.nix {};
+
+  sub-batch = callPackage ../applications/video/sub-batch { };
+
+  subdl = callPackage ../applications/video/subdl { };
+
+  subtitleeditor = callPackage ../applications/video/subtitleeditor { };
+
+  suil = callPackage ../development/libraries/audio/suil { };
+
+  suil-qt5 = suil.override {
+    withQt4 = false;
+    withQt5 = true;
+  };
+  suil-qt4 = suil.override {
+    withQt4 = true;
+    withQt5 = false;
+  };
+
+  sundials = callPackage ../development/libraries/sundials {
+    python = python3;
+  };
+
+  sutils = callPackage ../tools/misc/sutils { };
+
+  svrcore = callPackage ../development/libraries/svrcore { };
+
+  svxlink = libsForQt5.callPackage ../applications/radio/svxlink { };
+
+  swiftclient = with python3Packages; toPythonApplication python-swiftclient;
+
+  sword = callPackage ../development/libraries/sword { };
+
+  biblesync = callPackage ../development/libraries/biblesync { };
+
+  szip = callPackage ../development/libraries/szip { };
+
+  t1lib = callPackage ../development/libraries/t1lib { };
+
+  tachyon = callPackage ../development/libraries/tachyon {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  tageditor = libsForQt5.callPackage ../applications/audio/tageditor { };
+
+  taglib = callPackage ../development/libraries/taglib { };
+
+  taglib_extras = callPackage ../development/libraries/taglib-extras { };
+
+  taglib-sharp = callPackage ../development/libraries/taglib-sharp { };
+
+  talloc = callPackage ../development/libraries/talloc { };
+
+  tagparser = callPackage ../development/libraries/tagparser { };
+
+  tclap = callPackage ../development/libraries/tclap {};
+
+  tcllib = callPackage ../development/libraries/tcllib { };
+
+  tcltls = callPackage ../development/libraries/tcltls { };
+
+  tclx = callPackage ../development/libraries/tclx { };
+
+  ntdb = callPackage ../development/libraries/ntdb { };
+
+  tdb = callPackage ../development/libraries/tdb {};
+
+  tdlib = callPackage ../development/libraries/tdlib { };
+
+  tecla = callPackage ../development/libraries/tecla { };
+
+  tectonic = callPackage ../tools/typesetting/tectonic {
+    harfbuzz = harfbuzzFull;
+  };
+
+  tepl = callPackage ../development/libraries/tepl { };
+
+  telepathy-glib = callPackage ../development/libraries/telepathy/glib { };
+
+  telepathy-farstream = callPackage ../development/libraries/telepathy/farstream {};
+
+  termbox = callPackage ../development/libraries/termbox { };
+
+  tevent = callPackage ../development/libraries/tevent { };
+
+  tet = callPackage ../development/tools/misc/tet { };
+
+  theft = callPackage ../development/libraries/theft { };
+
+  thrift = callPackage ../development/libraries/thrift { };
+
+  thrift-0_10 = callPackage ../development/libraries/thrift/0.10.nix { };
+
+  tidyp = callPackage ../development/libraries/tidyp { };
+
+  tinycdb = callPackage ../development/libraries/tinycdb { };
+
+  tinyxml = tinyxml2;
+
+  tinyxml2 = callPackage ../development/libraries/tinyxml/2.6.2.nix { };
+
+  tinyxml-2 = callPackage ../development/libraries/tinyxml-2 { };
+
+  tiscamera = callPackage ../os-specific/linux/tiscamera { };
+
+  tivodecode = callPackage ../applications/video/tivodecode { };
+
+  tix = callPackage ../development/libraries/tix { };
+
+  tk = tk-8_6;
+
+  tk-8_6 = callPackage ../development/libraries/tk/8.6.nix { };
+  tk-8_5 = callPackage ../development/libraries/tk/8.5.nix { tcl = tcl-8_5; };
+
+  tkrzw = callPackage ../development/libraries/tkrzw { };
+
+  tl-expected = callPackage ../development/libraries/tl-expected { };
+
+  tnt = callPackage ../development/libraries/tnt { };
+
+  tntnet = callPackage ../development/libraries/tntnet { };
+
+  tntdb = callPackage ../development/libraries/tntdb { };
+
+  kyotocabinet = callPackage ../development/libraries/kyotocabinet { };
+
+  tokyocabinet = callPackage ../development/libraries/tokyo-cabinet { };
+
+  tokyotyrant = callPackage ../development/libraries/tokyo-tyrant { };
+
+  totem-pl-parser = callPackage ../development/libraries/totem-pl-parser { };
+
+  tpm2-tss = callPackage ../development/libraries/tpm2-tss {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  tremor = callPackage ../development/libraries/tremor { };
+
+  triehash = callPackage ../tools/misc/triehash { };
+
+  trillian = callPackage ../tools/misc/trillian { };
+
+  twolame = callPackage ../development/libraries/twolame { };
+
+  udns = callPackage ../development/libraries/udns { };
+
+  uid_wrapper = callPackage ../development/libraries/uid_wrapper { };
+
+  umockdev = callPackage ../development/libraries/umockdev { };
+
+  unconvert = callPackage ../development/tools/unconvert { };
+
+  unibilium = callPackage ../development/libraries/unibilium { };
+
+  unicap = callPackage ../development/libraries/unicap {};
+
+  unicon-lang = callPackage ../development/interpreters/unicon-lang {};
+
+  tsocks = callPackage ../development/libraries/tsocks { };
+
+  unixODBC = callPackage ../development/libraries/unixODBC { };
+
+  unixODBCDrivers = recurseIntoAttrs (callPackages ../development/libraries/unixODBCDrivers { });
+
+  ustr = callPackage ../development/libraries/ustr { };
+
+  usrsctp = callPackage ../development/libraries/usrsctp { };
+
+  usbredir = callPackage ../development/libraries/usbredir { };
+
+  usbrip = callPackage ../tools/security/usbrip { };
+
+  uthash = callPackage ../development/libraries/uthash { };
+
+  uthenticode = callPackage ../development/libraries/uthenticode { };
+
+  utmps = skawarePackages.utmps;
+
+  ucommon = ucommon_openssl;
+
+  ucommon_openssl = callPackage ../development/libraries/ucommon {
+    gnutls = null;
+    openssl = openssl_1_0_2;
+  };
+
+  ucommon_gnutls = lowPrio (ucommon.override {
+    openssl = null;
+    zlib = null;
+    gnutls = gnutls;
+  });
+
+  v8 = callPackage ../development/libraries/v8 { };
+
+  v8_8_x = callPackage ../development/libraries/v8/8_x.nix { };
+
+  vaapiIntel = callPackage ../development/libraries/vaapi-intel { };
+
+  vaapi-intel-hybrid = callPackage ../development/libraries/vaapi-intel-hybrid { };
+
+  vaapiVdpau = callPackage ../development/libraries/vaapi-vdpau { };
+
+  vale = callPackage ../tools/text/vale { };
+
+  valhalla = callPackage ../development/libraries/valhalla {
+    boost = boost.override { enablePython = true; python = python38; };
+  };
+
+  vamp-plugin-sdk = callPackage ../development/libraries/audio/vamp-plugin-sdk { };
+
+  vc = callPackage ../development/libraries/vc { };
+
+  vc_0_7 = callPackage ../development/libraries/vc/0.7.nix { };
+
+  vcdimager = callPackage ../development/libraries/vcdimager { };
+
+  vcg = callPackage ../development/libraries/vcg { };
+
+  vid-stab = callPackage ../development/libraries/vid-stab {
+    inherit (llvmPackages) openmp;
+  };
+
+  vigra = callPackage ../development/libraries/vigra {
+    hdf5 = hdf5.override { usev110Api = true; };
+  };
+
+  vlock = callPackage ../misc/screensavers/vlock { };
+
+  vmime = callPackage ../development/libraries/vmime { };
+
+  vrb = callPackage ../development/libraries/vrb { };
+
+  vrpn = callPackage ../development/libraries/vrpn { };
+
+  vsqlite = callPackage ../development/libraries/vsqlite { };
+
+  vte = callPackage ../development/libraries/vte { };
+
+  vte_290 = callPackage ../development/libraries/vte/2.90.nix { };
+
+  vtk_7 = libsForQt515.callPackage ../development/libraries/vtk/7.x.nix {
+    stdenv = gcc9Stdenv;
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.libs) xpc;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices DiskArbitration
+                                          IOKit CFNetwork Security ApplicationServices
+                                          CoreText IOSurface ImageIO OpenGL GLUT;
+  };
+  vtk_8 = libsForQt515.callPackage ../development/libraries/vtk/8.x.nix {
+    stdenv = gcc9Stdenv;
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.libs) xpc;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices DiskArbitration
+                                          IOKit CFNetwork Security ApplicationServices
+                                          CoreText IOSurface ImageIO OpenGL GLUT;
+  };
+
+  vtk_8_withQt5 = vtk_8.override { enableQt = true; };
+
+  vtk_9 = libsForQt515.callPackage ../development/libraries/vtk/9.x.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.libs) xpc;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices DiskArbitration
+                                          IOKit CFNetwork Security ApplicationServices
+                                          CoreText IOSurface ImageIO OpenGL GLUT;
+  };
+
+  vtk_9_withQt5 = vtk_9.override { enableQt = true; };
+
+  vtk = vtk_8;
+  vtkWithQt5 = vtk_8_withQt5;
+
+  vulkan-extension-layer = callPackage ../tools/graphics/vulkan-extension-layer { };
+  vulkan-headers = callPackage ../development/libraries/vulkan-headers { };
+  vulkan-loader = callPackage ../development/libraries/vulkan-loader { inherit (darwin) moltenvk; };
+  vulkan-tools = callPackage ../tools/graphics/vulkan-tools { };
+  vulkan-tools-lunarg = callPackage ../tools/graphics/vulkan-tools-lunarg { };
+  vulkan-validation-layers = callPackage ../development/tools/vulkan-validation-layers { };
+
+  vxl = callPackage ../development/libraries/vxl {
+    libpng = libpng12;
+    stdenv = gcc6Stdenv; # upstream code incompatible with gcc7
+  };
+
+  waffle = callPackage ../development/libraries/waffle { };
+
+  wally-cli = callPackage ../development/tools/wally-cli { };
+  zsa-udev-rules = callPackage ../os-specific/linux/zsa-udev-rules { };
+
+  wavpack = callPackage ../development/libraries/wavpack { };
+
+  wayland = callPackage ../development/libraries/wayland { };
+  wayland-scanner = wayland.bin;
+
+  wayland-protocols = callPackage ../development/libraries/wayland/protocols.nix { };
+
+  waylandpp = callPackage ../development/libraries/waylandpp { };
+
+  wcslib = callPackage ../development/libraries/science/astronomy/wcslib { };
+
+  webkitgtk = callPackage ../development/libraries/webkitgtk {
+    harfbuzz = harfbuzzFull;
+    inherit (gst_all_1) gst-plugins-base gst-plugins-bad;
+    inherit (darwin) apple_sdk;
+  };
+
+  webkitgtk_4_1 = webkitgtk.override {
+    libsoup = libsoup_3;
+  };
+
+  websocketpp = callPackage ../development/libraries/websocket++ { };
+
+  webrtc-audio-processing_1 = callPackage ../development/libraries/webrtc-audio-processing { };
+  webrtc-audio-processing_0_3 = callPackage ../development/libraries/webrtc-audio-processing/0.3.nix { };
+  # bump when majoring of packages have updated
+  webrtc-audio-processing = webrtc-audio-processing_0_3;
+
+  wildmidi = callPackage ../development/libraries/wildmidi { };
+
+  wiredtiger = callPackage ../development/libraries/wiredtiger { };
+
+  wlr-protocols = callPackage ../development/libraries/wlroots/protocols.nix { };
+
+  wt = wt4;
+  inherit (callPackages ../development/libraries/wt {
+    boost = boost175;
+  })
+    wt3
+    wt4;
+
+  wxformbuilder = callPackage ../development/tools/wxformbuilder { };
+
+  wxGTK = wxGTK28;
+  wxGTK30 = wxGTK30-gtk2;
+  wxGTK31 = wxGTK31-gtk2;
+
+  wxGTK28 = callPackage ../development/libraries/wxwidgets/2.8 { };
+
+  wxGTK29 = callPackage ../development/libraries/wxwidgets/2.9 {
+    inherit (darwin.stubs) setfile;
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QuickTime;
+  };
+
+  wxGTK30-gtk2 = callPackage ../development/libraries/wxwidgets/3.0 {
+    withGtk2 = true;
+    inherit (darwin.stubs) setfile;
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit;
+  };
+
+  wxGTK30-gtk3 = callPackage ../development/libraries/wxwidgets/3.0 {
+    withGtk2 = false;
+    inherit (darwin.stubs) setfile;
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit;
+  };
+
+  wxGTK31-gtk2 = callPackage ../development/libraries/wxwidgets/3.1 {
+    withGtk2 = true;
+    inherit (darwin.stubs) setfile;
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit;
+  };
+
+  wxGTK31-gtk3 = callPackage ../development/libraries/wxwidgets/3.1 {
+    withGtk2 = false;
+    inherit (darwin.stubs) setfile;
+    inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit;
+  };
+
+  wxmac = callPackage ../development/libraries/wxwidgets/3.0/mac.nix { };
+
+  wxSVG = callPackage ../development/libraries/wxSVG {
+    wxGTK = wxGTK30-gtk3;
+  };
+
+  wtk = callPackage ../development/libraries/wtk { };
+
+  x264 = callPackage ../development/libraries/x264 { };
+
+  x265 = callPackage ../development/libraries/x265 { };
+
+  xandikos = callPackage ../servers/xandikos { };
+
+  inherit (callPackages ../development/libraries/xapian { })
+    xapian_1_4;
+  xapian = xapian_1_4;
+
+  xapian-omega = callPackage ../development/libraries/xapian/tools/omega {
+    libmagic = file;
+  };
+
+  xavs = callPackage ../development/libraries/xavs { };
+
+  Xaw3d = callPackage ../development/libraries/Xaw3d { };
+
+  xbase = callPackage ../development/libraries/xbase { };
+
+  xcb-util-cursor = xorg.xcbutilcursor;
+  xcb-util-cursor-HEAD = callPackage ../development/libraries/xcb-util-cursor/HEAD.nix { };
+
+  xcbutilxrm = callPackage ../servers/x11/xorg/xcb-util-xrm.nix { };
+
+  xdo = callPackage ../tools/misc/xdo { };
+
+  xed = callPackage ../development/libraries/xed { };
+
+  xedit = callPackage ../applications/editors/xedit { };
+
+  xine-lib = callPackage ../development/libraries/xine-lib { };
+
+  xautolock = callPackage ../misc/screensavers/xautolock { };
+
+  xercesc = callPackage ../development/libraries/xercesc {};
+
+  xalanc = callPackage ../development/libraries/xalanc {};
+
+  xgboost = callPackage ../development/libraries/xgboost { };
+
+  xgeometry-select = callPackage ../tools/X11/xgeometry-select { };
+
+  # Avoid using this. It isn't really a wrapper anymore, but we keep the name.
+  xlibsWrapper = callPackage ../development/libraries/xlibs-wrapper {
+    packages = [
+      freetype fontconfig xorg.xorgproto xorg.libX11 xorg.libXt
+      xorg.libXft xorg.libXext xorg.libSM xorg.libICE
+    ];
+  };
+
+  xmlada = callPackage ../development/libraries/ada/xmlada { };
+
+  xmlrpc_c = callPackage ../development/libraries/xmlrpc-c { };
+
+  xmlsec = callPackage ../development/libraries/xmlsec { };
+
+  xml-security-c = callPackage ../development/libraries/xml-security-c { };
+
+  xml-tooling-c = callPackage ../development/libraries/xml-tooling-c { };
+
+  xlslib = callPackage ../development/libraries/xlslib { };
+
+  xsimd = callPackage ../development/libraries/xsimd { };
+
+  xtensor = callPackage ../development/libraries/xtensor { };
+
+  xtl = callPackage ../development/libraries/xtl { };
+
+  xvidcore = callPackage ../development/libraries/xvidcore { };
+
+  xxHash = callPackage ../development/libraries/xxHash {};
+
+  xylib = callPackage ../development/libraries/xylib { };
+
+  yajl = callPackage ../development/libraries/yajl { };
+
+  yder = callPackage ../development/libraries/yder { };
+
+  yojimbo = callPackage ../development/libraries/yojimbo { };
+
+  yubioath-desktop = libsForQt5.callPackage ../applications/misc/yubioath-desktop { };
+
+  yubico-pam = callPackage ../development/libraries/yubico-pam { };
+
+  yubico-piv-tool = callPackage ../tools/misc/yubico-piv-tool {
+    inherit (darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  yubikey-manager = callPackage ../tools/misc/yubikey-manager { };
+
+  yubikey-manager-qt = libsForQt5.callPackage ../tools/misc/yubikey-manager-qt { };
+
+  yubikey-personalization = callPackage ../tools/misc/yubikey-personalization { };
+
+  yubikey-personalization-gui = libsForQt5.callPackage ../tools/misc/yubikey-personalization-gui { };
+
+  yubikey-agent = callPackage ../tools/security/yubikey-agent { };
+
+  yubikey-touch-detector = callPackage ../tools/security/yubikey-touch-detector { };
+
+  zchunk = callPackage ../development/libraries/zchunk { };
+
+  zeitgeist = callPackage ../development/libraries/zeitgeist { };
+
+  zlib = callPackage ../development/libraries/zlib { };
+
+  zlib-ng = callPackage ../development/libraries/zlib-ng { };
+
+  libdynd = callPackage ../development/libraries/libdynd { };
+
+  zlog = callPackage ../development/libraries/zlog { };
+
+  zeromq4 = callPackage ../development/libraries/zeromq/4.x.nix {};
+  zeromq = zeromq4;
+
+  cppzmq = callPackage ../development/libraries/cppzmq {};
+
+  czmq = callPackage ../development/libraries/czmq {};
+
+  zmqpp = callPackage ../development/libraries/zmqpp { };
+
+  libzra = callPackage ../development/libraries/libzra { };
+
+  zig = callPackage ../development/compilers/zig {
+    llvmPackages = llvmPackages_13;
+  };
+  zig_0_8_1 = callPackage ../development/compilers/zig/0.8.1.nix {
+    llvmPackages = llvmPackages_12;
+  };
+
+  zimlib = callPackage ../development/libraries/zimlib { };
+
+  zita-convolver = callPackage ../development/libraries/audio/zita-convolver { };
+
+  zita-alsa-pcmi = callPackage ../development/libraries/audio/zita-alsa-pcmi { };
+
+  zita-resampler = callPackage ../development/libraries/audio/zita-resampler { };
+
+  zz = callPackage ../development/compilers/zz { };
+
+  zziplib = callPackage ../development/libraries/zziplib { };
+
+  glpng = callPackage ../development/libraries/glpng { };
+
+  gsignond = callPackage ../development/libraries/gsignond {
+    plugins = [];
+  };
+
+  gsignondPlugins = recurseIntoAttrs {
+    sasl = callPackage ../development/libraries/gsignond/plugins/sasl.nix { };
+    oauth = callPackage ../development/libraries/gsignond/plugins/oauth.nix { };
+    lastfm = callPackage ../development/libraries/gsignond/plugins/lastfm.nix { };
+    mail = callPackage ../development/libraries/gsignond/plugins/mail.nix { };
+  };
+
+  ### DEVELOPMENT / LIBRARIES / AGDA
+
+  agdaPackages = callPackage ./agda-packages.nix {
+    inherit (haskellPackages) Agda;
+  };
+  agda = agdaPackages.agda;
+
+  ### DEVELOPMENT / LIBRARIES / BASH
+
+  bash-preexec = callPackage ../development/libraries/bash/bash-preexec { };
+
+  ### DEVELOPMENT / LIBRARIES / JAVA
+
+  commonsBcel = callPackage ../development/libraries/java/commons/bcel { };
+
+  commonsBsf = callPackage ../development/libraries/java/commons/bsf { };
+
+  commonsCompress = callPackage ../development/libraries/java/commons/compress { };
+
+  commonsDaemon = callPackage ../development/libraries/java/commons/daemon { };
+
+  commonsFileUpload = callPackage ../development/libraries/java/commons/fileupload { };
+
+  commonsLang = callPackage ../development/libraries/java/commons/lang { };
+
+  commonsLogging = callPackage ../development/libraries/java/commons/logging { };
+
+  commonsIo = callPackage ../development/libraries/java/commons/io { };
+
+  commonsMath = callPackage ../development/libraries/java/commons/math { };
+
+  fastjar = callPackage ../development/tools/java/fastjar { };
+
+  httpunit = callPackage ../development/libraries/java/httpunit { };
+
+  javaCup = callPackage ../development/libraries/java/cup {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  jdom = callPackage ../development/libraries/java/jdom { };
+
+  jflex = callPackage ../development/libraries/java/jflex { };
+
+  lombok = callPackage ../development/libraries/java/lombok { };
+
+  lucene = callPackage ../development/libraries/java/lucene { };
+
+  lucenepp = callPackage ../development/libraries/lucene++ { };
+
+  mockobjects = callPackage ../development/libraries/java/mockobjects { };
+
+  saxonb = saxonb_8_8;
+
+  inherit (callPackages ../development/libraries/java/saxon { })
+    saxon
+    saxonb_8_8
+    saxonb_9_1
+    saxon-he;
+
+  smack = callPackage ../development/libraries/java/smack { };
+
+  swt = callPackage ../development/libraries/java/swt { };
+  swt_jdk8 = callPackage ../development/libraries/java/swt {
+    jdk = jdk8;
+  };
+
+
+  ### DEVELOPMENT / LIBRARIES / JAVASCRIPT
+
+  yuicompressor = callPackage ../development/tools/yuicompressor { };
+
+  ### DEVELOPMENT / BOWER MODULES (JAVASCRIPT)
+
+  buildBowerComponents = callPackage ../development/bower-modules/generic { };
+
+  ### DEVELOPMENT / GO MODULES
+
+  buildGo116Package = callPackage ../development/go-packages/generic {
+    go = buildPackages.go_1_16;
+  };
+  buildGo117Package = callPackage ../development/go-packages/generic {
+    go = buildPackages.go_1_17;
+  };
+  buildGo118Package = callPackage ../development/go-packages/generic {
+    go = buildPackages.go_1_18;
+  };
+
+  buildGoPackage = buildGo117Package;
+
+  buildGo116Module = callPackage ../development/go-modules/generic {
+    go = buildPackages.go_1_16;
+  };
+  buildGo117Module = callPackage ../development/go-modules/generic {
+    go = buildPackages.go_1_17;
+  };
+  buildGo118Module = callPackage ../development/go-modules/generic {
+    go = buildPackages.go_1_18;
+  };
+
+  buildGoModule = buildGo117Module;
+
+  go2nix = callPackage ../development/tools/go2nix { };
+
+  leaps = callPackage ../development/tools/leaps { };
+
+  vgo2nix = callPackage ../development/tools/vgo2nix { };
+
+  ws = callPackage ../development/tools/ws { };
+
+  ### DEVELOPMENT / JAVA MODULES
+
+  javaPackages = recurseIntoAttrs (callPackage ./java-packages.nix { });
+
+  ### DEVELOPMENT / LISP MODULES
+
+  asdf = callPackage ../development/lisp-modules/asdf {
+    texLive = null;
+  };
+
+  # QuickLisp minimal version
+  asdf_2_26 = callPackage ../development/lisp-modules/asdf/2.26.nix {
+    texLive = null;
+  };
+  # Currently most popular
+  asdf_3_1 = callPackage ../development/lisp-modules/asdf/3.1.nix {
+    texLive = null;
+  };
+
+  clwrapperFunction = callPackage ../development/lisp-modules/clwrapper;
+
+  wrapLisp = lisp: clwrapperFunction { inherit lisp; };
+
+  lispPackagesFor = clwrapper: callPackage ../development/lisp-modules/lisp-packages.nix {
+    inherit clwrapper;
+  };
+
+  lispPackages = recurseIntoAttrs (quicklispPackages //
+    (lispPackagesFor (wrapLisp sbcl)));
+
+  quicklispPackagesFor = clwrapper: callPackage ../development/lisp-modules/quicklisp-to-nix.nix {
+    inherit clwrapper;
+  };
+  quicklispPackagesClisp = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp clisp));
+  quicklispPackagesSBCL = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp sbcl));
+  quicklispPackagesECL = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp ecl));
+  quicklispPackagesCCL = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp ccl));
+  quicklispPackagesABCL = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp abcl));
+  quicklispPackagesGCL = dontRecurseIntoAttrs (quicklispPackagesFor (wrapLisp gcl));
+  quicklispPackages = quicklispPackagesSBCL;
+
+  ### DEVELOPMENT / PERL MODULES
+
+  perlInterpreters = callPackages ../development/interpreters/perl {};
+  inherit (perlInterpreters) perl532 perl534 perldevel;
+
+  perl532Packages = recurseIntoAttrs perl532.pkgs;
+  perl534Packages = recurseIntoAttrs perl534.pkgs;
+  perldevelPackages = perldevel.pkgs;
+
+  perl = perl534;
+  perlPackages = perl534Packages;
+
+  ack = perlPackages.ack;
+
+  perlcritic = perlPackages.PerlCritic;
+
+  sqitchMysql = (callPackage ../development/tools/misc/sqitch {
+    mysqlSupport = true;
+  }).overrideAttrs (_: { pname = "sqitch-mysql"; });
+
+  sqitchPg = (callPackage ../development/tools/misc/sqitch {
+    postgresqlSupport = true;
+  }).overrideAttrs (_: { pname = "sqitch-pg"; });
+
+  ### DEVELOPMENT / R MODULES
+
+  R = callPackage ../applications/science/math/R {
+    # TODO: split docs into a separate output
+    texLive = texlive.combine {
+      inherit (texlive) scheme-small inconsolata helvetic texinfo fancyvrb cm-super;
+    };
+    withRecommendedPackages = false;
+    inherit (darwin.apple_sdk.frameworks) Cocoa Foundation;
+    inherit (darwin) libobjc;
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  rWrapper = callPackage ../development/r-modules/wrapper.nix {
+    recommendedPackages = with rPackages; [
+      boot class cluster codetools foreign KernSmooth lattice MASS
+      Matrix mgcv nlme nnet rpart spatial survival
+    ];
+    # Override this attribute to register additional libraries.
+    packages = [];
+  };
+
+  rstudioWrapper = libsForQt5.callPackage ../development/r-modules/wrapper-rstudio.nix {
+    recommendedPackages = with rPackages; [
+      boot class cluster codetools foreign KernSmooth lattice MASS
+      Matrix mgcv nlme nnet rpart spatial survival
+    ];
+    # Override this attribute to register additional libraries.
+    packages = [];
+  };
+
+  rstudioServerWrapper = rstudioWrapper.override { rstudio = rstudio-server; };
+
+  rPackages = dontRecurseIntoAttrs (callPackage ../development/r-modules {
+    overrides = (config.rPackageOverrides or (_: {})) pkgs;
+  });
+
+  ### SERVERS
+
+  _389-ds-base = callPackage ../servers/ldap/389 { };
+
+  adguardhome = callPackage ../servers/adguardhome {};
+
+  alerta = callPackage ../servers/monitoring/alerta/client.nix { };
+
+  alerta-server = callPackage ../servers/monitoring/alerta { };
+
+  alps = callPackage ../servers/alps { };
+
+  apacheHttpd_2_4 = callPackage ../servers/http/apache-httpd/2.4.nix { };
+  apacheHttpd = apacheHttpd_2_4;
+
+  apacheHttpdPackagesFor = apacheHttpd: self: let callPackage = newScope self; in {
+    inherit apacheHttpd;
+
+    mod_auth_mellon = callPackage ../servers/http/apache-modules/mod_auth_mellon { };
+
+    # Redwax collection
+    mod_ca = callPackage ../servers/http/apache-modules/mod_ca { };
+    mod_crl = callPackage ../servers/http/apache-modules/mod_crl { };
+    mod_csr = callPackage ../servers/http/apache-modules/mod_csr { };
+    mod_cspnonce = callPackage ../servers/http/apache-modules/mod_cspnonce { };
+    mod_ocsp = callPackage ../servers/http/apache-modules/mod_ocsp{ };
+    mod_scep = callPackage ../servers/http/apache-modules/mod_scep { };
+    mod_pkcs12 = callPackage ../servers/http/apache-modules/mod_pkcs12 { };
+    mod_spkac= callPackage ../servers/http/apache-modules/mod_spkac { };
+    mod_timestamp = callPackage ../servers/http/apache-modules/mod_timestamp { };
+
+    mod_dnssd = callPackage ../servers/http/apache-modules/mod_dnssd { };
+
+    mod_evasive = throw "mod_evasive is not supported on Apache httpd 2.4";
+
+    mod_perl = callPackage ../servers/http/apache-modules/mod_perl { };
+
+    mod_fastcgi = callPackage ../servers/http/apache-modules/mod_fastcgi { };
+
+    mod_python = callPackage ../servers/http/apache-modules/mod_python { };
+
+    mod_tile = callPackage ../servers/http/apache-modules/mod_tile { };
+
+    mod_wsgi  = self.mod_wsgi2;
+    mod_wsgi2 = callPackage ../servers/http/apache-modules/mod_wsgi { python = python2; ncurses = null; };
+    mod_wsgi3 = callPackage ../servers/http/apache-modules/mod_wsgi { python = python3; };
+
+    mod_itk = callPackage ../servers/http/apache-modules/mod_itk { };
+
+    php = pkgs.php.override { inherit apacheHttpd; };
+
+    subversion = pkgs.subversion.override { httpServer = true; inherit apacheHttpd; };
+  };
+
+  apacheHttpdPackages_2_4 = recurseIntoAttrs (apacheHttpdPackagesFor apacheHttpd_2_4 apacheHttpdPackages_2_4);
+  apacheHttpdPackages = apacheHttpdPackages_2_4;
+
+  appdaemon = callPackage ../servers/home-assistant/appdaemon.nix { };
+
+  archiveopteryx = callPackage ../servers/mail/archiveopteryx { };
+
+  atlassian-confluence = callPackage ../servers/atlassian/confluence.nix { };
+  atlassian-crowd = callPackage ../servers/atlassian/crowd.nix { };
+  atlassian-jira = callPackage ../servers/atlassian/jira.nix { };
+
+  cadvisor = callPackage ../servers/monitoring/cadvisor { };
+
+  cassandra_2_1 = callPackage ../servers/nosql/cassandra/2.1.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  cassandra_2_2 = callPackage ../servers/nosql/cassandra/2.2.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  cassandra_3_0 = callPackage ../servers/nosql/cassandra/3.0.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  cassandra_3_11 = callPackage ../servers/nosql/cassandra/3.11.nix {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  cassandra = cassandra_3_11;
+
+  apache-jena = callPackage ../servers/nosql/apache-jena/binary.nix {
+    java = jre;
+  };
+
+  apache-jena-fuseki = callPackage ../servers/nosql/apache-jena/fuseki-binary.nix {
+    java = jre;
+  };
+
+  apcupsd = callPackage ../servers/apcupsd { };
+
+  inherit (callPackages ../servers/asterisk { })
+    asterisk asterisk-stable asterisk-lts
+    asterisk_13 asterisk_16 asterisk_17 asterisk_18;
+
+  asterisk-module-sccp = callPackage ../servers/asterisk/sccp { };
+
+  sabnzbd = callPackage ../servers/sabnzbd { };
+
+  bftpd = callPackage ../servers/ftp/bftpd {};
+
+  bind = callPackage ../servers/dns/bind { };
+  dnsutils = bind.dnsutils;
+  dig = bind.dnsutils;
+
+  bird = callPackage ../servers/bird { };
+
+  bosun = callPackage ../servers/monitoring/bosun { };
+
+  cayley = callPackage ../servers/cayley { };
+
+  charybdis = callPackage ../servers/irc/charybdis {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  clamsmtp = callPackage ../servers/mail/clamsmtp { };
+
+  clickhouse = callPackage ../servers/clickhouse {
+    # upstream requires llvm10 as of v20.11.4.13
+    inherit (llvmPackages_10) clang-unwrapped lld llvm;
+    llvm-bintools = llvmPackages_10.bintools;
+  };
+
+  clickhouse-cli = with python3Packages; toPythonApplication clickhouse-cli;
+
+  clickhouse-backup = callPackage ../development/tools/database/clickhouse-backup { };
+
+  couchdb3 = callPackage ../servers/http/couchdb/3.nix {
+    erlang = erlangR22;
+  };
+
+  dcnnt = python3Packages.callPackage ../servers/dcnnt { };
+
+  dendrite = callPackage ../servers/dendrite { };
+
+  dex-oidc = callPackage ../servers/dex { };
+
+  dex2jar = callPackage ../development/tools/java/dex2jar { };
+
+  doh-proxy = callPackage ../servers/dns/doh-proxy { };
+
+  doh-proxy-rust = callPackage ../servers/dns/doh-proxy-rust {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  dgraph = callPackage ../servers/dgraph { };
+
+  dico = callPackage ../servers/dico { };
+
+  dict = callPackage ../servers/dict {
+    libmaa = callPackage ../servers/dict/libmaa.nix {};
+  };
+
+  dictdDBs = recurseIntoAttrs (callPackages ../servers/dict/dictd-db.nix {});
+
+  dictDBCollector = callPackage ../servers/dict/dictd-db-collector.nix {};
+
+  diod = callPackage ../servers/diod { lua = lua5_1; };
+
+  directx-shader-compiler = callPackage ../tools/graphics/directx-shader-compiler {};
+
+  dkimproxy = callPackage ../servers/mail/dkimproxy { };
+
+  do-agent = callPackage ../servers/monitoring/do-agent { };
+
+  dodgy = with python3Packages; toPythonApplication dodgy;
+
+  dovecot = callPackage ../servers/mail/dovecot { };
+  dovecot_pigeonhole = callPackage ../servers/mail/dovecot/plugins/pigeonhole { };
+  dovecot_fts_xapian = callPackage ../servers/mail/dovecot/plugins/fts_xapian { };
+
+  dspam = callPackage ../servers/mail/dspam { };
+
+  engelsystem = callPackage ../servers/web-apps/engelsystem { php = php74; };
+
+  envoy = callPackage ../servers/http/envoy {
+    jdk = openjdk11;
+    gn = gn1924;
+  };
+
+  ergochat = callPackage ../servers/irc/ergochat { };
+
+  etcd = etcd_3_3;
+  etcd_3_3 = callPackage ../servers/etcd/3.3.nix { };
+  etcd_3_4 = callPackage ../servers/etcd/3.4.nix { };
+  etcd_3_5 = callPackage ../servers/etcd/3.5.nix { };
+
+  ejabberd = callPackage ../servers/xmpp/ejabberd { };
+
+  exhibitor = callPackage ../servers/exhibitor { };
+
+  hyp = callPackage ../servers/http/hyp { };
+
+  podgrab = callPackage ../servers/misc/podgrab { };
+
+  prosody = callPackage ../servers/xmpp/prosody {
+    # _compat can probably be removed on next minor version after 0.10.0
+    lua = lua5_2_compat;
+    withExtraLibs = [];
+    withExtraLuaPackages = _: [];
+  };
+
+  prosody-filer = callPackage ../servers/xmpp/prosody-filer { };
+
+  biboumi = callPackage ../servers/xmpp/biboumi { };
+
+  elasticmq-server-bin = callPackage ../servers/elasticmq-server-bin {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  eventstore = callPackage ../servers/nosql/eventstore {
+    Nuget = dotnetPackages.Nuget;
+  };
+
+  exim = callPackage ../servers/mail/exim { };
+
+  fcgiwrap = callPackage ../servers/fcgiwrap { };
+
+  fedigroups = callPackage ../servers/fedigroups {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  felix = callPackage ../servers/felix { };
+
+  felix_remoteshell = callPackage ../servers/felix/remoteshell.nix { };
+
+  fingerd_bsd = callPackage ../servers/fingerd/bsd-fingerd { };
+
+  inherit (callPackages ../servers/firebird { }) firebird_4 firebird_3 firebird_2_5 firebird;
+
+  freeradius = callPackage ../servers/freeradius { };
+
+  freeswitch = callPackage ../servers/sip/freeswitch {
+    inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  };
+
+  fusionInventory = callPackage ../servers/monitoring/fusion-inventory { };
+
+  gatling = callPackage ../servers/http/gatling { };
+
+  gitlab-pages = callPackage ../servers/http/gitlab-pages { };
+
+  glabels = callPackage ../applications/graphics/glabels { };
+
+  nats-server = callPackage ../servers/nats-server { };
+
+  gofish = callPackage ../servers/gopher/gofish { };
+
+  grafana = callPackage ../servers/monitoring/grafana { };
+  grafanaPlugins = callPackages ../servers/monitoring/grafana/plugins { };
+
+  grafana-agent = callPackage ../servers/monitoring/grafana-agent { };
+
+  grafana-loki = callPackage ../servers/monitoring/loki { };
+
+  promtail = grafana-loki.overrideAttrs (o: {
+    pname = "promtail";
+    subPackages = ["clients/cmd/promtail"];
+    CGO_ENABLED = 1;
+  });
+
+  grafana_reporter = callPackage ../servers/monitoring/grafana-reporter { };
+
+  grafana-image-renderer = callPackage ../servers/monitoring/grafana-image-renderer { };
+
+  gerbera = callPackage ../servers/gerbera {};
+
+  gobetween = callPackage ../servers/gobetween { };
+
+  gobgpd = callPackage ../servers/misc/gobgpd { };
+
+  graph-cli = callPackage ../tools/graphics/graph-cli { };
+
+  h2o = callPackage ../servers/http/h2o { };
+
+  haka = callPackage ../tools/security/haka { };
+
+  hashi-ui = callPackage ../servers/hashi-ui {};
+
+  hasura-graphql-engine = haskell.lib.compose.justStaticExecutables haskellPackages.graphql-engine;
+
+  hasura-cli = callPackage ../servers/hasura/cli.nix { };
+
+  heapster = callPackage ../servers/monitoring/heapster { };
+
+  hbase = callPackage ../servers/hbase {};
+
+  headphones = callPackage ../servers/headphones {};
+
+  hiawatha = callPackage ../servers/http/hiawatha {};
+
+  home-assistant = callPackage ../servers/home-assistant { };
+
+  home-assistant-cli = callPackage ../servers/home-assistant/cli.nix { };
+
+  home-assistant-component-tests = recurseIntoAttrs home-assistant.tests.components;
+
+  hqplayerd = callPackage ../servers/hqplayerd { };
+
+  https-dns-proxy = callPackage ../servers/dns/https-dns-proxy { };
+
+  hydron = callPackage ../servers/hydron { };
+
+  hyprspace = callPackage ../applications/networking/hyprspace { inherit (darwin) iproute2mac; };
+
+  ic-keysmith = callPackage ../tools/security/ic-keysmith { };
+
+  icecream = callPackage ../servers/icecream { };
+
+  icingaweb2-ipl = callPackage ../servers/icingaweb2/ipl.nix { };
+  icingaweb2-thirdparty = callPackage ../servers/icingaweb2/thirdparty.nix { };
+  icingaweb2 = callPackage ../servers/icingaweb2 { };
+  icingaweb2Modules = {
+    theme-april = callPackage ../servers/icingaweb2/theme-april { };
+    theme-lsd = callPackage ../servers/icingaweb2/theme-lsd { };
+    theme-particles = callPackage ../servers/icingaweb2/theme-particles { };
+    theme-snow = callPackage ../servers/icingaweb2/theme-snow { };
+    theme-spring = callPackage ../servers/icingaweb2/theme-spring { };
+  };
+
+  inspircd = callPackage ../servers/irc/inspircd { };
+
+  inspircdMinimal = inspircd.override { extraModules = []; };
+
+  imgproxy = callPackage ../servers/imgproxy { };
+
+  ircdog = callPackage ../applications/networking/irc/ircdog { };
+
+  ircdHybrid = callPackage ../servers/irc/ircd-hybrid { };
+
+  janus-gateway = callPackage ../servers/janus-gateway { };
+
+  jboss = callPackage ../servers/http/jboss { };
+
+  jboss_mysql_jdbc = callPackage ../servers/http/jboss/jdbc/mysql { };
+
+  jetty = callPackage ../servers/http/jetty { };
+
+  jibri = callPackage ../servers/jibri { };
+
+  jicofo = callPackage ../servers/jicofo { };
+
+  jitsi-meet = callPackage ../servers/web-apps/jitsi-meet { };
+
+  jitsi-meet-prosody = callPackage ../misc/jitsi-meet-prosody { };
+
+  jitsi-videobridge = callPackage ../servers/jitsi-videobridge { };
+
+  kapowbang = callPackage ../servers/kapowbang { };
+
+  keycloak = callPackage ../servers/keycloak { };
+
+  knot-dns = callPackage ../servers/dns/knot-dns { };
+  knot-resolver = callPackage ../servers/dns/knot-resolver { };
+
+  rdkafka = callPackage ../development/libraries/rdkafka { };
+
+  leafnode = callPackage ../servers/news/leafnode { };
+
+  lemmy-server = callPackage ../servers/web-apps/lemmy/server.nix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  lemmy-ui = callPackage ../servers/web-apps/lemmy/ui.nix {
+    nodejs = nodejs-14_x;
+  };
+
+  lighttpd = callPackage ../servers/http/lighttpd { };
+
+  livepeer = callPackage ../servers/livepeer { };
+
+  lwan = callPackage ../servers/http/lwan { };
+
+  labelImg = callPackage ../applications/science/machine-learning/labelimg { };
+
+  mackerel-agent = callPackage ../servers/monitoring/mackerel-agent { };
+
+  mailman = callPackage ../servers/mail/mailman/wrapped.nix {
+    python3 = python3.override {
+      packageOverrides = self: super: {
+        sqlalchemy = super.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
+          version = "1.3.24";
+          src = oldAttrs.src.override {
+            inherit version;
+            sha256 = "ebbb777cbf9312359b897bf81ba00dae0f5cb69fba2a18265dcc18a6f5ef7519";
+          };
+        });
+      };
+    };
+  };
+
+  mailman-rss = callPackage ../tools/misc/mailman-rss { };
+
+  mailman-web = with python3.pkgs; toPythonApplication mailman-web;
+
+  listadmin = callPackage ../applications/networking/listadmin {};
+
+  maker-panel = callPackage ../tools/misc/maker-panel { };
+
+  mastodon = callPackage ../servers/mastodon { };
+
+  materialize = callPackage ../servers/sql/materialize {
+    inherit (buildPackages.darwin) bootstrap_cmds;
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation;
+  };
+
+  matrix-alertmanager = callPackage ../servers/monitoring/matrix-alertmanager { };
+
+  mattermost = callPackage ../servers/mattermost { };
+  matterircd = callPackage ../servers/mattermost/matterircd.nix { };
+  matterbridge = callPackage ../servers/matterbridge { };
+
+  mattermost-desktop = callPackage ../applications/networking/instant-messengers/mattermost-desktop { };
+
+  mbtileserver = callPackage ../servers/mbtileserver { };
+
+  memcached = callPackage ../servers/memcached {};
+
+  meteor = callPackage ../servers/meteor { };
+
+  micronaut = callPackage ../development/tools/micronaut {};
+
+  minio = callPackage ../servers/minio { };
+
+  mkchromecast = libsForQt5.callPackage ../applications/networking/mkchromecast { };
+
+  # Backwards compatibility.
+  mod_dnssd = apacheHttpdPackages.mod_dnssd;
+  mod_fastcgi = apacheHttpdPackages.mod_fastcgi;
+  mod_python = apacheHttpdPackages.mod_python;
+  mod_wsgi = apacheHttpdPackages.mod_wsgi;
+  mod_ca = apacheHttpdPackages.mod_ca;
+  mod_crl = apacheHttpdPackages.mod_crl;
+  mod_csr = apacheHttpdPackages.mod_csr;
+  mod_ocsp = apacheHttpdPackages.mod_ocsp;
+  mod_scep = apacheHttpdPackages.mod_scep;
+  mod_spkac = apacheHttpdPackages.mod_spkac;
+  mod_pkcs12 = apacheHttpdPackages.mod_pkcs12;
+  mod_timestamp = apacheHttpdPackages.mod_timestamp;
+
+  inherit (callPackages ../servers/mpd {
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox AudioUnit;
+  }) mpd mpd-small mpdWithFeatures;
+
+  libmpdclient = callPackage ../servers/mpd/libmpdclient.nix { };
+
+  mpdscribble = callPackage ../tools/misc/mpdscribble { };
+
+  mtprotoproxy = python3.pkgs.callPackage ../servers/mtprotoproxy { };
+
+  micro-httpd = callPackage ../servers/http/micro-httpd { };
+
+  miniHttpd = callPackage ../servers/http/mini-httpd {};
+
+  mlflow-server = callPackage ../servers/mlflow-server { };
+
+  mlmmj = callPackage ../servers/mail/mlmmj { };
+
+  moodle = callPackage ../servers/web-apps/moodle { };
+
+  moodle-utils = callPackage ../servers/web-apps/moodle/moodle-utils.nix { };
+
+  morty = callPackage ../servers/web-apps/morty { };
+
+  mullvad-vpn = callPackage ../applications/networking/mullvad-vpn { };
+
+  mycorrhiza = callPackage ../servers/mycorrhiza {
+    buildGoModule = buildGo116Module;
+  };
+
+  myserver = callPackage ../servers/http/myserver { };
+
+  napalm = with python3Packages; toPythonApplication (
+    napalm.overridePythonAttrs (attrs: {
+      # add community frontends that depend on the napalm python package
+      propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
+        napalm-hp-procurve
+      ];
+    })
+  );
+
+  nas = callPackage ../servers/nas { };
+
+  nats-streaming-server = callPackage ../servers/nats-streaming-server { };
+
+  neard = callPackage ../servers/neard { };
+
+  networkaudiod = callPackage ../servers/networkaudiod { };
+
+  unifiedpush-common-proxies = callPackage ../servers/unifiedpush-common-proxies { };
+
+  unit = callPackage ../servers/http/unit { };
+
+  ncdns = callPackage ../servers/dns/ncdns {
+    buildGoModule = buildGo116Module;
+  };
+
+  nginx = nginxStable;
+
+  nginxQuic = callPackage ../servers/http/nginx/quic.nix {
+    zlib = zlib-ng.override { withZlibCompat = true; };
+    withPerl = false;
+    # We don't use `with` statement here on purpose!
+    # See https://github.com/NixOS/nixpkgs/pull/10474#discussion_r42369334
+    modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
+    # Use latest boringssl to allow http3 support
+    openssl = quictls;
+  };
+
+  nginxStable = callPackage ../servers/http/nginx/stable.nix {
+    zlib = zlib-ng.override { withZlibCompat = true; };
+    withPerl = false;
+    # We don't use `with` statement here on purpose!
+    # See https://github.com/NixOS/nixpkgs/pull/10474#discussion_r42369334
+    modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
+  };
+
+  nginxMainline = callPackage ../servers/http/nginx/mainline.nix {
+    zlib = zlib-ng.override { withZlibCompat = true; };
+    withKTLS = true;
+    withPerl = false;
+    # We don't use `with` statement here on purpose!
+    # See https://github.com/NixOS/nixpkgs/pull/10474#discussion_r42369334
+    modules = [ nginxModules.dav nginxModules.moreheaders ];
+  };
+
+  nginxModules = recurseIntoAttrs (callPackage ../servers/http/nginx/modules.nix { });
+
+  # We should move to dynmaic modules and create a nginxFull package with all modules
+  nginxShibboleth = nginxStable.override {
+    modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders nginxModules.shibboleth ];
+  };
+
+  libmodsecurity = callPackage ../tools/security/libmodsecurity { };
+
+  ngircd = callPackage ../servers/irc/ngircd { };
+
+  nix-binary-cache = callPackage ../servers/http/nix-binary-cache {};
+
+  nix-tour = callPackage ../applications/misc/nix-tour {};
+
+  nosqli = callPackage ../tools/security/nosqli { };
+
+  nsd = callPackage ../servers/dns/nsd (config.nsd or {});
+
+  nsq = callPackage ../servers/nsq { };
+
+  oauth2-proxy = callPackage ../servers/oauth2-proxy { };
+
+  openbgpd = callPackage ../servers/openbgpd { };
+
+  openafs_1_8 = callPackage ../servers/openafs/1.8 { tsmbac = null; ncurses = null; };
+  openafs_1_9 = callPackage ../servers/openafs/1.9 { tsmbac = null; ncurses = null; };
+  # Current stable release; don't backport release updates!
+  openafs = openafs_1_8;
+
+  openresty = callPackage ../servers/http/openresty {
+    withPerl = false;
+    modules = [];
+  };
+
+  opensmtpd = callPackage ../servers/mail/opensmtpd { };
+  opensmtpd-extras = callPackage ../servers/mail/opensmtpd/extras.nix { };
+  opensmtpd-filter-rspamd = callPackage ../servers/mail/opensmtpd/filter-rspamd.nix { };
+
+  openxpki = callPackage ../servers/openxpki { };
+
+  openxr-loader = callPackage ../development/libraries/openxr-loader { };
+
+  osrm-backend = callPackage ../servers/osrm-backend { };
+
+  oven-media-engine = callPackage ../servers/misc/oven-media-engine { };
+
+  p910nd = callPackage ../servers/p910nd { };
+
+  petidomo = callPackage ../servers/mail/petidomo { };
+
+  pict-rs = callPackage ../servers/web-apps/pict-rs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    ffmpeg = ffmpeg_4;
+  };
+
+  popa3d = callPackage ../servers/mail/popa3d { };
+
+  postfix = callPackage ../servers/mail/postfix { };
+
+  postfixadmin = callPackage ../servers/postfixadmin { };
+
+  postsrsd = callPackage ../servers/mail/postsrsd { };
+
+  rspamd = callPackage ../servers/mail/rspamd { };
+
+  pfixtools = callPackage ../servers/mail/postfix/pfixtools.nix {
+    gperf = gperf_3_0;
+  };
+  pflogsumm = callPackage ../servers/mail/postfix/pflogsumm.nix { };
+
+  pomerium = callPackage ../servers/http/pomerium { };
+  pomerium-cli = callPackage ../tools/security/pomerium-cli { };
+
+  postgrey = callPackage ../servers/mail/postgrey { };
+
+  pshs = callPackage ../servers/http/pshs { };
+
+  quark = callPackage ../servers/http/quark { };
+
+  soft-serve = callPackage ../servers/soft-serve { };
+
+  sympa = callPackage ../servers/mail/sympa { };
+
+  system-sendmail = lowPrio (callPackage ../servers/mail/system-sendmail { });
+
+  # PulseAudio daemons
+
+  hsphfpd = callPackage ../servers/pulseaudio/hsphfpd.nix { };
+
+  pulseaudio-hsphfpd = callPackage ../servers/pulseaudio/pali.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
+  };
+
+  pulseaudio = callPackage ../servers/pulseaudio ({
+    inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
+  } // lib.optionalAttrs stdenv.isDarwin {
+    # Default autoreconfHook (2.70) fails on darwin,
+    # with "configure: error: *** Compiler does not support -std=gnu11"
+    autoreconfHook = buildPackages.autoreconfHook269;
+  });
+
+  qpaeq = libsForQt5.callPackage ../servers/pulseaudio/qpaeq.nix { };
+
+  pulseaudioFull = pulseaudio.override {
+    x11Support = true;
+    jackaudioSupport = true;
+    airtunesSupport = true;
+    bluetoothSupport = true;
+    remoteControlSupport = true;
+    zeroconfSupport = true;
+  };
+
+  # libpulse implementations
+  libpulseaudio-vanilla = pulseaudio.override {
+    libOnly = true;
+  };
+
+  apulse = callPackage ../misc/apulse { };
+
+  libpressureaudio = callPackage ../misc/apulse/pressureaudio.nix {
+    libpulseaudio = libpulseaudio-vanilla; # headers only
+  };
+
+  libcardiacarrest = callPackage ../misc/libcardiacarrest {
+    libpulseaudio = libpulseaudio-vanilla; # meta only
+  };
+
+  libpulseaudio = libpulseaudio-vanilla;
+
+  easyeffects = callPackage ../applications/audio/easyeffects { };
+
+  pulseeffects-legacy = callPackage ../applications/audio/pulseeffects-legacy {
+    boost = boost172;
+  };
+
+  tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors { };
+
+  tomcat-native = callPackage ../servers/http/tomcat/tomcat-native.nix { };
+
+  pg_featureserv = callPackage ../servers/pg_featureserv { };
+
+  pg_tileserv = callPackage ../servers/pg_tileserv { };
+
+  pies = callPackage ../servers/pies { };
+
+  rpcbind = callPackage ../servers/rpcbind { };
+
+  rpcsvc-proto = callPackage ../tools/misc/rpcsvc-proto { };
+
+  libmysqlclient = libmysqlclient_3_2;
+  libmysqlclient_3_1 = mariadb-connector-c_3_1;
+  libmysqlclient_3_2 = mariadb-connector-c_3_2;
+  mariadb-connector-c = mariadb-connector-c_3_2;
+  mariadb-connector-c_3_1 = callPackage ../servers/sql/mariadb/connector-c/3_1.nix { };
+  mariadb-connector-c_3_2 = callPackage ../servers/sql/mariadb/connector-c/3_2.nix { };
+
+  mariadb-galera = callPackage ../servers/sql/mariadb/galera {
+    asio = asio_1_10;
+  };
+
+  inherit (callPackage ../servers/sql/mariadb {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  })
+    mariadb_104
+    mariadb_105
+    mariadb_106
+    mariadb_107
+    mariadb_108
+  ;
+  mariadb = mariadb_106;
+
+  mongodb = hiPrio mongodb-3_4;
+
+  mongodb-3_4 = callPackage ../servers/nosql/mongodb/v3_4.nix {
+    sasl = cyrus_sasl;
+    boost = boost160;
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  mongodb-3_6 = callPackage ../servers/nosql/mongodb/v3_6.nix {
+    sasl = cyrus_sasl;
+    boost = boost160;
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  mongodb-4_0 = callPackage ../servers/nosql/mongodb/v4_0.nix {
+    sasl = cyrus_sasl;
+    boost = boost169;
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  mongodb-4_2 = callPackage ../servers/nosql/mongodb/v4_2.nix {
+    sasl = cyrus_sasl;
+    boost = boost169;
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  nginx-sso = callPackage ../servers/nginx-sso { };
+
+  percona-server56 = callPackage ../servers/sql/percona/5.6.x.nix { };
+  percona-server = percona-server56;
+
+  riak = callPackage ../servers/nosql/riak/2.2.0.nix {
+    erlang = erlang_basho_R16B02;
+  };
+
+  influxdb = callPackage ../servers/nosql/influxdb { };
+  influxdb2-server = callPackage ../servers/nosql/influxdb2 { };
+  influxdb2-cli = callPackage ../servers/nosql/influxdb2/cli.nix { };
+  # For backwards compatibility with older versions of influxdb2,
+  # which bundled the server and CLI into the same derivation. Will be
+  # removed in a few releases.
+  influxdb2 = callPackage ../servers/nosql/influxdb2/combined.nix { };
+
+  mysql57 = callPackage ../servers/sql/mysql/5.7.x.nix {
+    inherit (darwin) cctools developer_cmds;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+    boost = boost159;
+    protobuf = protobuf3_7;
+  };
+
+  mysql80 = callPackage ../servers/sql/mysql/8.0.x.nix {
+    inherit (darwin) cctools developer_cmds DarwinTools;
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+    boost = boost173; # Configure checks for specific version.
+    protobuf = protobuf3_11;
+    icu =  icu67;
+  };
+
+  mysql_jdbc = callPackage ../servers/sql/mysql/jdbc { };
+
+  mssql_jdbc = callPackage ../servers/sql/mssql/jdbc { };
+  jtds_jdbc = callPackage ../servers/sql/mssql/jdbc/jtds.nix { };
+
+  azuredatastudio = callPackage ../applications/misc/azuredatastudio { };
+
+  miniflux = callPackage ../servers/miniflux { };
+
+  icinga2 = callPackage ../servers/monitoring/icinga2 { };
+
+  icinga2-agent = callPackage ../servers/monitoring/icinga2 {
+    nameSuffix = "-agent";
+    withMysql = false;
+    withNotification = false;
+    withIcingadb = false;
+  };
+
+  munin = callPackage ../servers/monitoring/munin { };
+
+  nagios = callPackage ../servers/monitoring/nagios { };
+
+  monitoring-plugins = callPackage ../servers/monitoring/plugins { };
+
+  inherit (callPackage ../servers/monitoring/plugins/labs_consol_de.nix { })
+    check-mssql-health
+    check-nwc-health
+    check-ups-health;
+
+  check-openvpn = callPackage ../servers/monitoring/plugins/openvpn.nix { };
+
+  checkSSLCert = callPackage ../servers/monitoring/nagios/plugins/check_ssl_cert.nix { };
+
+  check_systemd = callPackage ../servers/monitoring/nagios/plugins/check_systemd.nix { };
+
+  neo4j = callPackage ../servers/nosql/neo4j {
+    jre = jre8_headless;
+  };
+
+  neo4j-desktop = callPackage ../applications/misc/neo4j-desktop { };
+
+  check-esxi-hardware = callPackage ../servers/monitoring/plugins/esxi.nix {};
+
+  net-snmp = callPackage ../servers/monitoring/net-snmp { };
+
+  newrelic-sysmond = callPackage ../servers/monitoring/newrelic-sysmond { };
+
+  nullidentdmod = callPackage ../servers/identd/nullidentdmod {};
+
+  riemann = callPackage ../servers/monitoring/riemann { };
+  riemann-dash = callPackage ../servers/monitoring/riemann-dash { };
+
+  unpfs = callPackage ../servers/unpfs {};
+
+  oidentd = callPackage ../servers/identd/oidentd { };
+
+  openfire = callPackage ../servers/xmpp/openfire { };
+
+  softether = callPackage ../servers/softether { };
+
+  qboot = pkgsi686Linux.callPackage ../applications/virtualization/qboot { };
+
+  OVMF = callPackage ../applications/virtualization/OVMF { };
+  OVMFFull = callPackage ../applications/virtualization/OVMF {
+    secureBoot = true;
+    csmSupport = true;
+    httpSupport = true;
+    tpmSupport = true;
+  };
+
+  seabios = callPackage ../applications/virtualization/seabios { };
+
+  vmfs-tools = callPackage ../tools/filesystems/vmfs-tools { };
+
+  patroni = callPackage ../servers/sql/patroni { pythonPackages = python3Packages; };
+
+  pgbouncer = callPackage ../servers/sql/pgbouncer { };
+
+  pgpool = callPackage ../servers/sql/pgpool {
+    pam = if stdenv.isLinux then pam else null;
+    libmemcached = null; # Detection is broken upstream
+  };
+
+  tang = callPackage ../servers/tang {
+    asciidoc = asciidoc-full;
+  };
+
+  promscale = callPackage ../servers/monitoring/prometheus/promscale { };
+
+  timescaledb-parallel-copy = callPackage ../development/tools/database/timescaledb-parallel-copy { };
+
+  timescaledb-tune = callPackage ../development/tools/database/timescaledb-tune { };
+
+  inherit (import ../servers/sql/postgresql pkgs)
+    postgresql_10
+    postgresql_11
+    postgresql_12
+    postgresql_13
+    postgresql_14
+  ;
+  postgresql = postgresql_13.override { this = postgresql; };
+  postgresqlPackages = recurseIntoAttrs postgresql.pkgs;
+  postgresql11Packages = recurseIntoAttrs postgresql_11.pkgs;
+  postgresql12Packages = recurseIntoAttrs postgresql_12.pkgs;
+  postgresql13Packages = postgresqlPackages;
+  postgresql14Packages = recurseIntoAttrs postgresql_14.pkgs;
+
+  postgresql_jdbc = callPackage ../development/java-modules/postgresql_jdbc { };
+
+  prom2json = callPackage ../servers/monitoring/prometheus/prom2json.nix { };
+  prometheus = callPackage ../servers/monitoring/prometheus { };
+  prometheus-alertmanager = callPackage ../servers/monitoring/prometheus/alertmanager.nix { };
+  prometheus-apcupsd-exporter = callPackage ../servers/monitoring/prometheus/apcupsd-exporter.nix { };
+  prometheus-artifactory-exporter = callPackage ../servers/monitoring/prometheus/artifactory-exporter.nix { };
+  prometheus-aws-s3-exporter = callPackage ../servers/monitoring/prometheus/aws-s3-exporter.nix { };
+  prometheus-bind-exporter = callPackage ../servers/monitoring/prometheus/bind-exporter.nix { };
+  prometheus-bird-exporter = callPackage ../servers/monitoring/prometheus/bird-exporter.nix { };
+  prometheus-bitcoin-exporter = callPackage ../servers/monitoring/prometheus/bitcoin-exporter.nix { };
+  prometheus-blackbox-exporter = callPackage ../servers/monitoring/prometheus/blackbox-exporter.nix { };
+  prometheus-collectd-exporter = callPackage ../servers/monitoring/prometheus/collectd-exporter.nix { };
+  prometheus-consul-exporter = callPackage ../servers/monitoring/prometheus/consul-exporter.nix { };
+  prometheus-dmarc-exporter = callPackage ../servers/monitoring/prometheus/dmarc-exporter { };
+  prometheus-dnsmasq-exporter = callPackage ../servers/monitoring/prometheus/dnsmasq-exporter.nix { };
+  prometheus-dovecot-exporter = callPackage ../servers/monitoring/prometheus/dovecot-exporter.nix { };
+  prometheus-domain-exporter = callPackage ../servers/monitoring/prometheus/domain-exporter.nix { };
+  prometheus-fastly-exporter = callPackage ../servers/monitoring/prometheus/fastly-exporter.nix { };
+  prometheus-flow-exporter = callPackage ../servers/monitoring/prometheus/flow-exporter.nix { };
+  prometheus-fritzbox-exporter = callPackage ../servers/monitoring/prometheus/fritzbox-exporter.nix { };
+  prometheus-gitlab-ci-pipelines-exporter = callPackage ../servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix { };
+  prometheus-haproxy-exporter = callPackage ../servers/monitoring/prometheus/haproxy-exporter.nix { };
+  prometheus-influxdb-exporter = callPackage ../servers/monitoring/prometheus/influxdb-exporter.nix { };
+  prometheus-jitsi-exporter = callPackage ../servers/monitoring/prometheus/jitsi-exporter.nix { };
+  prometheus-jmx-httpserver = callPackage ../servers/monitoring/prometheus/jmx-httpserver.nix {  };
+  prometheus-json-exporter = callPackage ../servers/monitoring/prometheus/json-exporter.nix { };
+  prometheus-kea-exporter = callPackage ../servers/monitoring/prometheus/kea-exporter.nix { };
+  prometheus-keylight-exporter = callPackage ../servers/monitoring/prometheus/keylight-exporter.nix { };
+  prometheus-knot-exporter = callPackage ../servers/monitoring/prometheus/knot-exporter.nix { };
+  prometheus-lnd-exporter = callPackage ../servers/monitoring/prometheus/lnd-exporter.nix { };
+  prometheus-mail-exporter = callPackage ../servers/monitoring/prometheus/mail-exporter.nix { };
+  prometheus-mesos-exporter = callPackage ../servers/monitoring/prometheus/mesos-exporter.nix { };
+  prometheus-mikrotik-exporter = callPackage ../servers/monitoring/prometheus/mikrotik-exporter.nix { };
+  prometheus-minio-exporter = callPackage ../servers/monitoring/prometheus/minio-exporter { };
+  prometheus-modemmanager-exporter = callPackage ../servers/monitoring/prometheus/modemmanager-exporter.nix { };
+  prometheus-mysqld-exporter = callPackage ../servers/monitoring/prometheus/mysqld-exporter.nix { };
+  prometheus-nextcloud-exporter = callPackage ../servers/monitoring/prometheus/nextcloud-exporter.nix { };
+  prometheus-nginx-exporter = callPackage ../servers/monitoring/prometheus/nginx-exporter.nix { };
+  prometheus-nginxlog-exporter = callPackage ../servers/monitoring/prometheus/nginxlog-exporter.nix { };
+  prometheus-node-exporter = callPackage ../servers/monitoring/prometheus/node-exporter.nix { };
+  prometheus-openldap-exporter = callPackage ../servers/monitoring/prometheus/openldap-exporter.nix { };
+  prometheus-openvpn-exporter = callPackage ../servers/monitoring/prometheus/openvpn-exporter.nix { };
+  prometheus-pihole-exporter = callPackage ../servers/monitoring/prometheus/pihole-exporter.nix {  };
+  prometheus-postfix-exporter = callPackage ../servers/monitoring/prometheus/postfix-exporter.nix { };
+  prometheus-postgres-exporter = callPackage ../servers/monitoring/prometheus/postgres-exporter.nix { };
+  prometheus-process-exporter = callPackage ../servers/monitoring/prometheus/process-exporter.nix { };
+  prometheus-pushgateway = callPackage ../servers/monitoring/prometheus/pushgateway.nix { };
+  prometheus-pve-exporter = callPackage ../servers/monitoring/prometheus/pve-exporter.nix { };
+  prometheus-redis-exporter = callPackage ../servers/monitoring/prometheus/redis-exporter.nix { };
+  prometheus-rabbitmq-exporter = callPackage ../servers/monitoring/prometheus/rabbitmq-exporter.nix { };
+  prometheus-rtl_433-exporter = callPackage ../servers/monitoring/prometheus/rtl_433-exporter.nix { };
+  prometheus-script-exporter = callPackage ../servers/monitoring/prometheus/script-exporter.nix { };
+  prometheus-smartctl-exporter = callPackage ../servers/monitoring/prometheus/smartctl-exporter { };
+  prometheus-smokeping-prober = callPackage ../servers/monitoring/prometheus/smokeping-prober.nix { };
+  prometheus-snmp-exporter = callPackage ../servers/monitoring/prometheus/snmp-exporter.nix { };
+  prometheus-statsd-exporter = callPackage ../servers/monitoring/prometheus/statsd-exporter.nix { };
+  prometheus-surfboard-exporter = callPackage ../servers/monitoring/prometheus/surfboard-exporter.nix { };
+  prometheus-sql-exporter = callPackage ../servers/monitoring/prometheus/sql-exporter.nix { };
+  prometheus-systemd-exporter = callPackage ../servers/monitoring/prometheus/systemd-exporter.nix { };
+  prometheus-tor-exporter = callPackage ../servers/monitoring/prometheus/tor-exporter.nix { };
+  prometheus-unbound-exporter = callPackage ../servers/monitoring/prometheus/unbound-exporter.nix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  prometheus-unifi-exporter = callPackage ../servers/monitoring/prometheus/unifi-exporter { };
+  prometheus-varnish-exporter = callPackage ../servers/monitoring/prometheus/varnish-exporter.nix { };
+  prometheus-wireguard-exporter = callPackage ../servers/monitoring/prometheus/wireguard-exporter.nix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  prometheus-xmpp-alerts = callPackage ../servers/monitoring/prometheus/xmpp-alerts.nix { };
+
+  prometheus-cpp = callPackage ../development/libraries/prometheus-cpp { };
+
+  psqlodbc = callPackage ../development/libraries/psqlodbc { };
+
+  public-inbox = perlPackages.callPackage ../servers/mail/public-inbox { };
+
+  pure-ftpd = callPackage ../servers/ftp/pure-ftpd { };
+
+  pypolicyd-spf = python3.pkgs.callPackage ../servers/mail/pypolicyd-spf { };
+
+  qpid-cpp = callPackage ../servers/amqp/qpid-cpp {
+    boost = boost155;
+    inherit (python2Packages) buildPythonPackage qpid-python;
+  };
+
+  qremotecontrol-server = callPackage ../servers/misc/qremotecontrol-server { };
+
+  rabbitmq-server = callPackage ../servers/amqp/rabbitmq-server {
+    inherit (darwin.apple_sdk.frameworks) AppKit Carbon Cocoa;
+    elixir = elixir_1_12;
+  };
+
+  radicale2 = callPackage ../servers/radicale/2.x.nix { };
+  radicale3 = callPackage ../servers/radicale/3.x.nix { };
+
+  radicale = radicale3;
+
+  radicle-upstream = callPackage ../applications/version-management/git-and-tools/radicle-upstream {};
+
+  rake = callPackage ../development/tools/build-managers/rake { };
+
+  rakkess = callPackage ../development/tools/rakkess { };
+
+  redis = callPackage ../servers/nosql/redis { };
+
+  redstore = callPackage ../servers/http/redstore { };
+
+  reproxy = callPackage ../servers/reproxy { };
+
+  restic = callPackage ../tools/backup/restic { };
+
+  restic-rest-server = callPackage ../tools/backup/restic/rest-server.nix { };
+
+  restya-board = callPackage ../servers/web-apps/restya-board { };
+
+  rethinkdb = callPackage ../servers/nosql/rethinkdb {
+    stdenv = clangStdenv;
+    libtool = darwin.cctools;
+  };
+
+  # Fails to compile with boost <= 1.72
+  rippled = callPackage ../servers/rippled {
+    boost = boost172;
+  };
+
+  rippled-validator-keys-tool = callPackage ../servers/rippled/validator-keys-tool.nix { };
+
+  roon-bridge = callPackage ../servers/roon-bridge { };
+
+  rpiplay = callPackage ../servers/rpiplay { };
+
+  roon-server = callPackage ../servers/roon-server { };
+
+  s6 = skawarePackages.s6;
+
+  s6-rc = skawarePackages.s6-rc;
+
+  supervise = callPackage ../tools/system/supervise { };
+
+  spamassassin = callPackage ../servers/mail/spamassassin { };
+
+  deadpixi-sam-unstable = callPackage ../applications/editors/deadpixi-sam { };
+
+  samba4 = callPackage ../servers/samba/4.x.nix { };
+
+  samba = samba4;
+
+  samba4Full = lowPrio (samba4.override {
+    enableLDAP = true;
+    enablePrinting = true;
+    enableMDNS = true;
+    enableDomainController = true;
+    enableRegedit = true;
+    enableCephFS = !stdenv.hostPlatform.isAarch64;
+  });
+
+  sambaFull = samba4Full;
+
+  sampler = callPackage ../applications/misc/sampler {
+    buildGoModule = buildGo116Module;
+  };
+
+  shairplay = callPackage ../servers/shairplay { avahi = avahi-compat; };
+
+  shairport-sync = callPackage ../servers/shairport-sync { };
+
+  showoff = callPackage ../servers/http/showoff {};
+
+  serfdom = callPackage ../servers/serf { };
+
+  seyren = callPackage ../servers/monitoring/seyren { };
+
+  ruby-zoom = callPackage ../tools/text/ruby-zoom { };
+
+  sensu = callPackage ../servers/monitoring/sensu { };
+
+  inherit (callPackages ../servers/monitoring/sensu-go { })
+    sensu-go-agent
+    sensu-go-backend
+    sensu-go-cli;
+
+  check-wmiplus = callPackage ../servers/monitoring/plugins/wmiplus { };
+
+  uchiwa = callPackage ../servers/monitoring/uchiwa { };
+
+  shishi = callPackage ../servers/shishi {
+      pam = if stdenv.isLinux then pam else null;
+      # see also openssl, which has/had this same trick
+  };
+
+  sickgear = callPackage ../servers/sickbeard/sickgear.nix { };
+
+  sipwitch = callPackage ../servers/sip/sipwitch { };
+
+  slimserver = callPackage ../servers/slimserver { };
+
+  smcroute = callPackage ../servers/smcroute { };
+
+  sogo = callPackage ../servers/web-apps/sogo { };
+
+  spacecookie =
+    haskell.lib.compose.justStaticExecutables haskellPackages.spacecookie;
+
+  spawn_fcgi = callPackage ../servers/http/spawn-fcgi { };
+
+  spring-boot-cli = callPackage ../development/tools/spring-boot-cli { };
+
+  squid = callPackage ../servers/squid { };
+
+  duckling-proxy = callPackage ../servers/duckling-proxy { };
+
+  sslh = callPackage ../servers/sslh { };
+
+  thttpd = callPackage ../servers/http/thttpd { };
+
+  storm = callPackage ../servers/computing/storm { };
+
+  switcheroo-control = callPackage ../os-specific/linux/switcheroo-control { };
+
+  slurm = callPackage ../servers/computing/slurm { gtk2 = null; };
+
+  slurm-spank-stunnel = callPackage ../servers/computing/slurm-spank-stunnel { };
+
+  slurm-spank-x11 = callPackage ../servers/computing/slurm-spank-x11 { };
+
+  systemd-journal2gelf = callPackage ../tools/system/systemd-journal2gelf { };
+
+  tailscale = callPackage ../servers/tailscale { };
+
+  thanos = callPackage ../servers/monitoring/thanos { };
+
+  trafficserver = callPackage ../servers/http/trafficserver { };
+
+  inherit (callPackages ../servers/http/tomcat { })
+    tomcat9
+    tomcat10;
+
+  tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };
+
+  torque = callPackage ../servers/computing/torque {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  tt-rss = callPackage ../servers/tt-rss { };
+  tt-rss-plugin-ff-instagram = callPackage ../servers/tt-rss/plugin-ff-instagram { };
+  tt-rss-plugin-auth-ldap = callPackage ../servers/tt-rss/plugin-auth-ldap { };
+  tt-rss-theme-feedly = callPackage ../servers/tt-rss/theme-feedly { };
+
+  rss-bridge = callPackage ../servers/web-apps/rss-bridge { };
+
+  searx = callPackage ../servers/web-apps/searx { };
+
+  selfoss = callPackage ../servers/web-apps/selfoss { };
+
+  shaarli = callPackage ../servers/web-apps/shaarli { };
+
+  shiori = callPackage ../servers/web-apps/shiori { };
+
+  inherit (callPackages ../servers/web-apps/matomo {})
+    matomo
+    matomo-beta;
+
+  axis2 = callPackage ../servers/http/tomcat/axis2 { };
+
+  inherit (callPackages ../servers/unifi { })
+    unifiLTS
+    unifi5
+    unifi6
+    unifi7;
+
+  unifi = unifi6;
+
+  unifi-video = callPackage ../servers/unifi-video { };
+
+  unpackerr = callPackage ../servers/unpackerr {
+    inherit (darwin.apple_sdk.frameworks) Cocoa WebKit;
+  };
+
+  urserver = callPackage ../servers/urserver { };
+
+  vouch-proxy = callPackage ../servers/vouch-proxy {
+    buildGoModule = buildGo116Module;
+  };
+
+  victoriametrics = callPackage ../servers/nosql/victoriametrics { };
+
+  virtiofsd = callPackage ../servers/misc/virtiofsd { };
+
+  virtlyst = libsForQt5.callPackage ../servers/web-apps/virtlyst { };
+
+  virtualenv = with python3Packages; toPythonApplication virtualenv;
+
+  virtualenv-clone = with python3Packages; toPythonApplication virtualenv-clone;
+
+  vsftpd = callPackage ../servers/ftp/vsftpd { };
+
+  wallabag = callPackage ../servers/web-apps/wallabag { };
+
+  webdav = callPackage ../servers/webdav { };
+
+  webdav-server-rs = callPackage ../servers/webdav-server-rs { };
+
+  webmetro = callPackage ../servers/webmetro { };
+
+  wsdd = callPackage ../servers/wsdd { };
+
+  webhook = callPackage ../servers/http/webhook { };
+
+  xinetd = callPackage ../servers/xinetd { };
+
+  zookeeper = callPackage ../servers/zookeeper { };
+
+  zookeeper_mt = callPackage ../development/libraries/zookeeper_mt { };
+
+  xqilla = callPackage ../development/tools/xqilla { };
+
+  xquartz = callPackage ../servers/x11/xquartz { };
+
+  quartz-wm = callPackage ../servers/x11/quartz-wm {
+    stdenv = clangStdenv;
+    inherit (darwin.apple_sdk.frameworks) AppKit Foundation;
+    inherit (darwin.apple_sdk.libs) Xplugin;
+  };
+
+  # Use `lib.callPackageWith __splicedPackages` rather than plain `callPackage`
+  # so as not to have the newly bound xorg items already in scope,  which would
+  # have created a cycle.
+  xorg = recurseIntoAttrs ((lib.callPackageWith __splicedPackages ../servers/x11/xorg {
+  }).overrideScope' (lib.callPackageWith __splicedPackages ../servers/x11/xorg/overrides.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa;
+    inherit (darwin.apple_sdk.libs) Xplugin;
+    inherit (buildPackages.darwin) bootstrap_cmds;
+    udev = if stdenv.isLinux then udev else null;
+    libdrm = if stdenv.isLinux then libdrm else null;
+    abiCompat = config.xorg.abiCompat # `config` because we have no `xorg.override`
+      or (if stdenv.isDarwin then "1.18" else null); # 1.19 needs fixing on Darwin
+  }) // { inherit xlibsWrapper; } );
+
+  xwayland = callPackage ../servers/x11/xorg/xwayland.nix { };
+
+  yaws = callPackage ../servers/http/yaws {
+    erlang = erlangR21;
+  };
+
+  youtrack = callPackage ../servers/jetbrains/youtrack.nix { };
+
+  zabbixFor = version: rec {
+    agent = (callPackages ../servers/monitoring/zabbix/agent.nix {}).${version};
+    agent2 = (callPackages ../servers/monitoring/zabbix/agent2.nix {}).${version};
+    proxy-mysql = (callPackages ../servers/monitoring/zabbix/proxy.nix { mysqlSupport = true; }).${version};
+    proxy-pgsql = (callPackages ../servers/monitoring/zabbix/proxy.nix { postgresqlSupport = true; }).${version};
+    proxy-sqlite = (callPackages ../servers/monitoring/zabbix/proxy.nix { sqliteSupport = true; }).${version};
+    server-mysql = (callPackages ../servers/monitoring/zabbix/server.nix { mysqlSupport = true; }).${version};
+    server-pgsql = (callPackages ../servers/monitoring/zabbix/server.nix { postgresqlSupport = true; }).${version};
+    web = (callPackages ../servers/monitoring/zabbix/web.nix {}).${version};
+
+    # backwards compatibility
+    server = server-pgsql;
+  };
+
+  zabbix50 = recurseIntoAttrs (zabbixFor "v50");
+  zabbix40 = dontRecurseIntoAttrs (zabbixFor "v40");
+
+  zabbix = zabbix50;
+
+  zipkin = callPackage ../servers/monitoring/zipkin { };
+
+  ### OS-SPECIFIC
+
+  afuse = callPackage ../os-specific/linux/afuse { };
+
+  autofs5 = callPackage ../os-specific/linux/autofs { };
+
+  _915resolution = callPackage ../os-specific/linux/915resolution { };
+
+  nfs-utils = callPackage ../os-specific/linux/nfs-utils { };
+
+  acpi = callPackage ../os-specific/linux/acpi { };
+
+  acpid = callPackage ../os-specific/linux/acpid { };
+
+  acpitool = callPackage ../os-specific/linux/acpitool { };
+
+  alfred = callPackage ../os-specific/linux/batman-adv/alfred.nix { };
+
+  alertmanager-bot = callPackage ../servers/monitoring/alertmanager-bot { };
+
+  alertmanager-irc-relay = callPackage ../servers/monitoring/alertmanager-irc-relay { };
+
+  alsa-firmware = callPackage ../os-specific/linux/alsa-project/alsa-firmware { };
+  alsa-lib = callPackage ../os-specific/linux/alsa-project/alsa-lib { };
+  alsa-oss = callPackage ../os-specific/linux/alsa-project/alsa-oss { };
+  alsa-plugins = callPackage ../os-specific/linux/alsa-project/alsa-plugins { };
+  alsa-plugins-wrapper = callPackage ../os-specific/linux/alsa-project/alsa-plugins/wrapper.nix { };
+  alsa-tools = callPackage ../os-specific/linux/alsa-project/alsa-tools { };
+  alsa-topology-conf = callPackage ../os-specific/linux/alsa-project/alsa-topology-conf { };
+  alsa-ucm-conf = callPackage ../os-specific/linux/alsa-project/alsa-ucm-conf { };
+  alsa-utils = callPackage ../os-specific/linux/alsa-project/alsa-utils {
+    fftw = fftwFloat;
+  };
+
+  inherit (callPackage ../misc/arm-trusted-firmware {})
+    buildArmTrustedFirmware
+    armTrustedFirmwareTools
+    armTrustedFirmwareAllwinner
+    armTrustedFirmwareAllwinnerH616
+    armTrustedFirmwareQemu
+    armTrustedFirmwareRK3328
+    armTrustedFirmwareRK3399
+    armTrustedFirmwareS905
+    ;
+
+  microcodeAmd = callPackage ../os-specific/linux/microcode/amd.nix { };
+
+  microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { };
+
+  iucode-tool = callPackage ../os-specific/linux/microcode/iucode-tool.nix { };
+
+  inherit (callPackages ../os-specific/linux/apparmor { })
+    libapparmor apparmor-utils apparmor-bin-utils apparmor-parser apparmor-pam
+    apparmor-profiles apparmor-kernel-patches apparmorRulesFromClosure;
+
+  aseq2json = callPackage ../os-specific/linux/aseq2json {};
+
+  atop = callPackage ../os-specific/linux/atop { };
+
+  audit = callPackage ../os-specific/linux/audit { };
+
+  b43Firmware_5_1_138 = callPackage ../os-specific/linux/firmware/b43-firmware/5.1.138.nix { };
+
+  b43Firmware_6_30_163_46 = callPackage ../os-specific/linux/firmware/b43-firmware/6.30.163.46.nix { };
+
+  b43FirmwareCutter = callPackage ../os-specific/linux/firmware/b43-firmware-cutter { };
+
+  bt-fw-converter = callPackage ../os-specific/linux/firmware/bt-fw-converter { };
+
+  brillo = callPackage ../os-specific/linux/brillo { };
+
+  broadcom-bt-firmware = callPackage ../os-specific/linux/firmware/broadcom-bt-firmware { };
+
+  batctl = callPackage ../os-specific/linux/batman-adv/batctl.nix { };
+
+  beefi = callPackage ../os-specific/linux/beefi { };
+
+  blktrace = callPackage ../os-specific/linux/blktrace { };
+
+  bluez5 = callPackage ../os-specific/linux/bluez { };
+
+  bluez5-experimental = callPackage ../os-specific/linux/bluez {
+    withExperimental = true;
+  };
+
+  pulseaudio-modules-bt = callPackage ../applications/audio/pulseaudio-modules-bt {
+    # pulseaudio-modules-bt is most likely to be used with pulseaudioFull
+    pulseaudio = pulseaudioFull;
+  };
+
+  bluez = bluez5;
+
+  inherit (python3Packages) bedup;
+
+  bolt = callPackage ../os-specific/linux/bolt { };
+
+  bpfmon = callPackage ../os-specific/linux/bpfmon { };
+
+  bridge-utils = callPackage ../os-specific/linux/bridge-utils { };
+
+  busybox = callPackage ../os-specific/linux/busybox { };
+  busybox-sandbox-shell = callPackage ../os-specific/linux/busybox/sandbox-shell.nix {
+    # musl roadmap has RISC-V support projected for 1.1.20
+    busybox = if !stdenv.hostPlatform.isRiscV && stdenv.hostPlatform.libc != "bionic"
+              then pkgsStatic.busybox
+              else busybox;
+  };
+
+  cachefilesd = callPackage ../os-specific/linux/cachefilesd { };
+
+  cariddi = callPackage ../tools/security/cariddi { };
+
+  checkpolicy = callPackage ../os-specific/linux/checkpolicy { };
+
+  checksec = callPackage ../os-specific/linux/checksec { };
+
+  cifs-utils = callPackage ../os-specific/linux/cifs-utils { };
+
+  cm-rgb = python3Packages.callPackage ../tools/system/cm-rgb { };
+
+  cpustat = callPackage ../os-specific/linux/cpustat { };
+
+  cockroachdb = callPackage ../servers/sql/cockroachdb { };
+
+  conky = callPackage ../os-specific/linux/conky ({
+    lua = lua5_3_compat;
+    inherit (linuxPackages.nvidia_x11.settings) libXNVCtrl;
+  } // config.conky or {});
+
+  conntrack-tools = callPackage ../os-specific/linux/conntrack-tools { };
+
+  coredns = callPackage ../servers/dns/coredns { };
+
+  corerad = callPackage ../tools/networking/corerad { };
+
+  cpufrequtils = callPackage ../os-specific/linux/cpufrequtils { };
+
+  cpupower-gui = python3Packages.callPackage ../os-specific/linux/cpupower-gui {
+    inherit (pkgs) meson;
+  };
+
+  cpuset = callPackage ../os-specific/linux/cpuset {
+    pythonPackages = python3Packages;
+  };
+
+  criu = callPackage ../os-specific/linux/criu { };
+
+  cryptomator = callPackage ../tools/security/cryptomator { };
+
+  cryptsetup = callPackage ../os-specific/linux/cryptsetup { };
+
+  cramfsprogs = callPackage ../os-specific/linux/cramfsprogs { };
+
+  cramfsswap = callPackage ../os-specific/linux/cramfsswap { };
+
+  crda = callPackage ../os-specific/linux/crda { };
+
+  cshatag = callPackage ../os-specific/linux/cshatag { };
+
+  # Darwin package set
+  #
+  # Even though this is a set of packages not single package, use `callPackage`
+  # not `callPackages` so the per-package callPackages don't have their
+  # `.override` clobbered. C.F. `llvmPackages` which does the same.
+  darwin = callPackage ./darwin-packages.nix { };
+
+  disk_indicator = callPackage ../os-specific/linux/disk-indicator { };
+
+  displaylink = callPackage ../os-specific/linux/displaylink {
+    inherit (linuxPackages) evdi;
+  };
+
+  dmidecode = callPackage ../os-specific/linux/dmidecode { };
+
+  dmtcp = callPackage ../os-specific/linux/dmtcp { };
+
+  directvnc = callPackage ../os-specific/linux/directvnc { };
+
+  dmraid = callPackage ../os-specific/linux/dmraid { lvm2 = lvm2_dmeventd; };
+
+  drbd = callPackage ../os-specific/linux/drbd { };
+
+  dropwatch = callPackage ../os-specific/linux/dropwatch { };
+
+  dsd = callPackage ../applications/radio/dsd { };
+
+  dstat = callPackage ../os-specific/linux/dstat { };
+
+  erofs-utils = callPackage ../os-specific/linux/erofs-utils { };
+
+  fscryptctl = callPackage ../os-specific/linux/fscryptctl { };
+  # unstable until the first 1.x release
+  fscrypt-experimental = callPackage ../os-specific/linux/fscrypt { };
+
+  fwanalyzer = callPackage ../tools/filesystems/fwanalyzer { };
+
+  fwupd = callPackage ../os-specific/linux/firmware/fwupd { };
+
+  fwupd-efi = callPackage ../os-specific/linux/firmware/fwupd-efi { };
+
+  firmware-manager = callPackage ../os-specific/linux/firmware/firmware-manager { };
+
+  firmware-updater = callPackage ../os-specific/linux/firmware/firmware-updater { };
+
+  fwts = callPackage ../os-specific/linux/fwts { };
+
+  gobi_loader = callPackage ../os-specific/linux/gobi_loader { };
+
+  libossp_uuid = callPackage ../development/libraries/libossp-uuid { };
+
+  libuuid = if stdenv.isLinux
+    then util-linuxMinimal
+    else null;
+
+  light = callPackage ../os-specific/linux/light { };
+
+  lightum = callPackage ../os-specific/linux/lightum { };
+
+  ebtables = callPackage ../os-specific/linux/ebtables { };
+
+  error-inject = callPackages ../os-specific/linux/error-inject { };
+
+  extrace = callPackage ../os-specific/linux/extrace { };
+
+  facetimehd-firmware = callPackage ../os-specific/linux/firmware/facetimehd-firmware { };
+
+  fatrace = callPackage ../os-specific/linux/fatrace { };
+
+  ffado = libsForQt5.callPackage ../os-specific/linux/ffado {
+    inherit (linuxPackages) kernel;
+  };
+  libffado = ffado;
+
+  fbterm = callPackage ../os-specific/linux/fbterm { };
+
+  firejail = callPackage ../os-specific/linux/firejail {};
+
+  fnotifystat = callPackage ../os-specific/linux/fnotifystat { };
+
+  forkstat = callPackage ../os-specific/linux/forkstat { };
+
+  freefall = callPackage ../os-specific/linux/freefall {
+    inherit (linuxPackages) kernel;
+  };
+
+  fusePackages = dontRecurseIntoAttrs (callPackage ../os-specific/linux/fuse {
+    util-linux = util-linuxMinimal;
+  });
+  fuse = lowPrio (if stdenv.isDarwin then macfuse-stubs else fusePackages.fuse_2);
+  fuse3 = fusePackages.fuse_3;
+  fuse-common = hiPrio fusePackages.fuse_3.common;
+
+  fxload = callPackage ../os-specific/linux/fxload { };
+
+  gfxtablet = callPackage ../os-specific/linux/gfxtablet {};
+
+  gmailctl = callPackage ../applications/networking/gmailctl { };
+
+  gometer = callPackage ../applications/misc/gometer { };
+
+  gomp = callPackage ../applications/version-management/gomp { };
+
+  gomplate = callPackage ../development/tools/gomplate {};
+
+  gpm = callPackage ../servers/gpm {
+    ncurses = null;  # Keep curses disabled for lack of value
+
+    # latest 6.8 mysteriously fails to parse '@headings single':
+    #   https://lists.gnu.org/archive/html/bug-texinfo/2021-09/msg00011.html
+    texinfo = texinfo6_7;
+  };
+
+  gpm-ncurses = gpm.override { inherit ncurses; };
+
+  gpu-switch = callPackage ../os-specific/linux/gpu-switch { };
+
+  gradm = callPackage ../os-specific/linux/gradm { };
+
+  gt = callPackage ../os-specific/linux/gt { };
+
+  inherit (nodePackages) gtop;
+
+  hd-idle = callPackage ../os-specific/linux/hd-idle { };
+
+  hdparm = callPackage ../os-specific/linux/hdparm { };
+
+  health-check = callPackage ../os-specific/linux/health-check { };
+
+  hibernate = callPackage ../os-specific/linux/hibernate { };
+
+  hostapd = callPackage ../os-specific/linux/hostapd { };
+
+  htop = callPackage ../tools/system/htop {
+    inherit (darwin) IOKit;
+  };
+
+  htop-vim = callPackage ../tools/system/htop/htop-vim.nix { };
+
+  btop = callPackage ../tools/system/btop {
+    stdenv = gcc11Stdenv;
+  };
+
+  nmon = callPackage ../os-specific/linux/nmon { };
+
+  hwdata = callPackage ../os-specific/linux/hwdata { };
+
+  i7z = qt5.callPackage ../os-specific/linux/i7z { };
+
+  pcm = callPackage ../os-specific/linux/pcm { };
+
+  ifmetric = callPackage ../os-specific/linux/ifmetric {};
+
+  ima-evm-utils = callPackage ../os-specific/linux/ima-evm-utils {};
+
+  intel2200BGFirmware = callPackage ../os-specific/linux/firmware/intel2200BGFirmware { };
+
+  intel-cmt-cat = callPackage ../os-specific/linux/intel-cmt-cat { };
+
+  intel-compute-runtime = callPackage ../os-specific/linux/intel-compute-runtime { };
+
+  intel-ocl = callPackage ../os-specific/linux/intel-ocl { };
+
+  iomelt = callPackage ../os-specific/linux/iomelt { };
+
+  iotop = callPackage ../os-specific/linux/iotop { };
+  iotop-c = callPackage ../os-specific/linux/iotop-c { };
+
+  iproute2 = callPackage ../os-specific/linux/iproute { };
+
+  iproute_mptcp = callPackage ../os-specific/linux/iproute/mptcp.nix { };
+
+  iputils = hiPrio (callPackage ../os-specific/linux/iputils { });
+  # hiPrio for collisions with inetutils (ping)
+
+  iptables = callPackage ../os-specific/linux/iptables { };
+  iptables-legacy = callPackage ../os-specific/linux/iptables { nftablesCompat = false; };
+  iptables-nftables-compat = iptables;
+
+  iptstate = callPackage ../os-specific/linux/iptstate { } ;
+
+  ipset = callPackage ../os-specific/linux/ipset { };
+
+  irqbalance = callPackage ../os-specific/linux/irqbalance { };
+
+  itpp = callPackage ../development/libraries/science/math/itpp { };
+
+  iw = callPackage ../os-specific/linux/iw { };
+
+  iwd = callPackage ../os-specific/linux/iwd { };
+
+  jfbview = callPackage ../os-specific/linux/jfbview { };
+  jfbpdf = jfbview.override {
+    imageSupport = false;
+  };
+
+  jool-cli = callPackage ../os-specific/linux/jool/cli.nix { };
+
+  juju = callPackage ../applications/networking/juju { };
+
+  jujuutils = callPackage ../os-specific/linux/jujuutils { };
+
+  kbd = callPackage ../os-specific/linux/kbd { };
+
+  kbdlight = callPackage ../os-specific/linux/kbdlight { };
+
+  kinect-audio-setup = callPackage ../os-specific/linux/kinect-audio-setup { };
+
+  kmscon = callPackage ../os-specific/linux/kmscon { };
+
+  kmscube = callPackage ../os-specific/linux/kmscube { };
+
+  kmsxx = callPackage ../development/libraries/kmsxx { };
+
+  latencytop = callPackage ../os-specific/linux/latencytop { };
+
+  ldm = callPackage ../os-specific/linux/ldm { };
+
+  libaio = callPackage ../os-specific/linux/libaio { };
+
+  libargon2 = callPackage ../development/libraries/libargon2 { };
+
+  libatasmart = callPackage ../os-specific/linux/libatasmart { };
+
+  libcgroup = callPackage ../os-specific/linux/libcgroup { };
+
+  libnl = callPackage ../os-specific/linux/libnl { };
+
+  libtraceevent = callPackage ../os-specific/linux/libtraceevent {};
+
+  libtracefs = callPackage ../os-specific/linux/libtracefs {};
+
+  lieer = callPackage ../applications/networking/lieer {};
+
+  linuxConsoleTools = callPackage ../os-specific/linux/consoletools { };
+
+  linthesia = callPackage ../games/linthesia/default.nix { };
+
+  libreelec-dvb-firmware = callPackage ../os-specific/linux/firmware/libreelec-dvb-firmware { };
+
+  openiscsi = callPackage ../os-specific/linux/open-iscsi { };
+
+  open-isns = callPackage ../os-specific/linux/open-isns { };
+
+  osx-cpu-temp = callPackage ../os-specific/darwin/osx-cpu-temp {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  macfuse-stubs = callPackage ../os-specific/darwin/macfuse {
+    inherit (darwin) libtapi;
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration;
+  };
+
+  osxsnarf = callPackage ../os-specific/darwin/osxsnarf { };
+
+  power-calibrate = callPackage ../os-specific/linux/power-calibrate { };
+
+  powercap = callPackage ../os-specific/linux/powercap { };
+
+  powerstat = callPackage ../os-specific/linux/powerstat { };
+
+  smemstat = callPackage ../os-specific/linux/smemstat { };
+
+  tgt = callPackage ../tools/networking/tgt { };
+
+  lkl = callPackage ../applications/virtualization/lkl { };
+
+  inherit (callPackages ../os-specific/linux/kernel-headers { })
+    linuxHeaders makeLinuxHeaders;
+
+  klibc = callPackage ../os-specific/linux/klibc { };
+
+  klibcShrunk = lowPrio (callPackage ../os-specific/linux/klibc/shrunk.nix { });
+
+  linuxKernel = recurseIntoAttrs (callPackage ./linux-kernels.nix { });
+
+  inherit (linuxKernel) buildLinux linuxConfig kernelPatches;
+
+  linuxPackagesFor = linuxKernel.packagesFor;
+
+  hardenedLinuxPackagesFor = linuxKernel.hardenedPackagesFor;
+
+  linuxManualConfig = linuxKernel.manualConfig;
+
+  linuxPackages_custom = linuxKernel.customPackage;
+
+  # This serves as a test for linuxPackages_custom
+  linuxPackages_custom_tinyconfig_kernel = let
+    base = linuxPackages.kernel;
+    tinyLinuxPackages = linuxKernel.customPackage {
+      inherit (base) version src;
+      allowImportFromDerivation = false;
+      configfile = linuxConfig {
+        makeTarget = "tinyconfig";
+        src = base.src;
+      };
+    };
+    in tinyLinuxPackages.kernel;
+
+  # The current default kernel / kernel modules.
+  linuxPackages = linuxKernel.packageAliases.linux_default;
+  linux = linuxPackages.kernel;
+
+  linuxPackages_latest = linuxKernel.packageAliases.linux_latest;
+  linux_latest = linuxPackages_latest.kernel;
+
+  # Testing (rc) kernel
+  linuxPackages_testing = linuxKernel.packages.linux_testing;
+  linux_testing = linuxKernel.kernels.linux_testing;
+
+  linuxPackages_testing_bcachefs = linuxKernel.packages.linux_testing_bcachefs;
+  linux_testing_bcachefs = linuxKernel.kernels.linux_testing_bcachefs;
+
+  # kernel with mtcp support
+  linuxPackages_mptcp = linuxKernel.packageAliases.linux_mptcp;
+  linux_mptcp = linuxPackages_mptcp.kernel;
+
+  # Realtime kernel
+  linuxPackages-rt = linuxKernel.packageAliases.linux_rt_default;
+  linuxPackages-rt_latest = linuxKernel.packageAliases.linux_rt_latest;
+  linux-rt = linuxPackages-rt.kernel;
+  linux-rt_latest = linuxPackages-rt_latest.kernel;
+
+  # hardened kernels
+  linuxPackages_hardened = linuxKernel.packages.linux_hardened;
+  linux_hardened = linuxPackages_hardened.kernel;
+  linuxPackages_4_14_hardened = linuxKernel.packages.linux_4_14_hardened;
+  linux_4_14_hardened = linuxPackages_4_14_hardened.kernel;
+  linuxPackages_4_19_hardened = linuxKernel.packages.linux_4_19_hardened;
+  linux_4_19_hardened = linuxPackages_4_19_hardened.kernel;
+  linuxPackages_5_4_hardened = linuxKernel.packages.linux_5_4_hardened;
+  linux_5_4_hardened = linuxKernel.kernels.linux_5_4_hardened;
+  linuxPackages_5_10_hardened = linuxKernel.packages.linux_5_10_hardened;
+  linux_5_10_hardened = linuxKernel.kernels.linux_5_10_hardened;
+  linuxPackages_5_15_hardened = linuxKernel.packages.linux_5_15_hardened;
+  linux_5_15_hardened = linuxKernel.kernels.linux_5_15_hardened;
+
+  # Hardkernel (Odroid) kernels.
+  linuxPackages_hardkernel_latest = linuxKernel.packageAliases.linux_hardkernel_latest;
+  linux_hardkernel_latest = linuxPackages_hardkernel_latest.kernel;
+
+  # GNU Linux-libre kernels
+  linuxPackages-libre = linuxKernel.packages.linux_libre;
+  linux-libre = linuxPackages-libre.kernel;
+  linuxPackages_latest-libre = linuxKernel.packages.linux_latest_libre;
+  linux_latest-libre = linuxPackages_latest-libre.kernel;
+
+  # zen-kernel
+  linuxPackages_zen = linuxKernel.packages.linux_zen;
+  linuxPackages_lqx = linuxKernel.packages.linux_lqx;
+
+  # XanMod kernel
+  linuxPackages_xanmod = linuxKernel.packages.linux_xanmod;
+  linux_xanmod = linuxKernel.kernels.linux_xanmod;
+
+  cryptodev = linuxKernel.packages.linux_4_9.cryptodev;
+
+  dpdk = callPackage ../os-specific/linux/dpdk {
+    kernel = null; # dpdk modules are in linuxPackages.dpdk.kmod
+  };
+
+  keyutils = callPackage ../os-specific/linux/keyutils { };
+
+  libselinux = callPackage ../os-specific/linux/libselinux { };
+
+  libsemanage = callPackage ../os-specific/linux/libsemanage {
+    python = python3;
+  };
+
+  libraw = callPackage ../development/libraries/libraw { };
+
+  libraw1394 = callPackage ../development/libraries/libraw1394 { };
+
+  librealsense = callPackage ../development/libraries/librealsense { };
+
+  librealsenseWithCuda = callPackage ../development/libraries/librealsense {
+    cudaSupport = true;
+  };
+
+  librealsenseWithoutCuda = callPackage ../development/libraries/librealsense {
+    cudaSupport = false;
+  };
+
+  libsass = callPackage ../development/libraries/libsass { };
+
+  libsepol = callPackage ../os-specific/linux/libsepol { };
+
+  libsmbios = callPackage ../os-specific/linux/libsmbios { };
+
+  libsurvive = callPackage ../development/libraries/libsurvive { };
+
+  lm_sensors = callPackage ../os-specific/linux/lm-sensors { };
+
+  lockdep = callPackage ../os-specific/linux/lockdep { };
+
+  lsirec = callPackage ../os-specific/linux/lsirec { };
+
+  lsiutil = callPackage ../os-specific/linux/lsiutil { };
+
+  kaitai-struct-compiler = callPackage ../development/compilers/kaitai-struct-compiler { };
+
+  kmod = callPackage ../os-specific/linux/kmod { };
+
+  kmod-blacklist-ubuntu = callPackage ../os-specific/linux/kmod-blacklist-ubuntu { };
+
+  kmod-debian-aliases = callPackage ../os-specific/linux/kmod-debian-aliases { };
+
+  libcap = callPackage ../os-specific/linux/libcap { };
+
+  libcap_ng = callPackage ../os-specific/linux/libcap-ng {
+    swig = null; # Currently not using the python2/3 bindings
+    python2 = null; # Currently not using the python2 bindings
+    python3 = null; # Currently not using the python3 bindings
+  };
+
+  libnotify = callPackage ../development/libraries/libnotify { };
+
+  libvolume_id = callPackage ../os-specific/linux/libvolume_id { };
+
+  lsscsi = callPackage ../os-specific/linux/lsscsi { };
+
+  lvm2-2_03 = callPackage ../os-specific/linux/lvm2/2_03.nix {
+    # udev is the same package as systemd which depends on cryptsetup
+    # which depends on lvm2 again.  But we only need the libudev part
+    # which does not depend on cryptsetup.
+    udev = systemdMinimal;
+  };
+  lvm2-2_02 = callPackage ../os-specific/linux/lvm2/2_02.nix {
+    udev = systemdMinimal;
+  };
+  lvm2 = if stdenv.targetPlatform.isMusl then lvm2-2_02 else lvm2-2_03;
+
+  lvm2_dmeventd = lvm2.override {
+    enableDmeventd = true;
+    enableCmdlib = true;
+  };
+
+  maddy = callPackage ../servers/maddy { };
+
+  mbelib = callPackage ../development/libraries/audio/mbelib { };
+
+  mbpfan = callPackage ../os-specific/linux/mbpfan { };
+
+  mdadm = mdadm4;
+  mdadm4 = callPackage ../os-specific/linux/mdadm { };
+
+  inherit (skawarePackages) mdevd;
+
+  metastore = callPackage ../os-specific/linux/metastore { };
+
+  mingetty = callPackage ../os-specific/linux/mingetty { };
+
+  miraclecast = callPackage ../os-specific/linux/miraclecast { };
+
+  mkinitcpio-nfs-utils = callPackage ../os-specific/linux/mkinitcpio-nfs-utils { };
+
+  mmc-utils = callPackage ../os-specific/linux/mmc-utils { };
+
+  aggregateModules = modules:
+    callPackage ../os-specific/linux/kmod/aggregator.nix {
+      inherit (buildPackages) kmod;
+      inherit modules;
+    };
+
+  multipart-parser-c = callPackage ../development/libraries/multipart-parser-c { };
+
+  multipath-tools = callPackage ../os-specific/linux/multipath-tools { };
+
+  musl = callPackage ../os-specific/linux/musl { };
+
+  musl-fts = callPackage ../os-specific/linux/musl-fts { };
+  musl-obstack = callPackage ../os-specific/linux/musl-obstack { };
+
+  nsh = callPackage ../shells/nsh { };
+
+  nushell = callPackage ../shells/nushell {
+    inherit (darwin.apple_sdk.frameworks) AppKit Security;
+  };
+
+  nettools = if stdenv.isLinux
+    then callPackage ../os-specific/linux/net-tools { }
+    else unixtools.nettools;
+
+  nettools_mptcp = callPackage ../os-specific/linux/net-tools/mptcp.nix { };
+
+  nftables = callPackage ../os-specific/linux/nftables { };
+
+  noah = callPackage ../os-specific/darwin/noah {
+    inherit (darwin.apple_sdk.frameworks) Hypervisor;
+  };
+
+  numactl = callPackage ../os-specific/linux/numactl { };
+
+  numad = callPackage ../os-specific/linux/numad { };
+
+  nvme-cli = callPackage ../os-specific/linux/nvme-cli { };
+
+  nvmet-cli = callPackage ../os-specific/linux/nvmet-cli { };
+
+  system76-firmware = callPackage ../os-specific/linux/firmware/system76-firmware { };
+
+  ocf-resource-agents = callPackage ../os-specific/linux/ocf-resource-agents { };
+
+  open-vm-tools = callPackage ../applications/virtualization/open-vm-tools { };
+  open-vm-tools-headless = open-vm-tools.override { withX = false; };
+
+  air = callPackage ../development/tools/air { };
+
+  delve = callPackage ../development/tools/delve { };
+
+  dep = callPackage ../development/tools/dep { };
+
+  dep2nix = callPackage ../development/tools/dep2nix { };
+
+  easyjson = callPackage ../development/tools/easyjson { };
+
+  iferr = callPackage ../development/tools/iferr { };
+
+  ginkgo = callPackage ../development/tools/ginkgo { };
+
+  go-bindata = callPackage ../development/tools/go-bindata { };
+
+  go-bindata-assetfs = callPackage ../development/tools/go-bindata-assetfs { };
+
+  go-minimock = callPackage ../development/tools/go-minimock { };
+
+  go-protobuf = callPackage ../development/tools/go-protobuf { };
+
+  go-symbols = callPackage ../development/tools/go-symbols { };
+
+  go-toml = callPackage ../development/tools/go-toml { };
+
+  go-outline = callPackage ../development/tools/go-outline { };
+
+  gocode = callPackage ../development/tools/gocode { };
+
+  gocode-gomod = callPackage ../development/tools/gocode-gomod { };
+
+  goconst = callPackage ../development/tools/goconst { };
+
+  goconvey = callPackage ../development/tools/goconvey { };
+
+  gofumpt = callPackage ../development/tools/gofumpt { };
+
+  gotags = callPackage ../development/tools/gotags { };
+
+  go-task = callPackage ../development/tools/go-task { };
+
+  golint = callPackage ../development/tools/golint { };
+
+  golangci-lint = callPackage ../development/tools/golangci-lint { };
+
+  gocyclo = callPackage ../development/tools/gocyclo { };
+
+  godef = callPackage ../development/tools/godef { };
+
+  gopkgs = callPackage ../development/tools/gopkgs { };
+
+  gosec = callPackage ../development/tools/gosec { };
+
+  govers = callPackage ../development/tools/govers { };
+
+  govendor = callPackage ../development/tools/govendor { };
+
+  go-tools = callPackage ../development/tools/go-tools { };
+
+  gotest = callPackage ../development/tools/gotest { };
+
+  gotools = callPackage ../development/tools/gotools { };
+
+  gotop = callPackage ../tools/system/gotop { };
+
+  go-migrate = callPackage ../development/tools/go-migrate { };
+
+  go-mockery = callPackage ../development/tools/go-mockery { };
+
+  gomacro = callPackage ../development/tools/gomacro { };
+
+  gomodifytags = callPackage ../development/tools/gomodifytags { };
+
+  go-langserver = callPackage ../development/tools/go-langserver { };
+
+  gopls = callPackage ../development/tools/gopls { };
+
+  gops = callPackage ../development/tools/gops { };
+
+  gore = callPackage ../development/tools/gore { };
+
+  gotests = callPackage ../development/tools/gotests { };
+
+  gotestsum = callPackage ../development/tools/gotestsum { };
+
+  impl = callPackage ../development/tools/impl { };
+
+  quicktemplate = callPackage ../development/tools/quicktemplate { };
+
+  linux-pam = callPackage ../os-specific/linux/pam { };
+
+  nss_ldap = callPackage ../os-specific/linux/nss_ldap { };
+
+  octomap = callPackage ../development/libraries/octomap { };
+
+  odin = callPackage ../development/compilers/odin { };
+
+  odp-dpdk = callPackage ../os-specific/linux/odp-dpdk { };
+
+  odroid-xu3-bootloader = callPackage ../tools/misc/odroid-xu3-bootloader { };
+
+  ofono = callPackage ../tools/networking/ofono { };
+
+  okapi = callPackage ../development/libraries/okapi {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  openpam = callPackage ../development/libraries/openpam { };
+
+  openbsm = callPackage ../development/libraries/openbsm { };
+
+  pagemon = callPackage ../os-specific/linux/pagemon { };
+
+  pam = if stdenv.isLinux then linux-pam else openpam;
+
+  # pam_bioapi ( see http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader )
+
+  pam_ccreds = callPackage ../os-specific/linux/pam_ccreds { };
+
+  pam_gnupg = callPackage ../os-specific/linux/pam_gnupg { };
+
+  pam_krb5 = callPackage ../os-specific/linux/pam_krb5 { };
+
+  pam_ldap = callPackage ../os-specific/linux/pam_ldap { };
+
+  pam_mount = callPackage ../os-specific/linux/pam_mount { };
+
+  pam_p11 = callPackage ../os-specific/linux/pam_p11 { };
+
+  pam_pgsql = callPackage ../os-specific/linux/pam_pgsql { };
+
+  pam_ssh_agent_auth = callPackage ../os-specific/linux/pam_ssh_agent_auth { };
+
+  pam_u2f = callPackage ../os-specific/linux/pam_u2f { };
+
+  pam_usb = callPackage ../os-specific/linux/pam_usb { };
+
+  paxctl = callPackage ../os-specific/linux/paxctl { };
+
+  paxtest = callPackage ../os-specific/linux/paxtest { };
+
+  pax-utils = callPackage ../os-specific/linux/pax-utils { };
+
+  pcmciaUtils = callPackage ../os-specific/linux/pcmciautils { };
+
+  pcstat = callPackage ../tools/system/pcstat { };
+
+  perf-tools = callPackage ../os-specific/linux/perf-tools { };
+
+  pipes = callPackage ../misc/screensavers/pipes { };
+
+  pipes-rs = callPackage ../misc/screensavers/pipes-rs { };
+
+  pipework = callPackage ../os-specific/linux/pipework { };
+
+  pktgen = callPackage ../os-specific/linux/pktgen { };
+
+  plymouth = callPackage ../os-specific/linux/plymouth { };
+
+  pmount = callPackage ../os-specific/linux/pmount { };
+
+  pmutils = callPackage ../os-specific/linux/pm-utils { };
+
+  policycoreutils = callPackage ../os-specific/linux/policycoreutils { };
+
+  semodule-utils = callPackage ../os-specific/linux/semodule-utils { };
+
+  powerdns = callPackage ../servers/dns/powerdns {
+    boost = boost172;
+  };
+
+  powerdns-admin = callPackage ../applications/networking/powerdns-admin { };
+
+  dnsdist = callPackage ../servers/dns/dnsdist { };
+
+  pdns-recursor = callPackage ../servers/dns/pdns-recursor { };
+
+  powertop = callPackage ../os-specific/linux/powertop { };
+
+  pps-tools = callPackage ../os-specific/linux/pps-tools { };
+
+  prayer = callPackage ../servers/prayer { };
+
+  procps = if stdenv.isLinux
+    then callPackage ../os-specific/linux/procps-ng { }
+    else unixtools.procps;
+
+  procdump = callPackage ../os-specific/linux/procdump { };
+
+  prototool = callPackage ../development/tools/prototool { };
+
+  qemu_kvm = lowPrio (qemu.override { hostCpuOnly = true; });
+  qemu_full = lowPrio (qemu.override { smbdSupport = true; cephSupport = true; glusterfsSupport = true; });
+
+  # See `xenPackages` source for explanations.
+  # Building with `xen` instead of `xen-slim` is possible, but makes no sense.
+  qemu_xen = lowPrio (qemu.override { hostCpuOnly = true; xenSupport = true; xen = xen-slim; });
+  qemu_xen-light = lowPrio (qemu.override { hostCpuOnly = true; xenSupport = true; xen = xen-light; });
+  qemu_xen_4_10 = lowPrio (qemu.override { hostCpuOnly = true; xenSupport = true; xen = xen_4_10-slim; });
+  qemu_xen_4_10-light = lowPrio (qemu.override { hostCpuOnly = true; xenSupport = true; xen = xen_4_10-light; });
+
+  qemu_test = lowPrio (qemu.override { hostCpuOnly = true; nixosTestRunner = true; });
+
+  quick-lint-js = callPackage ../development/tools/quick-lint-js { };
+
+  linux-firmware = callPackage ../os-specific/linux/firmware/linux-firmware { };
+
+  qmk-udev-rules = callPackage ../os-specific/linux/qmk-udev-rules { };
+
+  radeontools = callPackage ../os-specific/linux/radeontools { };
+
+  radeontop = callPackage ../os-specific/linux/radeontop { };
+
+  rasdaemon = callPackage ../os-specific/linux/rasdaemon { };
+
+  raspberrypifw = callPackage ../os-specific/linux/firmware/raspberrypi {};
+  raspberrypiWirelessFirmware = callPackage ../os-specific/linux/firmware/raspberrypi-wireless { };
+
+  raspberrypi-eeprom = callPackage ../os-specific/linux/raspberrypi-eeprom {};
+
+  raspberrypi-armstubs = callPackage ../os-specific/linux/firmware/raspberrypi/armstubs.nix {};
+
+  regionset = callPackage ../os-specific/linux/regionset { };
+
+  rfkill_udev = callPackage ../os-specific/linux/rfkill/udev.nix { };
+
+  riscv-pk = callPackage ../misc/riscv-pk { };
+
+  ristate = callPackage ../tools/misc/ristate { };
+
+  roccat-tools = callPackage ../os-specific/linux/roccat-tools { };
+
+  rtsp-simple-server = callPackage ../servers/rtsp-simple-server { };
+
+  rtkit = callPackage ../os-specific/linux/rtkit { };
+
+  rt5677-firmware = callPackage ../os-specific/linux/firmware/rt5677 { };
+
+  rtl8192su-firmware = callPackage ../os-specific/linux/firmware/rtl8192su-firmware { };
+
+  rtl8723bs-firmware = callPackage ../os-specific/linux/firmware/rtl8723bs-firmware { };
+
+  rtl8761b-firmware = callPackage ../os-specific/linux/firmware/rtl8761b-firmware { };
+
+  rtw88-firmware = callPackage ../os-specific/linux/firmware/rtw88-firmware { };
+
+  rtw89-firmware = callPackage ../os-specific/linux/firmware/rtw89-firmware { };
+
+  s3ql = callPackage ../tools/backup/s3ql { };
+
+  sass = callPackage ../development/tools/sass { };
+
+  sassc = callPackage ../development/tools/sassc { };
+
+  scanmem = callPackage ../tools/misc/scanmem { };
+
+  schedtool = callPackage ../os-specific/linux/schedtool { };
+
+  sdparm = callPackage ../os-specific/linux/sdparm { };
+
+  sdrangel = libsForQt5.callPackage ../applications/radio/sdrangel {
+    boost = boost172;
+  };
+
+  setools = callPackage ../os-specific/linux/setools { };
+
+  seturgent = callPackage ../os-specific/linux/seturgent { };
+
+  sgx-sdk = callPackage ../os-specific/linux/sgx/sdk { };
+
+  sgx-ssl = callPackage ../os-specific/linux/sgx/ssl { };
+
+  sgx-psw = callPackage ../os-specific/linux/sgx/psw { };
+
+  shadow = callPackage ../os-specific/linux/shadow { };
+
+  sinit = callPackage ../os-specific/linux/sinit {
+    rcinit = "/etc/rc.d/rc.init";
+    rcshutdown = "/etc/rc.d/rc.shutdown";
+  };
+
+  skopeo = callPackage ../development/tools/skopeo { };
+
+  smem = callPackage ../os-specific/linux/smem { };
+
+  smimesign = callPackage ../os-specific/darwin/smimesign { };
+
+  solo5 = callPackage ../os-specific/solo5 { };
+
+  speedometer = callPackage ../os-specific/linux/speedometer { };
+
+  statik = callPackage ../development/tools/statik { };
+
+  statifier = callPackage ../os-specific/linux/statifier { };
+
+  sysdig = callPackage ../os-specific/linux/sysdig {
+    kernel = null;
+  }; # sysdig is a client, for a driver look at linuxPackagesFor
+
+  sysfsutils = callPackage ../os-specific/linux/sysfsutils { };
+
+  sysprof = callPackage ../development/tools/profiling/sysprof { };
+
+  libsysprof-capture = callPackage ../development/tools/profiling/sysprof/capture.nix { };
+
+  sysklogd = callPackage ../os-specific/linux/sysklogd { };
+
+  syslinux = callPackage ../os-specific/linux/syslinux { };
+
+  sysstat = callPackage ../os-specific/linux/sysstat { };
+
+  systemd = callPackage ../os-specific/linux/systemd {
+    # break some cyclic dependencies
+    util-linux = util-linuxMinimal;
+    # provide a super minimal gnupg used for systemd-machined
+    gnupg = callPackage ../tools/security/gnupg/23.nix {
+      enableMinimal = true;
+      guiSupport = false;
+      pcsclite = null;
+      sqlite = null;
+      pinentry = null;
+      adns = null;
+      gnutls = null;
+      libusb1 = null;
+      openldap = null;
+      readline = null;
+      zlib = null;
+      bzip2 = null;
+    };
+  };
+  systemdMinimal = systemd.override {
+    pname = "systemd-minimal";
+    withAnalyze = false;
+    withApparmor = false;
+    withCompression = false;
+    withCoredump = false;
+    withCryptsetup = false;
+    withDocumentation = false;
+    withEfi = false;
+    withFido2 = false;
+    withHostnamed = false;
+    withHwdb = false;
+    withImportd = false;
+    withLibBPF = false;
+    withLocaled = false;
+    withLogind = false;
+    withMachined = false;
+    withNetworkd = false;
+    withNss = false;
+    withOomd = false;
+    withPCRE2 = false;
+    withPolkit = false;
+    withRemote = false;
+    withResolved = false;
+    withShellCompletions = false;
+    withTimedated = false;
+    withTimesyncd = false;
+    withTpm2Tss = false;
+    withUserDb = false;
+    glib = null;
+    libgcrypt = null;
+    lvm2 = null;
+    libfido2 = null;
+    p11-kit = null;
+  };
+
+
+  udev = systemd; # TODO: change to systemdMinimal
+
+  systemd-wait = callPackage ../os-specific/linux/systemd-wait { };
+
+  sysvinit = callPackage ../os-specific/linux/sysvinit { };
+
+  sysvtools = sysvinit.override {
+    withoutInitTools = true;
+  };
+
+  # FIXME: `tcp-wrapper' is actually not OS-specific.
+  tcp_wrappers = callPackage ../os-specific/linux/tcp-wrappers { };
+
+  teck-udev-rules = callPackage ../os-specific/linux/teck-udev-rules { };
+
+  tiptop = callPackage ../os-specific/linux/tiptop { };
+
+  tpacpi-bat = callPackage ../os-specific/linux/tpacpi-bat { };
+
+  trickster = callPackage ../servers/trickster/trickster.nix {};
+
+  trinity = callPackage ../os-specific/linux/trinity { };
+
+  trinsic-cli = callPackage ../tools/admin/trinsic-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tunctl = callPackage ../os-specific/linux/tunctl { };
+
+  twa = callPackage ../tools/networking/twa { };
+
+  # Upstream U-Boots:
+  inherit (callPackage ../misc/uboot {})
+    buildUBoot
+    ubootTools
+    ubootA20OlinuxinoLime
+    ubootA20OlinuxinoLime2EMMC
+    ubootBananaPi
+    ubootBananaPim3
+    ubootBananaPim64
+    ubootAmx335xEVM
+    ubootClearfog
+    ubootCubieboard2
+    ubootGuruplug
+    ubootJetsonTK1
+    ubootNanoPCT4
+    ubootNovena
+    ubootOdroidC2
+    ubootOdroidXU3
+    ubootOlimexA64Olinuxino
+    ubootOrangePiPc
+    ubootOrangePiZeroPlus2H5
+    ubootOrangePiZero
+    ubootOrangePiZero2
+    ubootPcduino3Nano
+    ubootPine64
+    ubootPine64LTS
+    ubootPinebook
+    ubootPinebookPro
+    ubootQemuAarch64
+    ubootQemuArm
+    ubootQemuRiscv64Smode
+    ubootQemuX86
+    ubootRaspberryPi
+    ubootRaspberryPi2
+    ubootRaspberryPi3_32bit
+    ubootRaspberryPi3_64bit
+    ubootRaspberryPi4_32bit
+    ubootRaspberryPi4_64bit
+    ubootRaspberryPiZero
+    ubootRock64
+    ubootRockPi4
+    ubootRockPro64
+    ubootROCPCRK3399
+    ubootSheevaplug
+    ubootSopine
+    ubootUtilite
+    ubootWandboard
+    ;
+
+  # Upstream Barebox:
+  inherit (callPackage ../misc/barebox {})
+    buildBarebox
+    bareboxTools;
+
+  uclibc = callPackage ../os-specific/linux/uclibc { };
+
+  uclibcCross = callPackage ../os-specific/linux/uclibc {
+    stdenv = crossLibcStdenv;
+  };
+
+  eudev = callPackage ../os-specific/linux/eudev { util-linux = util-linuxMinimal; };
+
+  libudev0-shim = callPackage ../os-specific/linux/libudev0-shim { };
+
+  udisks1 = callPackage ../os-specific/linux/udisks/1-default.nix { };
+  udisks2 = callPackage ../os-specific/linux/udisks/2-default.nix { };
+  udisks = udisks2;
+
+  udisks_glue = callPackage ../os-specific/linux/udisks-glue { };
+
+  ugtrain = callPackage ../tools/misc/ugtrain { };
+
+  untie = callPackage ../os-specific/linux/untie { };
+
+  upower = callPackage ../os-specific/linux/upower { };
+
+  usbguard = callPackage ../os-specific/linux/usbguard {
+    libgcrypt = null;
+  };
+
+  usbtop = callPackage ../os-specific/linux/usbtop { };
+
+  usbutils = callPackage ../os-specific/linux/usbutils { };
+
+  userhosts = callPackage ../tools/networking/userhosts { };
+
+  usermount = callPackage ../os-specific/linux/usermount { };
+
+  util-linux = if stdenv.isLinux then callPackage ../os-specific/linux/util-linux { }
+              else unixtools.util-linux;
+
+  util-linuxCurses = util-linux;
+
+  util-linuxMinimal = if stdenv.isLinux then appendToName "minimal" (util-linux.override {
+    nlsSupport = false;
+    ncurses = null;
+    systemd = null;
+  }) else util-linux;
+
+  v4l-utils = qt5.callPackage ../os-specific/linux/v4l-utils { };
+
+  vendir = callPackage ../development/tools/vendir { };
+
+  vndr = callPackage ../development/tools/vndr { };
+
+  windows = callPackages ../os-specific/windows {};
+
+  wirelesstools = callPackage ../os-specific/linux/wireless-tools { };
+
+  wooting-udev-rules = callPackage ../os-specific/linux/wooting-udev-rules { };
+
+  wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant { };
+
+  wpa_supplicant_ro_ssids = wpa_supplicant.override {
+    readOnlyModeSSIDs = true;
+  };
+
+  wpa_supplicant_gui = libsForQt5.callPackage ../os-specific/linux/wpa_supplicant/gui.nix { };
+
+  xf86_input_cmt = callPackage ../os-specific/linux/xf86-input-cmt { };
+
+  xf86_input_wacom = callPackage ../os-specific/linux/xf86-input-wacom { };
+
+  xf86_video_nested = callPackage ../os-specific/linux/xf86-video-nested { };
+
+  xilinx-bootgen = callPackage ../tools/misc/xilinx-bootgen { };
+
+  xorg_sys_opengl = callPackage ../os-specific/linux/opengl/xorg-sys { };
+
+  zd1211fw = callPackage ../os-specific/linux/firmware/zd1211 { };
+
+  zenmonitor = callPackage ../os-specific/linux/zenmonitor { };
+
+  inherit (callPackages ../os-specific/linux/zfs {
+    configFile = "user";
+  }) zfsStable zfsUnstable;
+
+  zfs = zfsStable;
+
+  ### DATA
+
+  _3270font = callPackage ../data/fonts/3270font { };
+
+  adapta-backgrounds = callPackage ../data/misc/adapta-backgrounds { };
+
+  adapta-gtk-theme = callPackage ../data/themes/adapta { };
+
+  adapta-kde-theme = callPackage ../data/themes/adapta-kde { };
+
+  adementary-theme = callPackage ../data/themes/adementary { };
+
+  adwaita-qt = libsForQt5.callPackage ../data/themes/adwaita-qt { };
+
+  agave = callPackage ../data/fonts/agave { };
+
+  aileron = callPackage ../data/fonts/aileron { };
+
+  albatross = callPackage ../data/themes/albatross { };
+
+  alegreya = callPackage ../data/fonts/alegreya { };
+
+  alegreya-sans = callPackage ../data/fonts/alegreya-sans { };
+
+  amber-theme = callPackage ../data/themes/amber { };
+
+  amiri = callPackage ../data/fonts/amiri { };
+
+  anarchism = callPackage ../data/documentation/anarchism { };
+
+  ananicy = callPackage ../misc/ananicy { };
+
+  ananicy-cpp = callPackage ../misc/ananicy-cpp { };
+
+  andagii = callPackage ../data/fonts/andagii { };
+
+  andika = callPackage ../data/fonts/andika { };
+
+  android-udev-rules = callPackage ../os-specific/linux/android-udev-rules { };
+
+  ankacoder = callPackage ../data/fonts/ankacoder { };
+  ankacoder-condensed = callPackage ../data/fonts/ankacoder/condensed.nix { };
+
+  anonymousPro = callPackage ../data/fonts/anonymous-pro { };
+
+  ant-theme = callPackage ../data/themes/ant-theme/ant.nix { };
+
+  ant-bloody-theme = callPackage ../data/themes/ant-theme/ant-bloody.nix { };
+
+  dracula-theme = callPackage ../data/themes/dracula-theme { };
+
+  ant-nebula-theme = callPackage ../data/themes/ant-theme/ant-nebula.nix { };
+
+  arc-icon-theme = callPackage ../data/icons/arc-icon-theme { };
+
+  arc-kde-theme = callPackage ../data/themes/arc-kde { };
+
+  arc-theme = callPackage ../data/themes/arc { };
+
+  arkpandora_ttf = callPackage ../data/fonts/arkpandora { };
+
+  aurulent-sans = callPackage ../data/fonts/aurulent-sans { };
+
+  ayu-theme-gtk = callPackage ../data/themes/ayu-theme-gtk { };
+
+  b612  = callPackage ../data/fonts/b612 { };
+
+  babelstone-han = callPackage ../data/fonts/babelstone-han { };
+
+  baekmuk-ttf = callPackage ../data/fonts/baekmuk-ttf { };
+
+  bakoma_ttf = callPackage ../data/fonts/bakoma-ttf { };
+
+  barlow = callPackage ../data/fonts/barlow { };
+
+  bgnet = callPackage ../data/documentation/bgnet { };
+
+  bibata-cursors = callPackage ../data/icons/bibata-cursors { };
+  bibata-extra-cursors = callPackage ../data/icons/bibata-cursors/extra.nix { };
+  bibata-cursors-translucent = callPackage ../data/icons/bibata-cursors/translucent.nix { };
+
+  blackbird = callPackage ../data/themes/blackbird { };
+
+  brise = callPackage ../data/misc/brise { };
+
+  cacert = callPackage ../data/misc/cacert { };
+
+  caladea = callPackage ../data/fonts/caladea {};
+
+  canta-theme = callPackage ../data/themes/canta { };
+
+  cantarell-fonts = callPackage ../data/fonts/cantarell-fonts { };
+
+  capitaine-cursors = callPackage ../data/icons/capitaine-cursors { };
+
+  carlito = callPackage ../data/fonts/carlito {};
+
+  cascadia-code = callPackage ../data/fonts/cascadia-code { };
+
+  charis-sil = callPackage ../data/fonts/charis-sil { };
+
+  cherry = callPackage ../data/fonts/cherry { inherit (xorg) fonttosfnt mkfontdir; };
+
+  chonburi-font = callPackage ../data/fonts/chonburi { };
+
+  cldr-emoji-annotation = callPackage ../data/misc/cldr-emoji-annotation { };
+
+  clearlooks-phenix = callPackage ../data/themes/clearlooks-phenix { };
+
+  cnstrokeorder = callPackage ../data/fonts/cnstrokeorder {};
+
+  comfortaa = callPackage ../data/fonts/comfortaa {};
+
+  comic-neue = callPackage ../data/fonts/comic-neue { };
+
+  comic-relief = callPackage ../data/fonts/comic-relief {};
+
+  comixcursors = callPackage ../data/icons/comixcursors {};
+
+  coreclr = callPackage ../development/compilers/coreclr { };
+
+  corefonts = callPackage ../data/fonts/corefonts { };
+
+  courier-prime = callPackage ../data/fonts/courier-prime { };
+
+  cozette = callPackage ../data/fonts/cozette { };
+
+  culmus = callPackage ../data/fonts/culmus { };
+
+  clearlyU = callPackage ../data/fonts/clearlyU
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  cm_unicode = callPackage ../data/fonts/cm-unicode {};
+
+  creep = callPackage ../data/fonts/creep
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  crimson = callPackage ../data/fonts/crimson {};
+
+  dejavu_fonts = lowPrio (callPackage ../data/fonts/dejavu-fonts {});
+
+  # solve collision for nix-env before https://github.com/NixOS/nix/pull/815
+  dejavu_fontsEnv = buildEnv {
+    name = dejavu_fonts.name;
+    paths = [ dejavu_fonts.out ];
+  };
+
+  dina-font = callPackage ../data/fonts/dina
+    { inherit (buildPackages.xorg) mkfontscale; };
+
+  dns-root-data = callPackage ../data/misc/dns-root-data { };
+
+  docbook5 = callPackage ../data/sgml+xml/schemas/docbook-5.0 { };
+
+  docbook_sgml_dtd_31 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix { };
+
+  docbook_sgml_dtd_41 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix { };
+
+  docbook_xml_dtd_412 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix { };
+
+  docbook_xml_dtd_42 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix { };
+
+  docbook_xml_dtd_43 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix { };
+
+  docbook_xml_dtd_44 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix { };
+
+  docbook_xml_dtd_45 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix { };
+
+  docbook_xml_ebnf_dtd = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook-ebnf { };
+
+  inherit (callPackages ../data/sgml+xml/stylesheets/xslt/docbook-xsl { })
+    docbook-xsl-nons
+    docbook-xsl-ns;
+
+  # TODO: move this to aliases
+  docbook_xsl = docbook-xsl-nons;
+  docbook_xsl_ns = docbook-xsl-ns;
+
+  documentation-highlighter = callPackage ../misc/documentation-highlighter { };
+
+  documize-community = callPackage ../servers/documize-community { };
+
+  doge = callPackage ../misc/doge { };
+
+  doulos-sil = callPackage ../data/fonts/doulos-sil { };
+
+  cabin = callPackage ../data/fonts/cabin { };
+
+  camingo-code = callPackage ../data/fonts/camingo-code { };
+
+  combinatorial_designs = callPackage ../data/misc/combinatorial_designs { };
+
+  conway_polynomials = callPackage ../data/misc/conway_polynomials { };
+
+  cooper-hewitt = callPackage ../data/fonts/cooper-hewitt { };
+
+  d2coding = callPackage ../data/fonts/d2coding { };
+
+  dosis = callPackage ../data/fonts/dosis { };
+
+  dosemu_fonts = callPackage ../data/fonts/dosemu-fonts { };
+
+  e17gtk = callPackage ../data/themes/e17gtk { };
+
+  eb-garamond = callPackage ../data/fonts/eb-garamond { };
+
+  edukai = callPackage ../data/fonts/edukai { };
+
+  eduli = callPackage ../data/fonts/eduli { };
+
+  moeli = eduli;
+
+  edusong = callPackage ../data/fonts/edusong { };
+
+  efont-unicode = callPackage ../data/fonts/efont-unicode { };
+
+  elliptic_curves = callPackage ../data/misc/elliptic_curves { };
+
+  equilux-theme = callPackage ../data/themes/equilux-theme { };
+
+  eunomia = callPackage ../data/fonts/eunomia { };
+
+  f5_6 = callPackage ../data/fonts/f5_6 { };
+
+  faba-icon-theme = callPackage ../data/icons/faba-icon-theme { };
+
+  faba-mono-icons = callPackage ../data/icons/faba-mono-icons { };
+
+  ferrum = callPackage ../data/fonts/ferrum { };
+
+  fixedsys-excelsior = callPackage ../data/fonts/fixedsys-excelsior { };
+
+  graphs = callPackage ../data/misc/graphs { };
+
+  emacs-all-the-icons-fonts = callPackage ../data/fonts/emacs-all-the-icons-fonts { };
+
+  emojione = callPackage ../data/fonts/emojione {
+    inherit (nodePackages) svgo;
+  };
+
+  emojipick = callPackage ../applications/misc/emojipick { };
+
+  encode-sans = callPackage ../data/fonts/encode-sans { };
+
+  envypn-font = callPackage ../data/fonts/envypn-font
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  envdir = callPackage ../tools/misc/envdir-go { };
+
+  execline-man-pages = skawarePackages.execline-man-pages;
+
+  fantasque-sans-mono = callPackage ../data/fonts/fantasque-sans-mono {};
+
+  fira = callPackage ../data/fonts/fira { };
+
+  fira-code = callPackage ../data/fonts/fira-code { };
+  fira-code-symbols = callPackage ../data/fonts/fira-code/symbols.nix { };
+
+  fira-mono = callPackage ../data/fonts/fira-mono { };
+
+  flat-remix-icon-theme = callPackage ../data/icons/flat-remix-icon-theme {
+    inherit (plasma5Packages) breeze-icons;
+  };
+  flat-remix-gtk = callPackage ../data/themes/flat-remix-gtk { };
+  flat-remix-gnome = callPackage ../data/themes/flat-remix-gnome { };
+
+  font-awesome_4 = (callPackage ../data/fonts/font-awesome-5 { }).v4;
+  font-awesome_5 = (callPackage ../data/fonts/font-awesome-5 { }).v5;
+  font-awesome = font-awesome_5;
+
+  fraunces = callPackage ../data/fonts/fraunces { };
+
+  freefont_ttf = callPackage ../data/fonts/freefont-ttf { };
+
+  freepats = callPackage ../data/misc/freepats { };
+
+  g15daemon = callPackage ../os-specific/linux/g15daemon {};
+
+  gentium = callPackage ../data/fonts/gentium {};
+
+  gentium-book-basic = callPackage ../data/fonts/gentium-book-basic {};
+
+  geolite-legacy = callPackage ../data/misc/geolite-legacy { };
+
+  gohufont = callPackage ../data/fonts/gohufont
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  gnome-user-docs = callPackage ../data/documentation/gnome-user-docs { };
+
+  gsettings-desktop-schemas = callPackage ../development/libraries/gsettings-desktop-schemas { };
+
+  gnome-breeze = callPackage ../data/themes/gnome-breeze { };
+
+  gnome-icon-theme = callPackage ../data/icons/gnome-icon-theme { };
+
+  go-font = callPackage ../data/fonts/go-font { };
+
+  graphite-gtk-theme = callPackage ../data/themes/graphite-gtk-theme { };
+
+  graphite-kde-theme = callPackage ../data/themes/graphite-kde-theme { };
+
+  greybird = callPackage ../data/themes/greybird { };
+
+  gruvbox-dark-gtk = callPackage ../data/themes/gruvbox-dark-gtk { };
+
+  palenight-theme = callPackage ../data/themes/gtk-theme-framework { theme = "palenight"; };
+
+  amarena-theme = callPackage ../data/themes/gtk-theme-framework { theme = "amarena"; };
+
+  gruvterial-theme = callPackage ../data/themes/gtk-theme-framework { theme = "gruvterial"; };
+
+  oceanic-theme = callPackage ../data/themes/gtk-theme-framework { theme = "oceanic"; };
+
+  spacx-gtk-theme = callPackage ../data/themes/gtk-theme-framework { theme = "spacx"; };
+
+  gruvbox-dark-icons-gtk = callPackage ../data/icons/gruvbox-dark-icons-gtk {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  gubbi-font = callPackage ../data/fonts/gubbi { };
+
+  gyre-fonts = callPackage ../data/fonts/gyre {};
+
+  hack-font = callPackage ../data/fonts/hack { };
+
+  helvetica-neue-lt-std = callPackage ../data/fonts/helvetica-neue-lt-std { };
+
+  helvum = callPackage ../applications/audio/helvum { };
+
+  hetzner-kube = callPackage ../applications/networking/cluster/hetzner-kube { };
+
+  hicolor-icon-theme = callPackage ../data/icons/hicolor-icon-theme { };
+
+  hannom = callPackage ../data/fonts/hannom { };
+
+  hanazono = callPackage ../data/fonts/hanazono { };
+
+  hermit = callPackage ../data/fonts/hermit { };
+
+  humanity-icon-theme = callPackage ../data/icons/humanity-icon-theme { };
+
+  hyperscrypt-font = callPackage ../data/fonts/hyperscrypt { };
+
+  ia-writer-duospace = callPackage ../data/fonts/ia-writer-duospace { };
+
+  i-dot-ming = callPackage ../data/fonts/i-dot-ming { };
+
+  ibm-plex = callPackage ../data/fonts/ibm-plex { };
+
+  iconpack-jade = callPackage ../data/icons/iconpack-jade { };
+
+  iconpack-obsidian = callPackage ../data/icons/iconpack-obsidian { };
+
+  inconsolata = callPackage ../data/fonts/inconsolata {};
+
+  inconsolata-lgc = callPackage ../data/fonts/inconsolata/lgc.nix {};
+
+  inconsolata-nerdfont = nerdfonts.override {
+    fonts = [ "Inconsolata" ];
+  };
+
+  input-fonts = callPackage ../data/fonts/input-fonts { };
+
+  inriafonts = callPackage ../data/fonts/inriafonts { };
+
+  iosevka = callPackage ../data/fonts/iosevka {};
+  iosevka-bin = callPackage ../data/fonts/iosevka/bin.nix {};
+
+  ipafont = callPackage ../data/fonts/ipafont {};
+  ipaexfont = callPackage ../data/fonts/ipaexfont {};
+
+  iwona = callPackage ../data/fonts/iwona { };
+
+  jetbrains-mono = callPackage ../data/fonts/jetbrains-mono { };
+
+  jost = callPackage ../data/fonts/jost { };
+
+  joypixels = callPackage ../data/fonts/joypixels { };
+
+  junicode = callPackage ../data/fonts/junicode { };
+
+  julia-mono = callPackage ../data/fonts/julia-mono { };
+
+  juno-theme = callPackage ../data/themes/juno { };
+
+  kanit-font = callPackage ../data/fonts/kanit { };
+
+  kanji-stroke-order-font = callPackage ../data/fonts/kanji-stroke-order-font {};
+
+  kawkab-mono-font = callPackage ../data/fonts/kawkab-mono {};
+
+  kde-rounded-corners = libsForQt5.callPackage ../data/themes/kwin-decorations/kde-rounded-corners { };
+
+  kochi-substitute = callPackage ../data/fonts/kochi-substitute {};
+
+  kochi-substitute-naga10 = callPackage ../data/fonts/kochi-substitute-naga10 {};
+
+  kopia = callPackage ../tools/backup/kopia { };
+
+  kora-icon-theme = callPackage ../data/icons/kora-icon-theme {
+    inherit (gnome) adwaita-icon-theme;
+    inherit (libsForQt5.kdeFrameworks) breeze-icons;
+  };
+
+  koreader = callPackage ../applications/misc/koreader {};
+
+  kreative-square-fonts = callPackage ../data/fonts/kreative-square-fonts { };
+
+  la-capitaine-icon-theme = callPackage ../data/icons/la-capitaine-icon-theme {
+    inherit (plasma5Packages) breeze-icons;
+    inherit (pantheon) elementary-icon-theme;
+  };
+
+  layan-gtk-theme = callPackage ../data/themes/layan-gtk-theme { };
+
+  layan-kde = callPackage ../data/themes/layan-kde { };
+
+  lato = callPackage ../data/fonts/lato {};
+
+  league-of-moveable-type = callPackage ../data/fonts/league-of-moveable-type {};
+
+  ledger-udev-rules = callPackage ../os-specific/linux/ledger-udev-rules {};
+
+  inherit (callPackages ../data/fonts/liberation-fonts { })
+    liberation_ttf_v1
+    liberation_ttf_v2
+    ;
+  liberation_ttf = liberation_ttf_v2;
+
+  liberation-sans-narrow = callPackage ../data/fonts/liberation-sans-narrow { };
+
+  libevdevc = callPackage ../os-specific/linux/libevdevc { };
+
+  libgestures = callPackage ../os-specific/linux/libgestures { };
+
+  liberastika = callPackage ../data/fonts/liberastika { };
+
+  libertine = callPackage ../data/fonts/libertine { };
+
+  libertinus = callPackage ../data/fonts/libertinus { };
+
+  libratbag = callPackage ../os-specific/linux/libratbag { };
+
+  libre-baskerville = callPackage ../data/fonts/libre-baskerville { };
+
+  libre-bodoni = callPackage ../data/fonts/libre-bodoni { };
+
+  libre-caslon = callPackage ../data/fonts/libre-caslon { };
+
+  libre-franklin = callPackage ../data/fonts/libre-franklin { };
+
+  lightly-qt = libsForQt5.callPackage ../data/themes/lightly-qt { };
+
+  line-awesome = callPackage ../data/fonts/line-awesome { };
+
+  linux-manual = callPackage ../data/documentation/linux-manual { };
+
+  lmmath = callPackage ../data/fonts/lmmath {};
+
+  lmodern = callPackage ../data/fonts/lmodern { };
+
+  logitech-udev-rules = callPackage ../os-specific/linux/logitech-udev-rules {};
+
+  # lohit-fonts.assamese lohit-fonts.bengali lohit-fonts.devanagari lohit-fonts.gujarati lohit-fonts.gurmukhi
+  # lohit-fonts.kannada lohit-fonts.malayalam lohit-fonts.marathi lohit-fonts.nepali lohit-fonts.odia
+  # lohit-fonts.tamil-classical lohit-fonts.tamil lohit-fonts.telugu
+  # lohit-fonts.kashmiri lohit-fonts.konkani lohit-fonts.maithili lohit-fonts.sindhi
+  lohit-fonts = recurseIntoAttrs ( callPackages ../data/fonts/lohit-fonts { } );
+
+  lounge-gtk-theme = callPackage ../data/themes/lounge { };
+
+  luculent = callPackage ../data/fonts/luculent { };
+
+  luna-icons = callPackage ../data/icons/luna-icons {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  lxgw-wenkai = callPackage ../data/fonts/lxgw-wenkai { };
+
+  maia-icon-theme = libsForQt5.callPackage ../data/icons/maia-icon-theme { };
+
+  mailcap = callPackage ../data/misc/mailcap { };
+
+  marathi-cursive = callPackage ../data/fonts/marathi-cursive { };
+
+  man-pages = callPackage ../data/documentation/man-pages { };
+
+  man-pages-posix = callPackage ../data/documentation/man-pages-posix { };
+
+  manrope = callPackage ../data/fonts/manrope { };
+
+  marwaita = callPackage ../data/themes/marwaita { };
+
+  marwaita-manjaro = callPackage ../data/themes/marwaita-manjaro { };
+
+  marwaita-peppermint = callPackage ../data/themes/marwaita-peppermint { };
+
+  marwaita-pop_os = callPackage ../data/themes/marwaita-pop_os { };
+
+  marwaita-ubuntu = callPackage ../data/themes/marwaita-ubuntu { };
+
+  matcha-gtk-theme = callPackage ../data/themes/matcha { };
+
+  materia-theme = callPackage ../data/themes/materia-theme { };
+
+  materia-kde-theme = callPackage ../data/themes/materia-kde { };
+
+  material-design-icons = callPackage ../data/fonts/material-design-icons { };
+
+  material-icons = callPackage ../data/fonts/material-icons { };
+
+  material-kwin-decoration = libsForQt5.callPackage ../data/themes/material-kwin-decoration { };
+
+  meslo-lg = callPackage ../data/fonts/meslo-lg {};
+
+  meslo-lgs-nf = callPackage ../data/fonts/meslo-lgs-nf {};
+
+  migmix = callPackage ../data/fonts/migmix {};
+
+  migu = callPackage ../data/fonts/migu {};
+
+  miscfiles = callPackage ../data/misc/miscfiles { };
+
+  media-player-info = callPackage ../data/misc/media-player-info {};
+
+  medio = callPackage ../data/fonts/medio { };
+
+  mno16 = callPackage ../data/fonts/mno16 { };
+
+  mnist = callPackage ../data/machine-learning/mnist { };
+
+  mobile-broadband-provider-info = callPackage ../data/misc/mobile-broadband-provider-info { };
+
+  mojave-gtk-theme = callPackage ../data/themes/mojave { };
+
+  moka-icon-theme = callPackage ../data/icons/moka-icon-theme { };
+
+  monoid = callPackage ../data/fonts/monoid { };
+
+  mononoki = callPackage ../data/fonts/mononoki { };
+
+  montserrat = callPackage ../data/fonts/montserrat { };
+
+  mph_2b_damase = callPackage ../data/fonts/mph-2b-damase { };
+
+  mplus-outline-fonts = callPackage ../data/fonts/mplus-outline-fonts { };
+
+  mro-unicode = callPackage ../data/fonts/mro-unicode { };
+
+  mustache-spec = callPackage ../data/documentation/mustache-spec { };
+
+  mustache-go = callPackage ../development/tools/mustache-go { };
+
+  mustache-hpp = callPackage ../development/libraries/mustache-hpp { };
+
+  myrddin = callPackage ../development/compilers/myrddin { };
+
+  myrica = callPackage ../data/fonts/myrica { };
+
+  nafees = callPackage ../data/fonts/nafees { };
+
+  nanum-gothic-coding = callPackage ../data/fonts/nanum-gothic-coding {  };
+
+  national-park-typeface = callPackage ../data/fonts/national-park { };
+
+  netease-music-tui = callPackage ../applications/audio/netease-music-tui { };
+
+  netease-cloud-music-gtk = callPackage ../applications/audio/netease-cloud-music-gtk { };
+
+  nordic = callPackage ../data/themes/nordic { };
+
+  nordzy-cursor-theme = callPackage ../data/icons/nordzy-cursor-theme { };
+
+  nordzy-icon-theme = callPackage ../data/icons/nordzy-icon-theme { };
+
+  inherit (callPackages ../data/fonts/noto-fonts {})
+    noto-fonts
+    noto-fonts-cjk-sans
+    noto-fonts-cjk-serif
+    noto-fonts-emoji
+    noto-fonts-emoji-blob-bin
+    noto-fonts-extra;
+
+  nuclear = callPackage ../applications/audio/nuclear { };
+
+  nuclei = callPackage ../tools/security/nuclei { };
+
+  nullmailer = callPackage ../servers/mail/nullmailer {
+    stdenv = gccStdenv;
+  };
+
+  numix-icon-theme = callPackage ../data/icons/numix-icon-theme { };
+
+  numix-icon-theme-circle = callPackage ../data/icons/numix-icon-theme-circle { };
+
+  numix-icon-theme-square = callPackage ../data/icons/numix-icon-theme-square { };
+
+  numix-cursor-theme = callPackage ../data/icons/numix-cursor-theme { };
+
+  numix-gtk-theme = callPackage ../data/themes/numix { };
+
+  numix-solarized-gtk-theme = callPackage ../data/themes/numix-solarized { };
+
+  numix-sx-gtk-theme = callPackage ../data/themes/numix-sx { };
+
+  office-code-pro = callPackage ../data/fonts/office-code-pro { };
+
+  oldstandard = callPackage ../data/fonts/oldstandard { };
+
+  oldsindhi = callPackage ../data/fonts/oldsindhi { };
+
+  onestepback = callPackage ../data/themes/onestepback { };
+
+  open-dyslexic = callPackage ../data/fonts/open-dyslexic { };
+
+  open-sans = callPackage ../data/fonts/open-sans { };
+
+  openmoji-color = callPackage ../data/fonts/openmoji { variant = "color"; };
+
+  openmoji-black = callPackage ../data/fonts/openmoji { variant = "black"; };
+
+  openzone-cursors = callPackage ../data/themes/openzone { };
+
+  oranchelo-icon-theme = callPackage ../data/icons/oranchelo-icon-theme { };
+
+  orbitron = callPackage ../data/fonts/orbitron { };
+
+  orchis-theme = callPackage ../data/themes/orchis-theme { };
+
+  orion = callPackage ../data/themes/orion {};
+
+  overpass = callPackage ../data/fonts/overpass { };
+
+  oxygenfonts = callPackage ../data/fonts/oxygenfonts { };
+
+  paper-gtk-theme = callPackage ../data/themes/paper-gtk { };
+
+  paper-icon-theme = callPackage ../data/icons/paper-icon-theme { };
+
+  papirus-icon-theme = callPackage ../data/icons/papirus-icon-theme {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  papirus-maia-icon-theme = callPackage ../data/icons/papirus-maia-icon-theme {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  papis = with python3Packages; toPythonApplication papis;
+
+  paperlike-go = callPackage ../tools/misc/paperlike-go { };
+
+  paps = callPackage ../tools/misc/paps { };
+
+  pecita = callPackage ../data/fonts/pecita {};
+
+  paratype-pt-mono = callPackage ../data/fonts/paratype-pt/mono.nix {};
+  paratype-pt-sans = callPackage ../data/fonts/paratype-pt/sans.nix {};
+  paratype-pt-serif = callPackage ../data/fonts/paratype-pt/serif.nix {};
+
+  pari-galdata = callPackage ../data/misc/pari-galdata {};
+
+  pari-seadata-small = callPackage ../data/misc/pari-seadata-small {};
+
+  penna = callPackage ../data/fonts/penna { };
+
+  pitch-black = callPackage ../data/themes/pitch-black {};
+
+  plano-theme = callPackage ../data/themes/plano { };
+
+  plata-theme = callPackage ../data/themes/plata {
+    inherit (mate) marco;
+  };
+
+  poly = callPackage ../data/fonts/poly { };
+
+  polytopes_db = callPackage ../data/misc/polytopes_db { };
+
+  pop-gtk-theme = callPackage ../data/themes/pop-gtk { };
+
+  pop-icon-theme = callPackage ../data/icons/pop-icon-theme {
+    inherit (gnome) adwaita-icon-theme;
+  };
+
+  powerline-fonts = callPackage ../data/fonts/powerline-fonts { };
+
+  powerline-symbols = callPackage ../data/fonts/powerline-symbols { };
+
+  powerline-go = callPackage ../tools/misc/powerline-go { };
+
+  powerline-rs = callPackage ../tools/misc/powerline-rs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  profont = callPackage ../data/fonts/profont
+    { inherit (buildPackages.xorg) mkfontscale; };
+
+  proggyfonts = callPackage ../data/fonts/proggyfonts { };
+
+  public-sans  = callPackage ../data/fonts/public-sans { };
+
+  publicsuffix-list = callPackage ../data/misc/publicsuffix-list { };
+
+  phinger-cursors = callPackage ../data/icons/phinger-cursors { };
+
+  qogir-icon-theme = callPackage ../data/icons/qogir-icon-theme { };
+
+  qogir-theme = callPackage ../data/themes/qogir { };
+
+  quintom-cursor-theme = callPackage ../data/icons/quintom-cursor-theme { };
+
+  redhat-official-fonts = callPackage ../data/fonts/redhat-official { };
+
+  rime-data = callPackage ../data/misc/rime-data { };
+
+  rose-pine-gtk-theme = callPackage ../data/themes/rose-pine-gtk { };
+
+  route159 = callPackage ../data/fonts/route159 { };
+
+  sampradaya = callPackage ../data/fonts/sampradaya { };
+
+  sarasa-gothic = callPackage ../data/fonts/sarasa-gothic { };
+
+  savepagenow = callPackage ../tools/misc/savepagenow { };
+
+  scheme-manpages = callPackage ../data/documentation/scheme-manpages { };
+
+  scowl = callPackage ../data/misc/scowl { };
+
+  seshat = callPackage ../data/fonts/seshat { };
+
+  session-desktop-appimage = callPackage ../applications/networking/instant-messengers/session-desktop-appimage { };
+
+  shaderc = callPackage ../development/compilers/shaderc { };
+
+  shades-of-gray-theme = callPackage ../data/themes/shades-of-gray { };
+
+  sierra-breeze-enhanced = libsForQt5.callPackage ../data/themes/kwin-decorations/sierra-breeze-enhanced { };
+
+  sjasmplus = callPackage ../development/compilers/sjasmplus { };
+
+  skeu = callPackage ../data/themes/skeu { };
+
+  sweet = callPackage ../data/themes/sweet { };
+
+  shared-mime-info = callPackage ../data/misc/shared-mime-info { };
+
+  shared_desktop_ontologies = callPackage ../data/misc/shared-desktop-ontologies { };
+
+  scheherazade = callPackage ../data/fonts/scheherazade { version = "2.100"; };
+
+  scheherazade-new = callPackage ../data/fonts/scheherazade { };
+
+  signwriting = callPackage ../data/fonts/signwriting { };
+
+  sierra-gtk-theme = callPackage ../data/themes/sierra { };
+
+  snap7 = callPackage ../development/libraries/snap7 {};
+
+  snowblind = callPackage ../data/themes/snowblind { };
+
+  solarc-gtk-theme = callPackage ../data/themes/solarc { };
+
+  soundfont-fluid = callPackage ../data/soundfonts/fluid { };
+
+  soundfont-ydp-grand = callPackage ../data/soundfonts/ydp-grand { };
+
+  spdx-license-list-data = callPackage ../data/misc/spdx-license-list-data { };
+
+  stdmanpages = callPackage ../data/documentation/std-man-pages { };
+
+  starship = callPackage ../tools/misc/starship {
+    inherit (darwin.apple_sdk.frameworks) Security Foundation;
+  };
+
+  stig = callPackage ../applications/networking/p2p/stig { };
+
+  stix-otf = callPackage ../data/fonts/stix-otf { };
+
+  stix-two = callPackage ../data/fonts/stix-two { };
+
+  inherit (callPackages ../data/fonts/gdouros { })
+    aegan aegyptus akkadian assyrian eemusic maya symbola textfonts unidings;
+
+  iana-etc = callPackage ../data/misc/iana-etc { };
+
+  poppler_data = callPackage ../data/misc/poppler-data { };
+
+  qmc2 = libsForQt514.callPackage ../applications/emulators/qmc2 { };
+
+  quattrocento = callPackage ../data/fonts/quattrocento {};
+
+  quattrocento-sans = callPackage ../data/fonts/quattrocento-sans {};
+
+  r3rs = callPackage ../data/documentation/rnrs/r3rs.nix { };
+
+  r4rs = callPackage ../data/documentation/rnrs/r4rs.nix { };
+
+  r5rs = callPackage ../data/documentation/rnrs/r5rs.nix { };
+
+  raleway = callPackage ../data/fonts/raleway { };
+
+  recursive = callPackage ../data/fonts/recursive { };
+
+  rubik = callPackage ../data/fonts/rubik { };
+
+  rhodium-libre = callPackage ../data/fonts/rhodium-libre { };
+
+  rictydiminished-with-firacode = callPackage ../data/fonts/rictydiminished-with-firacode { };
+
+  roboto = callPackage ../data/fonts/roboto { };
+
+  roboto-mono = callPackage ../data/fonts/roboto-mono { };
+
+  roboto-slab = callPackage ../data/fonts/roboto-slab { };
+
+  hasklig = callPackage ../data/fonts/hasklig {};
+
+  interfacer = callPackage ../development/tools/interfacer { };
+
+  maligned = callPackage ../development/tools/maligned { };
+
+  inter = callPackage ../data/fonts/inter { };
+
+  open-fonts = callPackage ../data/fonts/open-fonts { };
+
+  s6-man-pages = skawarePackages.s6-man-pages;
+
+  s6-networking-man-pages = skawarePackages.s6-networking-man-pages;
+
+  scientifica = callPackage ../data/fonts/scientifica { };
+
+  siji = callPackage ../data/fonts/siji
+    { inherit (buildPackages.xorg) mkfontscale fonttosfnt; };
+
+  sound-theme-freedesktop = callPackage ../data/misc/sound-theme-freedesktop { };
+
+  source-code-pro = callPackage ../data/fonts/source-code-pro {};
+
+  source-sans = callPackage ../data/fonts/source-sans { };
+  source-sans-pro = callPackage ../data/fonts/source-sans-pro { };
+
+  source-serif = callPackage ../data/fonts/source-serif { };
+  source-serif-pro = callPackage ../data/fonts/source-serif-pro { };
+
+  source-han-code-jp = callPackage ../data/fonts/source-han-code-jp { };
+
+  sourceHanPackages = dontRecurseIntoAttrs (callPackage ../data/fonts/source-han { });
+  source-han-sans = sourceHanPackages.sans;
+  source-han-serif = sourceHanPackages.serif;
+  source-han-mono = sourceHanPackages.mono;
+
+  spleen = callPackage ../data/fonts/spleen { inherit (buildPackages.xorg) mkfontscale; };
+
+  stilo-themes = callPackage ../data/themes/stilo { };
+
+  sudo-font = callPackage ../data/fonts/sudo { };
+
+  inherit (callPackages ../data/fonts/tai-languages { }) tai-ahom;
+
+  taskspooler = callPackage ../tools/system/taskspooler { };
+
+  tamsyn = callPackage ../data/fonts/tamsyn { inherit (buildPackages.xorg) mkfontscale; };
+
+  tamzen = callPackage ../data/fonts/tamzen { inherit (buildPackages.xorg) mkfontscale; };
+
+  tango-icon-theme = callPackage ../data/icons/tango-icon-theme {
+    gtk = res.gtk2;
+  };
+
+  theme-jade1 = callPackage ../data/themes/jade1 { };
+
+  theme-obsidian2 = callPackage ../data/themes/obsidian2 { };
+
+  themes = name: callPackage (../data/misc/themes + ("/" + name + ".nix")) {};
+
+  theano = callPackage ../data/fonts/theano { };
+
+  tela-circle-icon-theme = callPackage ../data/icons/tela-circle-icon-theme { };
+
+  tela-icon-theme = callPackage ../data/icons/tela-icon-theme { };
+
+  template-glib = callPackage ../development/libraries/template-glib { };
+
+  tempora_lgc = callPackage ../data/fonts/tempora-lgc { };
+
+  tenderness = callPackage ../data/fonts/tenderness { };
+
+  terminus_font = callPackage ../data/fonts/terminus-font
+    { inherit (buildPackages.xorg) mkfontscale; };
+
+  terminus_font_ttf = callPackage ../data/fonts/terminus-font-ttf { };
+
+  terminus-nerdfont = nerdfonts.override {
+    fonts = [ "Terminus" ];
+  };
+
+  termtekst = callPackage ../applications/emulators/termtekst { };
+
+  tex-gyre = callPackages ../data/fonts/tex-gyre { };
+
+  tex-gyre-math = callPackages ../data/fonts/tex-gyre-math { };
+
+  theme-vertex = callPackage ../data/themes/vertex { };
+
+  times-newer-roman = callPackage ../data/fonts/times-newer-roman { };
+
+  tipa = callPackage ../data/fonts/tipa { };
+
+  ttf_bitstream_vera = callPackage ../data/fonts/ttf-bitstream-vera { };
+
+  ttf-envy-code-r = callPackage ../data/fonts/ttf-envy-code-r {};
+
+  ttf-tw-moe = callPackage ../data/fonts/ttf-tw-moe { };
+
+  twemoji-color-font = callPackage ../data/fonts/twemoji-color-font { };
+
+  twitter-color-emoji = callPackage ../data/fonts/twitter-color-emoji { };
+
+  tzdata = callPackage ../data/misc/tzdata { };
+
+  ubuntu-themes = callPackage ../data/themes/ubuntu-themes { };
+
+  ubuntu_font_family = callPackage ../data/fonts/ubuntu-font-family { };
+
+  ucs-fonts = callPackage ../data/fonts/ucs-fonts
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  bront_fonts = callPackage ../data/fonts/bront { };
+
+  ultimate-oldschool-pc-font-pack = callPackage ../data/fonts/ultimate-oldschool-pc-font-pack { };
+
+  ultralist = callPackage ../applications/misc/ultralist { };
+
+  undefined-medium = callPackage ../data/fonts/undefined-medium { };
+
+  unfonts-core = callPackage ../data/fonts/unfonts-core { };
+
+  uni-vga = callPackage ../data/fonts/uni-vga
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  unicode-character-database = callPackage ../data/misc/unicode-character-database { };
+
+  unicode-emoji = callPackage ../data/misc/unicode-emoji { };
+
+  unihan-database = callPackage ../data/misc/unihan-database { };
+
+  unifont = callPackage ../data/fonts/unifont
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  unifont_upper = callPackage ../data/fonts/unifont_upper { };
+
+  unscii = callPackage ../data/fonts/unscii { };
+
+  uw-ttyp0 = callPackage ../data/fonts/uw-ttyp0 { inherit (xorg) fonttosfnt mkfontdir; };
+
+  vanilla-dmz = callPackage ../data/icons/vanilla-dmz { };
+
+  vdrsymbols = callPackage ../data/fonts/vdrsymbols { };
+
+  vegur = callPackage ../data/fonts/vegur { };
+
+  vegeta = callPackage ../tools/networking/vegeta { };
+
+  venta = callPackage ../data/themes/venta { };
+
+  victor-mono = callPackage ../data/fonts/victor-mono { };
+
+  vimix-gtk-themes = callPackage ../data/themes/vimix {
+    inherit (gnome) gnome-shell;
+  };
+
+  vimix-icon-theme = callPackage ../data/icons/vimix-icon-theme { };
+
+  vistafonts = callPackage ../data/fonts/vista-fonts { };
+
+  vistafonts-chs = callPackage ../data/fonts/vista-fonts-chs { };
+
+  vistafonts-cht = callPackage ../data/fonts/vista-fonts-cht { };
+
+  vollkorn = callPackage ../data/fonts/vollkorn { };
+
+  weather-icons = callPackage ../data/fonts/weather-icons { };
+
+  whitesur-gtk-theme = callPackage ../data/themes/whitesur {
+    inherit (gnome) gnome-shell;
+  };
+
+  whitesur-icon-theme = callPackage ../data/icons/whitesur-icon-theme { };
+
+  wireless-regdb = callPackage ../data/misc/wireless-regdb { };
+
+  work-sans  = callPackage ../data/fonts/work-sans { };
+
+  wqy_microhei = callPackage ../data/fonts/wqy-microhei { };
+
+  wqy_zenhei = callPackage ../data/fonts/wqy-zenhei { };
+
+  xhtml1 = callPackage ../data/sgml+xml/schemas/xml-dtd/xhtml1 { };
+
+  xits-math = callPackage ../data/fonts/xits-math { };
+
+  xkcd-font = callPackage ../data/fonts/xkcd-font { };
+
+  xkeyboard_config = xorg.xkeyboardconfig;
+
+  xlsx2csv = with python3Packages; toPythonApplication xlsx2csv;
+
+  xorg-rgb = callPackage ../data/misc/xorg-rgb {};
+
+  yanone-kaffeesatz = callPackage ../data/fonts/yanone-kaffeesatz {};
+
+  yaru-theme = callPackage ../data/themes/yaru {};
+
+  yaru-remix-theme = callPackage ../data/themes/yaru-remix {};
+
+  zafiro-icons = callPackage ../data/icons/zafiro-icons {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  zeal = libsForQt5.callPackage ../data/documentation/zeal { };
+
+  zilla-slab = callPackage ../data/fonts/zilla-slab { };
+
+  zuki-themes = callPackage ../data/themes/zuki { };
+
+
+  ### APPLICATIONS
+
+  _2bwm = callPackage ../applications/window-managers/2bwm {
+    patches = config."2bwm".patches or [];
+  };
+
+  a2jmidid = callPackage ../applications/audio/a2jmidid { };
+
+  aacgain = callPackage ../applications/audio/aacgain { };
+
+  abcde = callPackage ../applications/audio/abcde {
+    inherit (python3Packages) eyeD3;
+  };
+
+  abiword = callPackage ../applications/office/abiword { };
+
+  abook = callPackage ../applications/misc/abook { };
+
+  acd-cli = callPackage ../applications/networking/sync/acd_cli {
+    inherit (python3Packages)
+      buildPythonApplication appdirs colorama python-dateutil
+      requests requests-toolbelt setuptools sqlalchemy fusepy;
+  };
+
+  adobe-reader = pkgsi686Linux.callPackage ../applications/misc/adobe-reader { };
+
+  masterpdfeditor = libsForQt5.callPackage ../applications/misc/masterpdfeditor { };
+
+  masterpdfeditor4 = libsForQt5.callPackage ../applications/misc/masterpdfeditor4 { };
+
+  foxitreader = libsForQt512.callPackage ../applications/misc/foxitreader { };
+
+  pdfstudio = import ../applications/misc/pdfstudio {
+    program = "pdfstudio";
+    inherit callPackage fetchurl libgccjit;
+  };
+
+  pdfstudioviewer = import ../applications/misc/pdfstudio {
+    program = "pdfstudioviewer";
+    inherit callPackage fetchurl libgccjit;
+  };
+
+  aeolus = callPackage ../applications/audio/aeolus { };
+
+  aewan = callPackage ../applications/editors/aewan { };
+
+  afterstep = callPackage ../applications/window-managers/afterstep {
+    fltk = fltk13;
+    gtk = gtk2;
+  };
+
+  agedu = callPackage ../tools/misc/agedu { };
+
+  agenda = callPackage ../applications/office/agenda { };
+
+  ahoviewer = callPackage ../applications/graphics/ahoviewer { };
+
+  airwave = callPackage ../applications/audio/airwave { qt5 = qt514; };
+
+  akira-unstable = callPackage ../applications/graphics/akira { };
+
+  alembic = callPackage ../development/libraries/alembic {};
+
+  alfaview = callPackage ../applications/networking/instant-messengers/alfaview { };
+
+  alchemy = callPackage ../applications/graphics/alchemy { };
+
+  alock = callPackage ../misc/screensavers/alock { };
+
+  alot = callPackage ../applications/networking/mailreaders/alot { };
+
+  alpine = callPackage ../applications/networking/mailreaders/alpine {
+    tcl = tcl-8_5;
+  };
+
+  msgviewer = callPackage ../applications/networking/mailreaders/msgviewer { };
+
+  amarok = libsForQt5.callPackage ../applications/audio/amarok { };
+  amarok-kf5 = amarok; # for compatibility
+
+  amfora = callPackage ../applications/networking/browsers/amfora { };
+
+  AMB-plugins = callPackage ../applications/audio/AMB-plugins { };
+
+  ams-lv2 = callPackage ../applications/audio/ams-lv2 { };
+
+  androidStudioPackages = recurseIntoAttrs
+    (callPackage ../applications/editors/android-studio {
+      buildFHSUserEnv = buildFHSUserEnvBubblewrap;
+    });
+  android-studio = androidStudioPackages.stable;
+
+  animbar = callPackage ../applications/graphics/animbar { };
+
+  antfs-cli = callPackage ../applications/misc/antfs-cli {};
+
+  antimony = libsForQt514.callPackage ../applications/graphics/antimony {};
+
+  antiword = callPackage ../applications/office/antiword {};
+
+  anup = callPackage ../applications/misc/anup {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  anytype = callPackage ../applications/misc/anytype { };
+
+  ao = libfive;
+
+  apache-directory-studio = callPackage ../applications/networking/apache-directory-studio {};
+
+  apkeep = callPackage ../tools/misc/apkeep {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  apngasm = callPackage ../applications/graphics/apngasm {};
+  apngasm_2 = callPackage ../applications/graphics/apngasm/2.nix {};
+
+  appeditor = callPackage ../applications/misc/appeditor { };
+
+  appgate-sdp = callPackage ../applications/networking/appgate-sdp { };
+
+  apostrophe = callPackage ../applications/editors/apostrophe {
+    pythonPackages = python3Packages;
+    texlive = texlive.combined.scheme-medium;
+  };
+
+  aqemu = libsForQt5.callPackage ../applications/virtualization/aqemu { };
+
+  ardour = callPackage ../applications/audio/ardour { };
+
+  arelle = with python3Packages; toPythonApplication arelle;
+
+  argo = callPackage ../applications/networking/cluster/argo { };
+
+  argocd = callPackage ../applications/networking/cluster/argocd { };
+
+  argo-rollouts = callPackage ../applications/networking/cluster/argo-rollouts { };
+
+  ario = callPackage ../applications/audio/ario { };
+
+  arion = callPackage ../applications/virtualization/arion { };
+
+  arkade = callPackage ../applications/networking/cluster/arkade { };
+
+  asuka = callPackage ../applications/networking/browsers/asuka {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ascii-image-converter = callPackage ../applications/graphics/ascii-image-converter { };
+
+  artha = callPackage ../applications/misc/artha { };
+
+  atlassian-cli = callPackage ../applications/office/atlassian-cli { };
+
+  atomEnv = callPackage ../applications/editors/atom/env.nix {
+    gconf = gnome2.GConf;
+  };
+
+  atomPackages = dontRecurseIntoAttrs (callPackage ../applications/editors/atom { });
+
+  inherit (atomPackages) atom atom-beta;
+
+  aseprite = callPackage ../applications/editors/aseprite { };
+  aseprite-unfree = aseprite.override { unfree = true; };
+
+  assign-lb-ip = callPackage ../applications/networking/cluster/assign-lb-ip { };
+
+  astroid = callPackage ../applications/networking/mailreaders/astroid {
+    vim = vim_configurable.override { features = "normal"; gui = "auto"; };
+  };
+
+  aucatctl = callPackage ../applications/audio/aucatctl { };
+
+  audacious = libsForQt5.callPackage ../applications/audio/audacious { };
+  audaciousQt5 = audacious;
+
+  audacity-gtk2 = callPackage ../applications/audio/audacity { wxGTK = wxGTK31-gtk2; };
+  audacity-gtk3 = callPackage ../applications/audio/audacity { wxGTK = wxGTK31-gtk3; };
+  audacity =
+    if stdenv.isDarwin then
+      callPackage ../applications/audio/audacity {
+        inherit (darwin.apple_sdk.frameworks) AppKit AudioToolbox AudioUnit Carbon Cocoa CoreAudio CoreAudioKit CoreServices;
+        suil = suil-qt5;
+      }
+    else
+      audacity-gtk2;
+
+  audio-recorder = callPackage ../applications/audio/audio-recorder { };
+
+  auto-multiple-choice = callPackage ../applications/misc/auto-multiple-choice { };
+
+  autokey = callPackage ../applications/office/autokey { };
+
+  autotalent = callPackage ../applications/audio/autotalent { };
+
+  autotrace = callPackage ../applications/graphics/autotrace {};
+
+  av-98 = callPackage ../applications/networking/browsers/av-98 { };
+
+  avizo = callPackage ../applications/misc/avizo { };
+
+  avocode = callPackage ../applications/graphics/avocode {};
+
+  azpainter = callPackage ../applications/graphics/azpainter { };
+
+  bambootracker = libsForQt5.callPackage ../applications/audio/bambootracker { };
+
+  blocky = callPackage ../applications/networking/blocky { };
+
+  cadence = libsForQt5.callPackage ../applications/audio/cadence { };
+
+  cheesecutter = callPackage ../applications/audio/cheesecutter { };
+
+  milkytracker = callPackage ../applications/audio/milkytracker { };
+
+  ptcollab = libsForQt515.callPackage ../applications/audio/ptcollab { };
+
+  schismtracker = callPackage ../applications/audio/schismtracker { };
+
+  jnetmap = callPackage ../applications/networking/jnetmap {};
+
+  libbitcoin = callPackage ../tools/misc/libbitcoin/libbitcoin.nix {
+    boost = boost175; # fatal error: 'boost/interprocess/detail/posix_time_types_wrk.hpp' file not found
+  };
+  libbitcoin-protocol = callPackage ../tools/misc/libbitcoin/libbitcoin-protocol.nix {
+    boost = boost175;
+  };
+  libbitcoin-client   = callPackage ../tools/misc/libbitcoin/libbitcoin-client.nix {
+    boost = boost175;
+  };
+  libbitcoin-network  = callPackage ../tools/misc/libbitcoin/libbitcoin-network.nix {
+    boost = boost175;
+  };
+  libbitcoin-explorer = callPackage ../tools/misc/libbitcoin/libbitcoin-explorer.nix {
+    boost = boost175;
+  };
+
+
+  aumix = callPackage ../applications/audio/aumix {
+    gtkGUI = false;
+  };
+
+  autopanosiftc = callPackage ../applications/graphics/autopanosiftc { };
+
+  AusweisApp2 = libsForQt5.callPackage ../applications/misc/ausweisapp2 { };
+
+  avidemux = libsForQt5.callPackage ../applications/video/avidemux { };
+
+  avrdudess = callPackage ../applications/misc/avrdudess { };
+
+  awesome-4-0 = callPackage ../applications/window-managers/awesome {
+    cairo = cairo.override { xcbSupport = true; };
+    inherit (texFunctions) fontsConf;
+  };
+  awesome = awesome-4-0;
+
+  awesomebump = libsForQt5.callPackage ../applications/graphics/awesomebump { };
+
+  inherit (gnome) baobab;
+
+  backintime-common = callPackage ../applications/networking/sync/backintime/common.nix { };
+
+  backintime-qt = libsForQt5.callPackage ../applications/networking/sync/backintime/qt.nix { };
+
+  backintime = backintime-qt;
+
+  balsa = callPackage ../applications/networking/mailreaders/balsa { };
+
+  bandwidth = callPackage ../tools/misc/bandwidth { };
+
+  banking = callPackage ../applications/office/banking { };
+
+  baresip = callPackage ../applications/networking/instant-messengers/baresip { };
+
+  barrier = libsForQt5.callPackage ../applications/misc/barrier {};
+
+  bashSnippets = callPackage ../applications/misc/bashSnippets { };
+
+  batik = callPackage ../applications/graphics/batik { };
+
+  batsignal = callPackage ../applications/misc/batsignal { };
+
+  baudline = callPackage ../applications/audio/baudline { };
+
+  bb =  callPackage ../applications/misc/bb { };
+
+  bchoppr = callPackage ../applications/audio/bchoppr { };
+
+  berry = callPackage ../applications/window-managers/berry { };
+
+  bespokesynth = callPackage ../applications/audio/bespokesynth {
+    inherit (darwin.apple_sdk.frameworks) Cocoa WebKit CoreServices CoreAudioKit;
+  };
+
+  bespokesynth-with-vst2 = bespokesynth.override {
+    enableVST2 = true;
+  };
+
+  bevelbar = callPackage ../applications/window-managers/bevelbar { };
+
+  bibletime = libsForQt5.callPackage ../applications/misc/bibletime { };
+
+  bino3d = libsForQt5.callPackage ../applications/video/bino3d {
+    glew = glew110;
+  };
+
+  bitkeeper = callPackage ../applications/version-management/bitkeeper {
+    gperf = gperf_3_0;
+  };
+
+  bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee { };
+  bitlbee-plugins = callPackage ../applications/networking/instant-messengers/bitlbee/plugins.nix { };
+
+  bitlbee-discord = callPackage ../applications/networking/instant-messengers/bitlbee-discord { };
+
+  bitlbee-facebook = callPackage ../applications/networking/instant-messengers/bitlbee-facebook { };
+
+  bitlbee-steam = callPackage ../applications/networking/instant-messengers/bitlbee-steam { };
+
+  bitlbee-mastodon = callPackage ../applications/networking/instant-messengers/bitlbee-mastodon { };
+
+  bitmeter = callPackage ../applications/audio/bitmeter { };
+
+  bitscope = recurseIntoAttrs
+    (callPackage ../applications/science/electronics/bitscope/packages.nix { });
+
+  bitwig-studio1 =  callPackage ../applications/audio/bitwig-studio/bitwig-studio1.nix {
+    inherit (gnome) zenity;
+    libxkbcommon = libxkbcommon_7;
+  };
+  bitwig-studio2 =  callPackage ../applications/audio/bitwig-studio/bitwig-studio2.nix {
+    inherit bitwig-studio1;
+  };
+  bitwig-studio3 =  callPackage ../applications/audio/bitwig-studio/bitwig-studio3.nix { };
+  bitwig-studio4 =  callPackage ../applications/audio/bitwig-studio/bitwig-studio4.nix { };
+
+  bitwig-studio = bitwig-studio4;
+
+  bgpdump = callPackage ../tools/networking/bgpdump { };
+
+  bgpq3 = callPackage ../tools/networking/bgpq3 { };
+
+  bgpq4 = callPackage ../tools/networking/bgpq4 { };
+
+  blackbox = callPackage ../applications/version-management/blackbox { };
+
+  bleachbit = callPackage ../applications/misc/bleachbit { };
+
+  blender = callPackage  ../applications/misc/blender {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics ForceFeedback OpenAL OpenGL;
+  };
+
+  blender-with-packages = callPackage ../applications/misc/blender/wrapper.nix {};
+
+  blflash = callPackage ../tools/misc/blflash { };
+
+  blogc = callPackage ../applications/misc/blogc { };
+
+  blucontrol = callPackage ../applications/misc/blucontrol/wrapper.nix {
+    inherit (haskellPackages) ghcWithPackages;
+  };
+
+  bluefish = callPackage ../applications/editors/bluefish {
+    gtk = gtk3;
+  };
+
+  bluej = callPackage ../applications/editors/bluej {
+    jdk = jetbrains.jdk;
+  };
+
+  bluejeans-gui = callPackage ../applications/networking/instant-messengers/bluejeans { };
+
+  blugon = callPackage ../applications/misc/blugon { };
+
+  bombadillo = callPackage ../applications/networking/browsers/bombadillo { };
+
+  bombono = callPackage ../applications/video/bombono {};
+
+  bonzomatic = callPackage ../applications/editors/bonzomatic { };
+
+  bottles = callPackage ../applications/misc/bottles { };
+
+  brave = callPackage ../applications/networking/browsers/brave { };
+
+  break-time = callPackage ../applications/misc/break-time { };
+
+  breezy = with python3Packages; toPythonApplication breezy;
+
+  notmuch-bower = callPackage ../applications/networking/mailreaders/notmuch-bower { };
+
+  brig = callPackage ../applications/networking/brig { };
+
+  bristol = callPackage ../applications/audio/bristol { };
+
+  bjumblr = callPackage ../applications/audio/bjumblr { };
+
+  bschaffl = callPackage ../applications/audio/bschaffl { };
+
+  bsequencer = callPackage ../applications/audio/bsequencer { };
+
+  bslizr = callPackage ../applications/audio/bslizr { };
+
+  bshapr = callPackage ../applications/audio/bshapr { };
+
+  bspwm = callPackage ../applications/window-managers/bspwm { };
+
+  btops = callPackage ../applications/window-managers/btops { };
+
+  bvi = callPackage ../applications/editors/bvi { };
+
+  bviplus = callPackage ../applications/editors/bviplus { };
+
+  caerbannog = callPackage ../applications/misc/caerbannog { };
+
+  cardboard = callPackage ../applications/window-managers/cardboard { };
+
+  cage = callPackage ../applications/window-managers/cage {
+    wlroots = wlroots_0_14;
+  };
+
+  calf = callPackage ../applications/audio/calf {
+      inherit (gnome2) libglade;
+  };
+
+  calcurse = callPackage ../applications/misc/calcurse { };
+
+  calculix = callPackage ../applications/science/math/calculix {};
+
+  calibre = libsForQt5.callPackage ../applications/misc/calibre { };
+
+  calibre-web = callPackage ../servers/calibre-web { };
+
+  calligra = libsForQt5.callPackage ../applications/office/calligra {
+    # Must use the same Qt version as Calligra itself:
+    poppler = libsForQt5.poppler_0_61;
+  };
+
+  perkeep = callPackage ../applications/misc/perkeep { };
+
+  canto-curses = callPackage ../applications/networking/feedreaders/canto-curses { };
+
+  canto-daemon = callPackage ../applications/networking/feedreaders/canto-daemon { };
+
+  carddav-util = callPackage ../tools/networking/carddav-util { };
+
+  cardinal = callPackage ../applications/audio/cardinal { };
+
+  carla = libsForQt5.callPackage ../applications/audio/carla { };
+
+  castor = callPackage ../applications/networking/browsers/castor { };
+
+  catfs = callPackage ../os-specific/linux/catfs { };
+
+  catgirl = callPackage ../applications/networking/irc/catgirl { };
+
+  catimg = callPackage ../tools/misc/catimg { };
+
+  catt = callPackage ../applications/video/catt { };
+
+  cava = callPackage ../applications/audio/cava { };
+
+  cb2bib = libsForQt514.callPackage ../applications/office/cb2bib { };
+
+  cbatticon = callPackage ../applications/misc/cbatticon { };
+
+  cbc = callPackage ../applications/science/math/cbc { };
+
+  cddiscid = callPackage ../applications/audio/cd-discid {
+    inherit (darwin) IOKit;
+  };
+
+  cdparanoia = cdparanoiaIII;
+
+  cdparanoiaIII = callPackage ../applications/audio/cdparanoia {
+    inherit (darwin) IOKit;
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
+
+  cyanrip = callPackage ../applications/audio/cyanrip { };
+
+  centerim = callPackage ../applications/networking/instant-messengers/centerim { };
+
+  cgit = callPackage ../applications/version-management/git-and-tools/cgit {
+    inherit (python3Packages) python wrapPython pygments markdown;
+  };
+
+  chatty = callPackage ../applications/networking/instant-messengers/chatty { };
+
+  chirp = callPackage ../applications/radio/chirp { };
+
+  browsh = callPackage ../applications/networking/browsers/browsh { };
+
+  brotab = callPackage ../tools/misc/brotab {
+    python = python3;
+  };
+
+  bookworm = callPackage ../applications/office/bookworm { };
+
+  boops = callPackage ../applications/audio/boops { };
+
+  ChowCentaur  = callPackage ../applications/audio/ChowCentaur { };
+
+  ChowKick  = callPackage ../applications/audio/ChowKick { };
+
+  CHOWTapeModel = callPackage ../applications/audio/CHOWTapeModel { };
+
+  chromium = callPackage ../applications/networking/browsers/chromium (config.chromium or {});
+
+  chromiumBeta = lowPrio (chromium.override { channel = "beta"; });
+
+  chromiumDev = lowPrio (chromium.override { channel = "dev"; });
+
+  chuck = callPackage ../applications/audio/chuck {
+    inherit (darwin.apple_sdk.frameworks) AppKit Carbon CoreAudio CoreMIDI CoreServices Kernel;
+  };
+
+  cinelerra = callPackage ../applications/video/cinelerra { };
+
+  cipher = callPackage ../applications/misc/cipher { };
+
+  clapper = callPackage ../applications/video/clapper { };
+
+  ciscoPacketTracer7 = callPackage ../applications/networking/cisco-packet-tracer/7.nix { };
+
+  ciscoPacketTracer8 = callPackage ../applications/networking/cisco-packet-tracer/8.nix { };
+
+  claws-mail = callPackage ../applications/networking/mailreaders/claws-mail {
+    inherit (xorg) libSM;
+  };
+
+  clfswm = callPackage ../applications/window-managers/clfswm { };
+
+  clickshare-csc1 = callPackage ../applications/video/clickshare-csc1 { };
+
+  cligh = python3Packages.callPackage ../development/tools/github/cligh {};
+
+  clight = callPackage ../applications/misc/clight { };
+
+  clightd = callPackage ../applications/misc/clight/clightd.nix { };
+
+  clipgrab = libsForQt5.callPackage ../applications/video/clipgrab { };
+
+  clipcat = callPackage ../applications/misc/clipcat { };
+
+  clipmenu = callPackage ../applications/misc/clipmenu { };
+
+  clipit = callPackage ../applications/misc/clipit { };
+
+  cloud-hypervisor = callPackage ../applications/virtualization/cloud-hypervisor { };
+
+  clp = callPackage ../applications/science/math/clp { };
+
+  cmatrix = callPackage ../applications/misc/cmatrix { };
+
+  cmctl = callPackage ../applications/networking/cluster/cmctl { };
+
+  cmus = callPackage ../applications/audio/cmus {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit CoreAudio;
+    libjack = libjack2;
+  };
+
+  cmusfm = callPackage ../applications/audio/cmusfm { };
+
+  cni = callPackage ../applications/networking/cluster/cni {};
+  cni-plugins = callPackage ../applications/networking/cluster/cni/plugins.nix {};
+
+  dnsname-cni = callPackage ../applications/networking/cluster/dnsname-cni {};
+
+  multus-cni = callPackage ../applications/networking/cluster/multus-cni {};
+
+  cntr = callPackage ../applications/virtualization/cntr { };
+
+  communi = libsForQt5.callPackage ../applications/networking/irc/communi { };
+
+  complete-alias = callPackage ../tools/misc/complete-alias { };
+
+  confclerk = callPackage ../applications/misc/confclerk { };
+
+  copyq = libsForQt5.callPackage ../applications/misc/copyq { };
+
+  corectrl = libsForQt5.callPackage ../applications/misc/corectrl { };
+
+  coriander = callPackage ../applications/video/coriander {
+    inherit (gnome2) libgnomeui GConf;
+  };
+
+  corrscope = libsForQt5.callPackage ../applications/video/corrscope {
+    ffmpeg = ffmpeg-full;
+  };
+
+  cpeditor = libsForQt515.callPackage ../applications/editors/cpeditor { };
+
+  csa = callPackage ../applications/audio/csa { };
+
+  csound = callPackage ../applications/audio/csound { };
+
+  csound-manual = callPackage ../applications/audio/csound/csound-manual {
+    python = python27;
+    pygments = python27Packages.pygments;
+  };
+
+  csound-qt = libsForQt5.callPackage ../applications/audio/csound/csound-qt {
+    python = python27;
+  };
+
+  codeblocks = callPackage ../applications/editors/codeblocks { };
+  codeblocksFull = codeblocks.override { contribPlugins = true; };
+
+  cudatext-qt = callPackage ../applications/editors/cudatext { widgetset = "qt5"; };
+  cudatext-gtk = callPackage ../applications/editors/cudatext { widgetset = "gtk2"; };
+  cudatext = cudatext-qt;
+
+  convos = callPackage ../applications/networking/irc/convos { };
+
+  comical = callPackage ../applications/graphics/comical { };
+
+  containerd = callPackage ../applications/virtualization/containerd { };
+  containerd_1_4 = callPackage ../applications/virtualization/containerd/1.4.nix { };
+
+  convchain = callPackage ../tools/graphics/convchain {};
+
+  cordless = callPackage ../applications/networking/instant-messengers/cordless { };
+
+  coursera-dl = callPackage ../applications/misc/coursera-dl {};
+
+  coyim = callPackage ../applications/networking/instant-messengers/coyim { };
+
+  cozy-drive = callPackage ../applications/networking/cozy-drive {};
+
+  cq-editor = libsForQt5.callPackage ../applications/graphics/cq-editor {
+    python3Packages = python37Packages;
+  };
+
+  cqrlog = callPackage ../applications/radio/cqrlog {
+    hamlib = hamlib_4;
+  };
+
+  crun = callPackage ../applications/virtualization/crun {};
+
+  csdp = callPackage ../applications/science/math/csdp { };
+
+  ctop = callPackage ../tools/system/ctop { };
+
+  cubicsdr = callPackage ../applications/radio/cubicsdr { };
+
+  cum = callPackage ../applications/misc/cum { };
+
+  cuneiform = callPackage ../tools/graphics/cuneiform {};
+
+  curseradio = callPackage ../applications/audio/curseradio { };
+
+  cutecom = libsForQt5.callPackage ../tools/misc/cutecom { };
+
+  cvs = callPackage ../applications/version-management/cvs { };
+
+  cvsps = callPackage ../applications/version-management/cvsps { };
+
+  cvsq = callPackage ../applications/version-management/cvsq { };
+
+  cvs2svn = callPackage ../applications/version-management/cvs2svn { };
+
+  cwm = callPackage ../applications/window-managers/cwm { };
+
+  cyclone = callPackage ../applications/audio/pd-plugins/cyclone  { };
+
+  dablin = callPackage ../applications/radio/dablin { };
+
+  darcs = haskell.lib.compose.overrideCabal (drv: {
+    configureFlags = (lib.remove "-flibrary" drv.configureFlags or []) ++ ["-f-library"];
+  }) (haskell.lib.compose.justStaticExecutables haskellPackages.darcs);
+
+  darcs-to-git = callPackage ../applications/version-management/git-and-tools/darcs-to-git { };
+
+  darktable = callPackage ../applications/graphics/darktable {
+    lua = lua5_4;
+    pugixml = pugixml.override { shared = true; };
+  };
+
+  das_watchdog = callPackage ../tools/system/das_watchdog { };
+
+  dd-agent = callPackage ../tools/networking/dd-agent/5.nix { };
+  datadog-agent = callPackage ../tools/networking/dd-agent/datadog-agent.nix {
+    pythonPackages = datadog-integrations-core {};
+  };
+  datadog-process-agent = callPackage ../tools/networking/dd-agent/datadog-process-agent.nix { };
+  datadog-integrations-core = extras: callPackage ../tools/networking/dd-agent/integrations-core.nix {
+    python = python3;
+    extraIntegrations = extras;
+  };
+
+  ddgr = callPackage ../applications/misc/ddgr { };
+
+  deadbeef = callPackage ../applications/audio/deadbeef { };
+
+  deadbeefPlugins = {
+    headerbar-gtk3 = callPackage ../applications/audio/deadbeef/plugins/headerbar-gtk3.nix { };
+    infobar = callPackage ../applications/audio/deadbeef/plugins/infobar.nix { };
+    lyricbar = callPackage ../applications/audio/deadbeef/plugins/lyricbar.nix { };
+    mpris2 = callPackage ../applications/audio/deadbeef/plugins/mpris2.nix { };
+    statusnotifier = callPackage ../applications/audio/deadbeef/plugins/statusnotifier.nix { };
+  };
+
+  deadbeef-with-plugins = callPackage ../applications/audio/deadbeef/wrapper.nix {
+    plugins = [];
+  };
+
+  dfasma = libsForQt5.callPackage ../applications/audio/dfasma { };
+
+  dfilemanager = libsForQt5.callPackage ../applications/misc/dfilemanager { };
+
+  dht = callPackage ../applications/networking/p2p/dht { };
+
+  dia = callPackage ../applications/graphics/dia {
+    inherit (gnome2) libart_lgpl libgnomeui;
+  };
+
+  direwolf = callPackage ../applications/radio/direwolf {
+    hamlib = hamlib_4;
+  };
+
+  dirt = callPackage ../applications/audio/dirt {};
+
+  distrho = callPackage ../applications/audio/distrho {};
+
+  dit = callPackage ../applications/editors/dit { };
+
+  djvulibre = callPackage ../applications/misc/djvulibre { };
+
+  djvu2pdf = callPackage ../tools/typesetting/djvu2pdf { };
+
+  djview = libsForQt5.callPackage ../applications/graphics/djview { };
+  djview4 = djview;
+
+  dmenu = callPackage ../applications/misc/dmenu { };
+  dmenu-wayland = callPackage ../applications/misc/dmenu/wayland.nix { };
+
+  dmensamenu = callPackage ../applications/misc/dmensamenu {
+    inherit (python3Packages) buildPythonApplication requests;
+  };
+
+  dmrconfig = callPackage ../applications/radio/dmrconfig { };
+
+  dmtx-utils = callPackage ../tools/graphics/dmtx-utils {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  dnd-tools = callPackage ../applications/misc/dnd-tools { };
+
+  inherit (callPackage ../applications/virtualization/docker {})
+    docker_20_10;
+
+  docker = docker_20_10;
+  docker-edge = docker_20_10;
+  docker-client = docker.override { clientOnly = true; };
+
+  docker-proxy = callPackage ../applications/virtualization/docker/proxy.nix { };
+
+  docker-gc = callPackage ../applications/virtualization/docker/gc.nix { };
+
+  docker-machine = callPackage ../applications/networking/cluster/docker-machine { };
+  docker-machine-hyperkit = callPackage ../applications/networking/cluster/docker-machine/hyperkit.nix { };
+  docker-machine-kvm = callPackage ../applications/networking/cluster/docker-machine/kvm.nix { };
+  docker-machine-kvm2 = callPackage ../applications/networking/cluster/docker-machine/kvm2.nix { };
+  docker-machine-xhyve = callPackage ../applications/networking/cluster/docker-machine/xhyve.nix {
+    inherit (darwin.apple_sdk.frameworks) Hypervisor vmnet;
+    inherit (darwin) cctools;
+  };
+
+  docker-distribution = callPackage ../applications/virtualization/docker/distribution.nix { };
+
+  dockfmt = callPackage ../development/tools/dockfmt { };
+
+  afterburn = callPackage ../tools/admin/afterburn {};
+
+  docker-buildx = callPackage ../applications/virtualization/docker/buildx.nix { };
+  docker-compose_2 = callPackage ../applications/virtualization/docker/compose.nix { };
+
+  amazon-ecr-credential-helper = callPackage ../tools/admin/amazon-ecr-credential-helper { };
+
+  docker-credential-gcr = callPackage ../tools/admin/docker-credential-gcr { };
+
+  docker-credential-helpers = callPackage ../tools/admin/docker-credential-helpers { };
+
+  doodle = callPackage ../applications/search/doodle { };
+
+  dr14_tmeter = callPackage ../applications/audio/dr14_tmeter { };
+
+  dragonfly-reverb = callPackage ../applications/audio/dragonfly-reverb { };
+
+  drawing = callPackage ../applications/graphics/drawing { };
+
+  drawio = callPackage ../applications/graphics/drawio {};
+
+  drawpile = libsForQt5.callPackage ../applications/graphics/drawpile { };
+  drawpile-server-headless = libsForQt5.callPackage ../applications/graphics/drawpile {
+    buildClient = false;
+    buildServerGui = false;
+  };
+
+  drawterm = callPackage ../tools/admin/drawterm { };
+
+  droopy = python3Packages.callPackage ../applications/networking/droopy { };
+
+  drumgizmo = callPackage ../applications/audio/drumgizmo { };
+
+  dsf2flac = callPackage ../applications/audio/dsf2flac { };
+
+  dunst = callPackage ../applications/misc/dunst { };
+
+  du-dust = callPackage ../tools/misc/dust { };
+
+  dutree = callPackage ../tools/misc/dutree { };
+
+  devede = callPackage ../applications/video/devede { };
+
+  denemo = callPackage ../applications/audio/denemo { };
+
+  dvdauthor = callPackage ../applications/video/dvdauthor { };
+
+  dvdbackup = callPackage ../applications/video/dvdbackup { };
+
+  dvd-slideshow = callPackage ../applications/video/dvd-slideshow { };
+
+  dvdstyler = callPackage ../applications/video/dvdstyler {
+    inherit (gnome2) libgnomeui;
+  };
+
+  dyff = callPackage ../development/tools/dyff { };
+
+  dwl = callPackage ../applications/window-managers/dwl { };
+
+  dwm = callPackage ../applications/window-managers/dwm {
+    # dwm is configured entirely through source modification. Allow users to
+    # specify patches through nixpkgs.config.dwm.patches
+    patches = config.dwm.patches or [];
+  };
+
+  dwmblocks = callPackage ../applications/misc/dwmblocks { };
+
+  dwm-status = callPackage ../applications/window-managers/dwm/dwm-status.nix { };
+
+  dynamips = callPackage ../applications/emulators/dynamips { };
+
+  exploitdb = callPackage ../tools/security/exploitdb { };
+
+  evilwm = callPackage ../applications/window-managers/evilwm {
+    patches = config.evilwm.patches or [];
+  };
+
+  dzen2 = callPackage ../applications/window-managers/dzen2 { };
+
+  e16 = callPackage ../applications/window-managers/e16 { };
+
+  eaglemode = callPackage ../applications/misc/eaglemode { };
+
+  ebumeter = callPackage ../applications/audio/ebumeter { };
+
+  echoip = callPackage ../servers/echoip { };
+
+  eclipses = recurseIntoAttrs (callPackage ../applications/editors/eclipse {
+    jdk = jdk11;
+  });
+
+  ecpdap = callPackage ../development/embedded/fpga/ecpdap {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  ecs-agent = callPackage ../applications/virtualization/ecs-agent { };
+
+  ed = callPackage ../applications/editors/ed { };
+
+  edbrowse = callPackage ../applications/editors/edbrowse { };
+
+  oed = callPackage ../applications/editors/oed { };
+
+  ekho = callPackage ../applications/audio/ekho { };
+
+  electron-cash = libsForQt5.callPackage ../applications/misc/electron-cash { };
+
+  electrum = libsForQt5.callPackage ../applications/misc/electrum { };
+
+  electrum-grs = libsForQt5.callPackage ../applications/misc/electrum-grs { };
+
+  electrum-ltc = libsForQt5.callPackage ../applications/misc/electrum/ltc.nix { };
+
+  elementary-planner = callPackage ../applications/office/elementary-planner { };
+
+  elf-dissector = libsForQt5.callPackage ../applications/misc/elf-dissector { };
+
+  elfx86exts = callPackage ../applications/misc/elfx86exts { };
+
+  elinks = callPackage ../applications/networking/browsers/elinks {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  elvis = callPackage ../applications/editors/elvis { };
+
+  em = callPackage ../applications/editors/em { };
+
+  emacs = emacs27;
+  emacs-nox = emacs27-nox;
+
+  emacs27 = callPackage ../applications/editors/emacs/27.nix {
+    # use override to enable additional features
+    libXaw = xorg.libXaw;
+    Xaw3d = null;
+    gconf = null;
+    alsa-lib = null;
+    acl = null;
+    gpm = null;
+    inherit (darwin.apple_sdk.frameworks) AppKit GSS ImageIO;
+    inherit (darwin) sigtool;
+  };
+
+  emacs27-nox = lowPrio (emacs27.override {
+    withX = false;
+    withNS = false;
+    withGTK2 = false;
+    withGTK3 = false;
+  });
+
+  emacsMacport = callPackage ../applications/editors/emacs/macport.nix {
+    inherit (darwin.apple_sdk.frameworks)
+      AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
+      ImageCaptureCore GSS ImageIO;
+    stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
+  };
+
+  emacsPackagesFor = emacs: import ./emacs-packages.nix {
+    inherit (lib) makeScope makeOverridable dontRecurseIntoAttrs;
+    emacs' = emacs;
+    pkgs' = pkgs;  # default pkgs used for bootstrapping the emacs package set
+  };
+
+  inherit (gnome) empathy;
+
+  enhanced-ctorrent = callPackage ../applications/networking/enhanced-ctorrent { };
+
+  entangle = callPackage ../applications/video/entangle {
+    inherit (gst_all_1) gstreamer gst-plugins-base;
+  };
+
+  eolie = callPackage ../applications/networking/browsers/eolie { };
+
+  eos-installer = callPackage ../applications/misc/eos-installer { };
+
+  epdfview = callPackage ../applications/misc/epdfview { };
+
+  epeg = callPackage ../applications/graphics/epeg { };
+
+  epgstation = callPackage ../applications/video/epgstation { };
+
+  inherit (gnome) epiphany;
+
+  ephemeral = callPackage ../applications/networking/browsers/ephemeral { };
+
+  epic5 = callPackage ../applications/networking/irc/epic5 { };
+
+  epick = callPackage ../applications/graphics/epick {
+    inherit (darwin.apple_sdk.frameworks) AppKit IOKit;
+    inherit (xorg) libX11 libXcursor libXi libXrandr libxcb;
+  };
+
+  epr = callPackage ../applications/misc/epr { };
+
+  eq10q = callPackage ../applications/audio/eq10q { };
+
+  errbot = python3Packages.callPackage ../applications/networking/errbot { };
+
+  espeak-classic = callPackage ../applications/audio/espeak { };
+
+  espeak-ng = callPackage ../applications/audio/espeak-ng { };
+  espeak = res.espeak-ng;
+
+  espeakedit = callPackage ../applications/audio/espeak/edit.nix { };
+
+  eteroj.lv2 = libsForQt5.callPackage ../applications/audio/eteroj.lv2 { };
+
+  etebase-server = with python3Packages; toPythonApplication etebase-server;
+
+  etesync-dav = callPackage ../applications/misc/etesync-dav {};
+
+  etherape = callPackage ../applications/networking/sniffers/etherape { };
+
+  evilpixie = libsForQt5.callPackage ../applications/graphics/evilpixie { };
+
+  eww = callPackage ../applications/window-managers/eww { };
+  eww-wayland = callPackage ../applications/window-managers/eww {
+    withWayland = true;
+  };
+
+  exaile = callPackage ../applications/audio/exaile { };
+
+  exercism = callPackage ../applications/misc/exercism { };
+
+  expenses = callPackage ../applications/misc/expenses { };
+
+  fnott = callPackage ../applications/misc/fnott { };
+
+  gg-scm = callPackage ../applications/version-management/git-and-tools/gg { };
+
+  gigalixir = with python3Packages; toPythonApplication gigalixir;
+
+  go-libp2p-daemon = callPackage ../servers/go-libp2p-daemon { };
+
+  go-motion = callPackage ../development/tools/go-motion { };
+
+  gpg-mdp = callPackage ../applications/misc/gpg-mdp { };
+
+  greenfoot = callPackage ../applications/editors/greenfoot {
+    jdk = jetbrains.jdk;
+  };
+
+  gspeech = callPackage ../applications/audio/gspeech { };
+
+  haruna = libsForQt5.callPackage ../applications/video/haruna { };
+
+  hdrmerge = libsForQt5.callPackage ../applications/graphics/hdrmerge { };
+
+  helix = callPackage ../applications/editors/helix { };
+
+  icesl = callPackage ../applications/misc/icesl { };
+
+  kalendar = libsForQt5.callPackage ../applications/office/kalendar { };
+
+  keepassx = callPackage ../applications/misc/keepassx { };
+  keepassx2 = callPackage ../applications/misc/keepassx/2.0.nix { };
+  keepassxc = libsForQt5.callPackage ../applications/misc/keepassx/community.nix { };
+
+  keeweb = callPackage ../applications/misc/keeweb { };
+
+  inherit (gnome) evince;
+  evolution-data-server = gnome.evolution-data-server;
+  evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { };
+  evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { };
+  evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; };
+
+  keepass = callPackage ../applications/misc/keepass { };
+
+  keepass-charactercopy = callPackage ../applications/misc/keepass-plugins/charactercopy { };
+
+  keepass-keeagent = callPackage ../applications/misc/keepass-plugins/keeagent { };
+
+  keepass-keepasshttp = callPackage ../applications/misc/keepass-plugins/keepasshttp { };
+
+  keepass-keepassrpc = callPackage ../applications/misc/keepass-plugins/keepassrpc { };
+
+  keepass-keetraytotp = callPackage ../applications/misc/keepass-plugins/keetraytotp { };
+
+  keepass-otpkeyprov = callPackage ../applications/misc/keepass-plugins/otpkeyprov { };
+
+  keepass-qrcodeview = callPackage ../applications/misc/keepass-plugins/qrcodeview { };
+
+  kerbrute = callPackage ../tools/security/kerbrute { };
+
+  exrdisplay = callPackage ../applications/graphics/exrdisplay { };
+
+  exrtools = callPackage ../applications/graphics/exrtools { };
+
+  f1viewer = callPackage ../applications/video/f1viewer {};
+
+  fasttext = callPackage ../applications/science/machine-learning/fasttext { };
+
+  fbmenugen = callPackage ../applications/misc/fbmenugen { };
+
+  fbpanel = callPackage ../applications/window-managers/fbpanel { };
+
+  fbreader = callPackage ../applications/misc/fbreader {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa;
+  };
+
+  fdr = libsForQt5.callPackage ../applications/science/programming/fdr { };
+
+  feedbackd = callPackage ../applications/misc/feedbackd { };
+
+  fehlstart = callPackage ../applications/misc/fehlstart { };
+
+  fetchmail = callPackage ../applications/misc/fetchmail { };
+
+  fff = callPackage ../applications/misc/fff { };
+
+  fig2dev = callPackage ../applications/graphics/fig2dev { };
+
+  FIL-plugins = callPackage ../applications/audio/FIL-plugins { };
+
+  finalfrontier = callPackage ../applications/science/machine-learning/finalfrontier {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  finalfusion-utils = callPackage ../applications/science/machine-learning/finalfusion-utils {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  flacon = libsForQt5.callPackage ../applications/audio/flacon { };
+
+  flexget = callPackage ../applications/networking/flexget { };
+
+  fldigi = callPackage ../applications/radio/fldigi {
+    hamlib = hamlib_4;
+  };
+
+  flink = callPackage ../applications/networking/cluster/flink { };
+
+  fllog = callPackage ../applications/radio/fllog { };
+
+  flmsg = callPackage ../applications/radio/flmsg { };
+
+  flrig = callPackage ../applications/radio/flrig { };
+
+  fluxus = callPackage ../applications/graphics/fluxus { };
+
+  flwrap = callPackage ../applications/radio/flwrap { };
+
+  fluidsynth = callPackage ../applications/audio/fluidsynth {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit CoreAudio CoreMIDI CoreServices;
+  };
+
+  fmit = libsForQt5.callPackage ../applications/audio/fmit { };
+
+  fmsynth = callPackage ../applications/audio/fmsynth { };
+
+  focuswriter = libsForQt5.callPackage ../applications/editors/focuswriter { };
+
+  foliate = callPackage ../applications/office/foliate { };
+
+  fondo = callPackage ../applications/graphics/fondo { };
+
+  font-manager = callPackage ../applications/misc/font-manager { };
+
+  fontpreview = callPackage ../applications/misc/fontpreview { };
+
+  foo-yc20 = callPackage ../applications/audio/foo-yc20 { };
+
+  fossil = callPackage ../applications/version-management/fossil {
+    sqlite = sqlite.override { enableDeserialize = true; };
+  };
+
+  freebayes = callPackage ../applications/science/biology/freebayes { };
+
+  freewheeling = callPackage ../applications/audio/freewheeling { };
+
+  fritzing = libsForQt5.callPackage ../applications/science/electronics/fritzing { };
+
+  fritzprofiles = with python3.pkgs; toPythonApplication fritzprofiles;
+
+  fsv = callPackage ../applications/misc/fsv {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  ft2-clone = callPackage ../applications/audio/ft2-clone {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio CoreMIDI CoreServices Cocoa;
+  };
+
+  fvwm = callPackage ../applications/window-managers/fvwm { };
+
+  ganttproject-bin = callPackage ../applications/misc/ganttproject-bin { };
+
+  gaucheBootstrap = callPackage ../development/interpreters/gauche/boot.nix { };
+
+  gauche = callPackage ../development/interpreters/gauche { };
+
+  gcal = callPackage ../applications/misc/gcal { };
+
+  gcstar = callPackage ../applications/misc/gcstar { };
+
+  geany = callPackage ../applications/editors/geany { };
+  geany-with-vte = callPackage ../applications/editors/geany/with-vte.nix { };
+
+  geek-life = callPackage ../applications/misc/geek-life { };
+
+  genact = callPackage ../applications/misc/genact { };
+
+  genxword = callPackage ../applications/misc/genxword { };
+
+  geoipupdate = callPackage ../applications/misc/geoipupdate { };
+
+  ghostwriter = libsForQt5.callPackage ../applications/editors/ghostwriter { };
+
+  gitweb = callPackage ../applications/version-management/git-and-tools/gitweb { };
+
+  globe-cli = callPackage ../applications/misc/globe-cli { };
+
+  gnss-sdr = callPackage ../applications/radio/gnss-sdr { };
+
+  gnuradio = callPackage ../applications/radio/gnuradio/wrapper.nix {
+    unwrapped = callPackage ../applications/radio/gnuradio {
+      inherit (darwin.apple_sdk.frameworks) CoreAudio;
+      python = python3;
+    };
+  };
+  gnuradioPackages = lib.recurseIntoAttrs gnuradio.pkgs;
+  # A build without gui components and other utilites not needed for end user
+  # libraries
+  gnuradioMinimal = gnuradio.override {
+    doWrap = false;
+    unwrapped = gnuradio.unwrapped.override {
+      volk = volk.override {
+        # So it will not reference python
+        enableModTool = false;
+      };
+      features = {
+        gnuradio-companion = false;
+        python-support = false;
+        examples = false;
+        gr-qtgui = false;
+        gr-utils = false;
+        gr-modtool = false;
+        gr-blocktool = false;
+        sphinx = false;
+        doxygen = false;
+        # Doesn't make it reference python eventually, but makes reverse
+        # depdendencies require python to use cmake files of GR.
+        gr-ctrlport = false;
+      };
+    };
+  };
+  gnuradio3_9 = callPackage ../applications/radio/gnuradio/wrapper.nix {
+    unwrapped = callPackage ../applications/radio/gnuradio/3.9.nix {
+      inherit (darwin.apple_sdk.frameworks) CoreAudio;
+      python = python3;
+    };
+  };
+  gnuradio3_9Packages = lib.recurseIntoAttrs gnuradio.pkgs;
+  # A build without gui components and other utilites not needed for end user
+  # libraries
+  gnuradio3_9Minimal = gnuradio.override {
+    doWrap = false;
+    unwrapped = gnuradio.unwrapped.override {
+      volk = volk.override {
+        # So it will not reference python
+        enableModTool = false;
+      };
+      features = {
+        gnuradio-companion = false;
+        python-support = false;
+        examples = false;
+        gr-qtgui = false;
+        gr-utils = false;
+        gr-modtool = false;
+        gr-blocktool = false;
+        sphinx = false;
+        doxygen = false;
+        # Doesn't make it reference python eventually, but makes reverse
+        # depdendencies require python to use cmake files of GR.
+        gr-ctrlport = false;
+      };
+    };
+  };
+  gnuradio3_8 = callPackage ../applications/radio/gnuradio/wrapper.nix {
+    unwrapped = callPackage ../applications/radio/gnuradio/3.8.nix {
+      inherit (darwin.apple_sdk.frameworks) CoreAudio;
+      python = python3;
+    };
+  };
+  gnuradio3_8Packages = lib.recurseIntoAttrs gnuradio3_8.pkgs;
+  # A build without gui components and other utilites not needed if gnuradio is
+  # used as a c++ library.
+  gnuradio3_8Minimal = gnuradio3_8.override {
+    doWrap = false;
+    unwrapped = gnuradio3_8.unwrapped.override {
+      volk = volk.override {
+        enableModTool = false;
+      };
+      features = {
+        gnuradio-companion = false;
+        python-support = false;
+        examples = false;
+        gr-qtgui = false;
+        gr-utils = false;
+        gr-modtool = false;
+        sphinx = false;
+        doxygen = false;
+        # Doesn't make it reference python eventually, but makes reverse
+        # depdendencies require python to use cmake files of GR.
+        gr-ctrlport = false;
+      };
+    };
+  };
+
+  grandorgue = callPackage ../applications/audio/grandorgue { };
+
+  greetd = recurseIntoAttrs {
+    greetd = callPackage ../os-specific/linux/greetd { };
+    gtkgreet = callPackage ../os-specific/linux/gtkgreet { };
+    dlm = callPackage ../os-specific/linux/dlm { };
+    wlgreet = callPackage ../os-specific/linux/wlgreet { };
+    tuigreet = callPackage ../os-specific/linux/tuigreet { };
+  };
+
+  goldendict = libsForQt5.callPackage ../applications/misc/goldendict {
+    inherit (darwin) libiconv;
+  };
+
+  gomuks = callPackage ../applications/networking/instant-messengers/gomuks { };
+
+  inherit (ocaml-ng.ocamlPackages_4_10) google-drive-ocamlfuse;
+
+  googler = callPackage ../applications/misc/googler {
+    python = python3;
+  };
+
+  gopher = callPackage ../applications/networking/gopher/gopher { };
+
+  gophernotes = callPackage ../applications/editors/gophernotes { };
+
+  goxel = callPackage ../applications/graphics/goxel { };
+
+  gpa = callPackage ../applications/misc/gpa { };
+
+  gpicview = callPackage ../applications/graphics/gpicview {
+    gtk2 = gtk2-x11;
+  };
+
+  gpx = callPackage ../applications/misc/gpx { };
+
+  gqrx = callPackage ../applications/radio/gqrx { };
+  gqrx-portaudio = callPackage ../applications/radio/gqrx {
+    portaudioSupport = true;
+    pulseaudioSupport = false;
+  };
+  gqrx-gr-audio = callPackage ../applications/radio/gqrx {
+    portaudioSupport = false;
+    pulseaudioSupport = false;
+  };
+
+  gpx-viewer = callPackage ../applications/misc/gpx-viewer { };
+
+  grass = callPackage ../applications/gis/grass { };
+
+  grepcidr = callPackage ../applications/search/grepcidr { };
+
+  grepm = callPackage ../applications/search/grepm { };
+
+  grip-search = callPackage ../tools/text/grip-search { };
+
+  grip = callPackage ../applications/misc/grip { };
+
+  gsimplecal = callPackage ../applications/misc/gsimplecal { };
+
+  gthumb = callPackage ../applications/graphics/gthumb { };
+
+  gtimelog = with python3Packages; toPythonApplication gtimelog;
+
+  inherit (gnome) gucharmap;
+
+  guitarix = callPackage ../applications/audio/guitarix {
+    fftw = fftwSinglePrec;
+  };
+
+  gurk-rs = callPackage ../applications/networking/instant-messengers/gurk-rs { };
+
+  gjay = callPackage ../applications/audio/gjay { };
+
+  photivo = callPackage ../applications/graphics/photivo { };
+
+  rhythmbox = callPackage ../applications/audio/rhythmbox { };
+
+  gradio = callPackage ../applications/audio/gradio { };
+
+  puddletag = libsForQt5.callPackage ../applications/audio/puddletag { };
+
+  w_scan = callPackage ../applications/video/w_scan { };
+
+  wavesurfer = callPackage ../applications/misc/audio/wavesurfer { };
+
+  wavrsocvt = callPackage ../applications/misc/audio/wavrsocvt { };
+
+  welle-io = libsForQt5.callPackage ../applications/radio/welle-io { };
+
+  wireshark = callPackage ../applications/networking/sniffers/wireshark {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices SystemConfiguration;
+    libpcap = libpcap.override { withBluez = stdenv.isLinux; };
+  };
+  wireshark-qt = wireshark;
+
+  tshark = wireshark-cli;
+  wireshark-cli = wireshark.override {
+    withQt = false;
+    libpcap = libpcap.override { withBluez = stdenv.isLinux; };
+  };
+
+  sngrep = callPackage ../applications/networking/sniffers/sngrep {};
+
+  termshark = callPackage ../tools/networking/termshark { };
+
+  fbida = callPackage ../applications/graphics/fbida { };
+
+  fclones = callPackage ../tools/misc/fclones {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  fcp = callPackage ../tools/misc/fcp { };
+
+  fdupes = callPackage ../tools/misc/fdupes { };
+
+  feh = callPackage ../applications/graphics/feh { };
+
+  filezilla = callPackage ../applications/networking/ftp/filezilla { };
+
+  firefoxCommon = args: callPackage (import ../applications/networking/browsers/firefox/common.nix args) {
+    libpng = libpng_apng;
+    gnused = gnused_422;
+    inherit (darwin.apple_sdk.frameworks) CoreMedia ExceptionHandling
+                                          Kerberos AVFoundation MediaToolbox
+                                          CoreLocation Foundation AddressBook;
+    inherit (darwin) libobjc;
+  };
+
+  firefoxPackages = recurseIntoAttrs (callPackage ../applications/networking/browsers/firefox/packages.nix { });
+
+  firefox-unwrapped = firefoxPackages.firefox;
+  firefox-esr-91-unwrapped = firefoxPackages.firefox-esr-91;
+  firefox = wrapFirefox firefox-unwrapped { };
+  firefox-wayland = wrapFirefox firefox-unwrapped { forceWayland = true; };
+  firefox-esr-91 = wrapFirefox firefox-esr-91-unwrapped { };
+
+  firefox-esr = firefox-esr-91;
+  firefox-esr-unwrapped = firefoxPackages.firefox-esr-91;
+  firefox-esr-wayland = wrapFirefox firefox-esr-91-unwrapped { forceWayland = true; };
+
+  firefox-beta = wrapFirefox firefox-beta-unwrapped { };
+  firefox-beta-unwrapped = firefoxPackages.firefox-beta;
+
+  firefox-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin {
+    inherit (gnome) adwaita-icon-theme;
+    channel = "release";
+    generated = import ../applications/networking/browsers/firefox-bin/release_sources.nix;
+  };
+
+  firefox-bin = wrapFirefox firefox-bin-unwrapped {
+    pname = "firefox-bin";
+  };
+
+  firefox-beta-bin-unwrapped = firefox-bin-unwrapped.override {
+    inherit (gnome) adwaita-icon-theme;
+    channel = "beta";
+    generated = import ../applications/networking/browsers/firefox-bin/beta_sources.nix;
+  };
+
+  firefox-beta-bin = res.wrapFirefox firefox-beta-bin-unwrapped {
+    pname = "firefox-beta-bin";
+    desktopName = "Firefox Beta";
+  };
+
+  firefox-devedition-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin {
+    inherit (gnome) adwaita-icon-theme;
+    channel = "devedition";
+    generated = import ../applications/networking/browsers/firefox-bin/devedition_sources.nix;
+  };
+
+  firefox-devedition-bin = res.wrapFirefox firefox-devedition-bin-unwrapped {
+    nameSuffix = "-devedition";
+    pname = "firefox-devedition-bin";
+    desktopName = "Firefox DevEdition";
+  };
+
+  librewolf-unwrapped = firefoxPackages.librewolf;
+
+  librewolf = wrapFirefox librewolf-unwrapped {
+    inherit (librewolf-unwrapped) extraPrefsFiles extraPoliciesFiles;
+    libName = "librewolf";
+  };
+
+  librewolf-wayland = librewolf.override {
+    forceWayland = true;
+  };
+
+  firefox_decrypt = python3Packages.callPackage ../tools/security/firefox_decrypt { };
+
+  flac = callPackage ../applications/audio/flac { };
+
+  redoflacs = callPackage ../applications/audio/redoflacs { };
+
+  flameshot = libsForQt5.callPackage ../tools/misc/flameshot { };
+
+  flex-ncat = callPackage ../applications/radio/flex-ncat { };
+
+  flex-ndax = callPackage ../applications/radio/flex-ndax { };
+
+  fluxbox = callPackage ../applications/window-managers/fluxbox { };
+
+  fomp = callPackage ../applications/audio/fomp { };
+
+  formatter = callPackage ../applications/misc/formatter { };
+
+  formiko = with python3Packages; callPackage ../applications/editors/formiko {
+    inherit buildPythonApplication;
+  };
+
+  foxotron = callPackage ../applications/graphics/foxotron {
+    inherit (darwin.apple_sdk.frameworks) AVFoundation Carbon Cocoa CoreAudio Kernel OpenGL;
+  };
+
+  foxtrotgps = callPackage ../applications/misc/foxtrotgps { };
+
+  fractal = callPackage ../applications/networking/instant-messengers/fractal { };
+
+  fragments = callPackage ../applications/networking/p2p/fragments { };
+
+  freecad = libsForQt5.callPackage ../applications/graphics/freecad {
+    boost = python3Packages.boost169;
+    inherit (python3Packages)
+      GitPython
+      matplotlib
+      pivy
+      ply
+      pycollada
+      pyside2
+      pyside2-tools
+      python
+      pyyaml
+      scipy
+      shiboken2;
+  };
+
+  freedv = callPackage ../applications/radio/freedv { };
+
+  freemind = callPackage ../applications/misc/freemind {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  freenet = callPackage ../applications/networking/p2p/freenet {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  freeoffice = callPackage ../applications/office/softmaker/freeoffice.nix {};
+
+  freeplane = callPackage ../applications/misc/freeplane { };
+
+  freepv = callPackage ../applications/graphics/freepv { };
+
+  xfontsel = callPackage ../applications/misc/xfontsel { };
+  inherit (xorg) xlsfonts;
+
+  xrdp = callPackage ../applications/networking/remote/xrdp { };
+
+  freerdp = callPackage ../applications/networking/remote/freerdp {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good;
+  };
+
+  freerdpUnstable = freerdp;
+
+  friture = libsForQt5.callPackage ../applications/audio/friture { };
+
+  fte = callPackage ../applications/editors/fte { };
+
+  g933-utils = callPackage ../tools/misc/g933-utils { };
+
+  game-music-emu = callPackage ../applications/audio/game-music-emu { };
+
+  gavrasm = callPackage ../development/compilers/gavrasm { };
+
+  gcalcli = callPackage ../applications/misc/gcalcli { };
+
+  vcal = callPackage ../applications/misc/vcal { };
+
+  gcolor2 = callPackage ../applications/graphics/gcolor2 { };
+
+  gcolor3 = callPackage ../applications/graphics/gcolor3 { };
+
+  get_iplayer = callPackage ../applications/misc/get_iplayer {};
+
+  getxbook = callPackage ../applications/misc/getxbook { };
+
+  gimp = callPackage ../applications/graphics/gimp {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    lcms = lcms2;
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa;
+  };
+
+  gimp-with-plugins = callPackage ../applications/graphics/gimp/wrapper.nix {
+    plugins = null; # All packaged plugins enabled, if not explicit plugin list supplied
+  };
+
+  gimpPlugins = recurseIntoAttrs (callPackage ../applications/graphics/gimp/plugins {});
+
+  glimpse = callPackage ../applications/graphics/glimpse {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    lcms = lcms2;
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa;
+  };
+
+  glimpse-with-plugins = callPackage ../applications/graphics/glimpse/wrapper.nix {
+    plugins = null; # All packaged plugins enabled, if not explicit plugin list supplied
+  };
+
+  glimpsePlugins = recurseIntoAttrs (callPackage ../applications/graphics/glimpse/plugins {});
+
+  girara = callPackage ../applications/misc/girara {
+    gtk = gtk3;
+  };
+
+  git = callPackage ../applications/version-management/git-and-tools/git {
+    svnSupport = false;         # for git-svn support
+    guiSupport = false;         # requires tcl/tk
+    sendEmailSupport = false;   # requires plenty of perl libraries
+    perlLibs = [perlPackages.LWP perlPackages.URI perlPackages.TermReadKey];
+    smtpPerlLibs = [
+      perlPackages.libnet perlPackages.NetSMTPSSL
+      perlPackages.IOSocketSSL perlPackages.NetSSLeay
+      perlPackages.AuthenSASL perlPackages.DigestHMAC
+    ];
+  };
+
+  # The full-featured Git.
+  gitFull = git.override {
+    svnSupport = true;
+    guiSupport = true;
+    sendEmailSupport = true;
+    withLibsecret = !stdenv.isDarwin;
+  };
+
+  # Git with SVN support, but without GUI.
+  gitSVN = lowPrio (appendToName "with-svn" (git.override {
+    svnSupport = true;
+  }));
+
+  git-doc = lib.addMetaAttrs {
+    description = "Additional documentation for Git";
+    longDescription = ''
+      This package contains additional documentation (HTML and text files) that
+      is referenced in the man pages of Git.
+    '';
+  } gitFull.doc;
+
+  gitMinimal = appendToName "minimal" (git.override {
+    withManual = false;
+    pythonSupport = false;
+    withpcre2 = false;
+  });
+
+  gitRepo = callPackage ../applications/version-management/git-repo { };
+
+  git-quick-stats = callPackage ../development/tools/git-quick-stats {};
+
+  git-review = python3Packages.callPackage ../applications/version-management/git-review { };
+
+  github-cli = gh;
+
+  gitolite = callPackage ../applications/version-management/gitolite { };
+
+  gitoxide = callPackage ../applications/version-management/gitoxide {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+  };
+
+  inherit (gnome) gitg;
+
+  gmrun = callPackage ../applications/misc/gmrun {};
+
+  gnucash = callPackage ../applications/office/gnucash { };
+
+  goffice = callPackage ../development/libraries/goffice { };
+
+  got = callPackage ../applications/version-management/got { };
+
+  gtkterm = callPackage ../tools/misc/gtkterm { };
+
+  gtk-pipe-viewer = perlPackages.callPackage ../applications/video/pipe-viewer { withGtk3 = true; };
+
+  hydrus = python3Packages.callPackage ../applications/graphics/hydrus {
+    inherit miniupnpc_2 swftools;
+    inherit (qt5) wrapQtAppsHook;
+  };
+
+  jetbrains = (recurseIntoAttrs (callPackages ../applications/editors/jetbrains {
+    vmopts = config.jetbrains.vmopts or null;
+    jdk = jetbrains.jdk;
+  }) // {
+    jdk = callPackage ../development/compilers/jetbrains-jdk {  };
+  });
+
+  jmusicbot = callPackage ../applications/audio/jmusicbot { };
+
+  lemonade = callPackage ../applications/misc/lemonade { };
+
+  libquvi = callPackage ../applications/video/quvi/library.nix { };
+
+  librespot = callPackage ../applications/audio/librespot {
+    withALSA = stdenv.isLinux;
+    withPulseAudio = config.pulseaudio or stdenv.isLinux;
+    withPortAudio = stdenv.isDarwin;
+  };
+
+  limesctl = callPackage ../applications/misc/limesctl { };
+
+  linssid = libsForQt5.callPackage ../applications/networking/linssid { };
+
+  deadd-notification-center = callPackage ../applications/misc/deadd-notification-center { };
+
+  lollypop = callPackage ../applications/audio/lollypop { };
+
+  losslessaudiochecker = callPackage ../applications/audio/losslessaudiochecker { };
+
+  m32edit = callPackage ../applications/audio/midas/m32edit.nix {};
+
+  manim = python3Packages.callPackage ../applications/video/manim {
+    opencv = python3Packages.opencv3;
+  };
+
+  manuskript = libsForQt5.callPackage ../applications/editors/manuskript { };
+
+  manul = callPackage ../development/tools/manul { };
+
+  mindforger = libsForQt5.callPackage ../applications/editors/mindforger { };
+
+  mi2ly = callPackage ../applications/audio/mi2ly {};
+
+  moe =  callPackage ../applications/editors/moe { };
+
+  multibootusb = libsForQt514.callPackage ../applications/misc/multibootusb { qt5 = qt514; };
+
+  praat = callPackage ../applications/audio/praat { };
+
+  quvi = callPackage ../applications/video/quvi/tool.nix {
+    lua5_sockets = lua51Packages.luasocket;
+    lua5 = lua5_1;
+  };
+
+  quvi_scripts = callPackage ../applications/video/quvi/scripts.nix { };
+
+  rhvoice = callPackage ../applications/audio/rhvoice { };
+
+  svox = callPackage ../applications/audio/svox { };
+
+  giada = callPackage ../applications/audio/giada {};
+
+  giara = callPackage ../applications/networking/giara { };
+
+  gitit = callPackage ../applications/misc/gitit {};
+
+  gkrellm = callPackage ../applications/misc/gkrellm {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  glow = callPackage ../applications/editors/glow { };
+
+  glowing-bear = callPackage ../applications/networking/irc/glowing-bear { };
+
+  gmtk = callPackage ../development/libraries/gmtk { };
+
+  gmu = callPackage ../applications/audio/gmu { };
+
+  gnaural = callPackage ../applications/audio/gnaural { };
+
+  gnome_mplayer = callPackage ../applications/video/gnome-mplayer { };
+
+  gnumeric = callPackage ../applications/office/gnumeric { };
+
+  gnunet = callPackage ../applications/networking/p2p/gnunet { };
+
+  gnunet-gtk = callPackage ../applications/networking/p2p/gnunet/gtk.nix { };
+
+  gocr = callPackage ../applications/graphics/gocr { };
+
+  gobby = callPackage ../applications/editors/gobby { };
+
+  gphoto2 = callPackage ../applications/misc/gphoto2 { };
+
+  gphoto2fs = callPackage ../applications/misc/gphoto2/gphotofs.nix { };
+
+  gramps = callPackage ../applications/misc/gramps {
+        pythonPackages = python3Packages;
+  };
+
+  graphicsmagick = callPackage ../applications/graphics/graphicsmagick { };
+  graphicsmagick_q16 = graphicsmagick.override { quantumdepth = 16; };
+
+  graphicsmagick-imagemagick-compat = callPackage ../applications/graphics/graphicsmagick/compat.nix { };
+
+  grisbi = callPackage ../applications/office/grisbi { gtk = gtk3; };
+
+  gtkpod = callPackage ../applications/audio/gtkpod { };
+
+  q4wine = libsForQt5.callPackage ../applications/misc/q4wine { };
+
+  qrcodegen = callPackage ../development/libraries/qrcodegen { };
+
+  qrencode = callPackage ../development/libraries/qrencode { };
+
+  geeqie = callPackage ../applications/graphics/geeqie { };
+
+  gigedit = callPackage ../applications/audio/gigedit { };
+
+  gqview = callPackage ../applications/graphics/gqview { };
+
+  gmpc = callPackage ../applications/audio/gmpc {};
+
+  gmtp = callPackage ../applications/misc/gmtp {};
+
+  gnomecast = callPackage ../applications/video/gnomecast { };
+
+  celluloid = callPackage ../applications/video/celluloid { };
+
+  gnome-recipes = callPackage ../applications/misc/gnome-recipes {
+    inherit (gnome) gnome-autoar;
+  };
+
+  gollum = callPackage ../applications/misc/gollum { };
+
+  gonic = callPackage ../servers/gonic {
+    inherit (darwin.apple_sdk.frameworks) AppKit AudioToolbox;
+  };
+
+  googleearth-pro = libsForQt5.callPackage ../applications/misc/googleearth-pro { };
+
+  google-chrome = callPackage ../applications/networking/browsers/google-chrome { };
+
+  google-chrome-beta = google-chrome.override { chromium = chromiumBeta; channel = "beta"; };
+
+  google-chrome-dev = google-chrome.override { chromium = chromiumDev; channel = "dev"; };
+
+  google-play-music-desktop-player = callPackage ../applications/audio/google-play-music-desktop-player {
+    inherit (gnome2) GConf;
+  };
+
+  gosmore = callPackage ../applications/misc/gosmore { };
+
+  gpsbabel = libsForQt5.callPackage ../applications/misc/gpsbabel {
+    inherit (darwin) IOKit;
+  };
+
+  gpsbabel-gui = libsForQt5.callPackage ../applications/misc/gpsbabel/gui.nix { };
+
+  gpscorrelate = callPackage ../applications/misc/gpscorrelate { };
+
+  gpsd = callPackage ../servers/gpsd { };
+
+  gpsprune = callPackage ../applications/misc/gpsprune { };
+
+  gpxlab = libsForQt5.callPackage ../applications/misc/gpxlab { };
+
+  gpxsee = libsForQt5.callPackage ../applications/misc/gpxsee { };
+
+  gspell = callPackage ../development/libraries/gspell { };
+
+  gtk2fontsel = callPackage ../applications/misc/gtk2fontsel { };
+
+  guardian-agent = callPackage ../tools/networking/guardian-agent { };
+
+  gv = callPackage ../applications/misc/gv { };
+
+  gvisor = callPackage ../applications/virtualization/gvisor {
+    go = go_1_16;
+  };
+
+  gvisor-containerd-shim = callPackage ../applications/virtualization/gvisor/containerd-shim.nix { };
+
+  guvcview = libsForQt5.callPackage ../os-specific/linux/guvcview { };
+
+  gwc = callPackage ../applications/audio/gwc { };
+
+  gxmessage = callPackage ../applications/misc/gxmessage { };
+
+  gxmatcheq-lv2 = callPackage ../applications/audio/gxmatcheq-lv2 { };
+
+  gxplugins-lv2 = callPackage ../applications/audio/gxplugins-lv2 { };
+
+  hachoir = with python3Packages; toPythonApplication hachoir;
+
+  hackrf = callPackage ../applications/radio/hackrf { };
+
+  hacksaw = callPackage ../tools/misc/hacksaw {};
+
+  hakuneko = callPackage ../tools/misc/hakuneko { };
+
+  hamster = callPackage ../applications/misc/hamster { };
+
+  hacpack = callPackage ../tools/compression/hacpack { };
+
+  hashit = callPackage ../tools/misc/hashit { };
+
+  hactool = callPackage ../tools/compression/hactool { };
+
+  hdhomerun-config-gui = callPackage ../applications/video/hdhomerun-config-gui { };
+
+  hdr-plus = callPackage ../applications/graphics/hdr-plus {
+    stdenv = clangStdenv;
+  };
+
+  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 { };
+
+  herbe = callPackage ../applications/misc/herbe { };
+
+  herbstluftwm = callPackage ../applications/window-managers/herbstluftwm { };
+
+  hercules = callPackage ../applications/emulators/hercules { };
+
+  hexchat = callPackage ../applications/networking/irc/hexchat { };
+
+  hexcurse = callPackage ../applications/editors/hexcurse { };
+
+  hexdino = callPackage ../applications/editors/hexdino { };
+
+  hexedit = callPackage ../applications/editors/hexedit { };
+
+  himalaya = callPackage ../applications/networking/mailreaders/himalaya {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  hipchat = callPackage ../applications/networking/instant-messengers/hipchat { };
+
+  hivelytracker = callPackage ../applications/audio/hivelytracker { };
+
+  hledger = haskell.lib.compose.justStaticExecutables haskellPackages.hledger;
+  hledger-check-fancyassertions = callPackage ../applications/office/hledger-check-fancyassertions { };
+  hledger-iadd = haskell.lib.compose.justStaticExecutables haskellPackages.hledger-iadd;
+  hledger-interest = haskell.lib.compose.justStaticExecutables haskellPackages.hledger-interest;
+  hledger-ui = haskell.lib.compose.justStaticExecutables haskellPackages.hledger-ui;
+  hledger-web = haskell.lib.compose.justStaticExecutables haskellPackages.hledger-web;
+
+  homebank = callPackage ../applications/office/homebank {
+    gtk = gtk3;
+  };
+
+  hors = callPackage ../development/tools/hors {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  hover = callPackage ../development/tools/hover { };
+
+  hovercraft = python3Packages.callPackage ../applications/misc/hovercraft { };
+
+  howl = callPackage ../applications/editors/howl { };
+
+  hdl-dump = callPackage ../tools/misc/hdl-dump { };
+
+  hpack = haskell.lib.compose.justStaticExecutables haskellPackages.hpack;
+
+  hpcg = callPackage ../tools/misc/hpcg { };
+
+  hpl = callPackage ../tools/misc/hpl { };
+
+  hpmyroom = libsForQt5.callPackage ../applications/networking/hpmyroom { };
+
+  ht = callPackage ../applications/editors/ht { };
+
+  xh = callPackage ../tools/networking/xh {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  hubstaff = callPackage ../applications/misc/hubstaff { };
+
+  hue-cli = callPackage ../tools/networking/hue-cli { };
+
+  inherit (nodePackages) hueadm;
+
+  hugin = callPackage ../applications/graphics/hugin {
+    wxGTK = wxGTK30;
+  };
+
+  haunt = callPackage ../applications/misc/haunt { };
+
+  hugo = callPackage ../applications/misc/hugo { };
+
+  go-org = callPackage ../applications/misc/go-org { };
+
+  hushboard = python3.pkgs.callPackage ../applications/audio/hushboard { };
+
+  hydrogen = qt5.callPackage ../applications/audio/hydrogen { };
+  hydrogen_0 = callPackage ../applications/audio/hydrogen/0.nix { }; # Old stable, has GMKit.
+
+  hydroxide = callPackage ../applications/networking/hydroxide { };
+
+  hyper-haskell-server-with-packages = callPackage ../development/tools/haskell/hyper-haskell/server.nix {
+    inherit (haskellPackages) ghcWithPackages;
+    packages = self: with self; [];
+  };
+
+  hyper-haskell = callPackage ../development/tools/haskell/hyper-haskell {
+    hyper-haskell-server = hyper-haskell-server-with-packages.override {
+      packages = self: with self; [
+        hyper-extra diagrams csound-catalog
+      ];
+    };
+    extra-packages = [ csound ];
+  };
+
+  hyperledger-fabric = callPackage ../tools/misc/hyperledger-fabric { };
+
+  indigenous-desktop = callPackage ../applications/networking/feedreaders/indigenous-desktop { };
+
+  jackline = callPackage ../applications/networking/instant-messengers/jackline { };
+
+  leftwm = callPackage ../applications/window-managers/leftwm { };
+
+  levant = callPackage ../applications/networking/cluster/levant { };
+
+  lwm = callPackage ../applications/window-managers/lwm { };
+
+  marker = callPackage ../applications/editors/marker { };
+
+  musikcube = callPackage ../applications/audio/musikcube {};
+
+  libmt32emu = callPackage ../applications/audio/munt/libmt32emu.nix { };
+
+  mt32emu-qt = libsForQt5.callPackage ../applications/audio/munt/mt32emu-qt.nix { };
+
+  mt32emu-smf2wav = callPackage ../applications/audio/munt/mt32emu-smf2wav.nix { };
+
+  p2pool = callPackage ../applications/misc/p2pool { };
+
+  pass2csv = python3Packages.callPackage ../tools/security/pass2csv {};
+
+  pass-secret-service = callPackage ../applications/misc/pass-secret-service { };
+
+  pinboard = with python3Packages; toPythonApplication pinboard;
+
+  pinboard-notes-backup = haskell.lib.compose.justStaticExecutables haskellPackages.pinboard-notes-backup;
+
+  pixelnuke = callPackage ../applications/graphics/pixelnuke { };
+
+  pixeluvo = callPackage ../applications/graphics/pixeluvo { };
+
+  pixinsight = libsForQt5.callPackage ../applications/graphics/pixinsight { };
+
+  pmbootstrap = python3Packages.callPackage ../tools/misc/pmbootstrap { };
+
+  shepherd = nodePackages."@nerdwallet/shepherd";
+
+  skate = callPackage ../applications/misc/skate { };
+
+  slack = callPackage ../applications/networking/instant-messengers/slack { };
+
+  slack-cli = callPackage ../tools/networking/slack-cli { };
+
+  slack-term = callPackage ../applications/networking/instant-messengers/slack-term { };
+
+  singularity = callPackage ../applications/virtualization/singularity { };
+
+  spectmorph = callPackage ../applications/audio/spectmorph { };
+
+  smallwm = callPackage ../applications/window-managers/smallwm { };
+
+  smooth = callPackage ../development/libraries/smooth { };
+
+  spectrwm = callPackage ../applications/window-managers/spectrwm { };
+
+  spot = callPackage ../applications/audio/spot { };
+
+  spotify-cli-linux = callPackage ../applications/audio/spotify-cli-linux { };
+
+  spotifyd = callPackage ../applications/audio/spotifyd {
+    withALSA = stdenv.isLinux;
+    withPulseAudio = config.pulseaudio or stdenv.isLinux;
+    withPortAudio = stdenv.isDarwin;
+  };
+
+  srain = callPackage ../applications/networking/irc/srain { };
+
+  super-productivity = callPackage ../applications/office/super-productivity {
+    electron = electron_17;
+  };
+
+  wlroots = wlroots_0_15;
+  wlroots_0_14 = callPackage ../development/libraries/wlroots/0.14.nix {
+    inherit (xorg) xcbutilrenderutil;
+  };
+  wlroots_0_15 = callPackage ../development/libraries/wlroots/0.15.nix {
+    inherit (xorg) xcbutilrenderutil;
+  };
+
+  sway-unwrapped = callPackage ../applications/window-managers/sway { };
+  sway = callPackage ../applications/window-managers/sway/wrapper.nix { };
+  swaybg = callPackage ../applications/window-managers/sway/bg.nix { };
+  swayidle = callPackage ../applications/window-managers/sway/idle.nix { };
+  swaylock = callPackage ../applications/window-managers/sway/lock.nix { };
+  swaywsr = callPackage ../applications/window-managers/sway/wsr.nix { };
+  sway-contrib = recurseIntoAttrs (callPackages ../applications/window-managers/sway/contrib.nix { });
+
+  swaylock-fancy = callPackage ../applications/window-managers/sway/lock-fancy.nix { };
+
+  swaylock-effects = callPackage ../applications/window-managers/sway/lock-effects.nix { };
+
+  swaynotificationcenter = callPackage ../applications/misc/swaynotificationcenter { };
+
+  tiramisu = callPackage ../applications/misc/tiramisu { };
+
+  rootbar = callPackage ../applications/misc/rootbar {};
+
+  waybar = callPackage ../applications/misc/waybar {};
+
+  wbg = callPackage ../applications/misc/wbg { };
+
+  hikari = callPackage ../applications/window-managers/hikari {
+    wlroots = wlroots_0_14;
+  };
+
+  i3 = callPackage ../applications/window-managers/i3 {
+    xcb-util-cursor = if stdenv.isDarwin then xcb-util-cursor-HEAD else xcb-util-cursor;
+  };
+
+  i3-auto-layout = callPackage ../applications/window-managers/i3/auto-layout.nix { };
+
+  i3-gaps = callPackage ../applications/window-managers/i3/gaps.nix { };
+
+  i3altlayout = callPackage ../applications/window-managers/i3/altlayout.nix { };
+
+  i3-balance-workspace = python3Packages.callPackage ../applications/window-managers/i3/balance-workspace.nix { };
+
+  i3-easyfocus = callPackage ../applications/window-managers/i3/easyfocus.nix { };
+
+  i3-layout-manager = callPackage ../applications/window-managers/i3/layout-manager.nix { };
+
+  i3-ratiosplit =  callPackage ../applications/window-managers/i3/i3-ratiosplit.nix { };
+
+  i3-resurrect = python3Packages.callPackage ../applications/window-managers/i3/i3-resurrect.nix { };
+
+  i3-swallow = python3Packages.callPackage ../applications/window-managers/i3/swallow.nix { };
+
+  i3blocks = callPackage ../applications/window-managers/i3/blocks.nix { };
+
+  i3blocks-gaps = callPackage ../applications/window-managers/i3/blocks-gaps.nix { };
+
+  i3cat = callPackage ../tools/misc/i3cat { };
+
+  i3ipc-glib = callPackage ../applications/window-managers/i3/i3ipc-glib.nix { };
+
+  i3lock = callPackage ../applications/window-managers/i3/lock.nix {
+    cairo = cairo.override { xcbSupport = true; };
+  };
+
+  i3lock-blur = callPackage ../applications/window-managers/i3/lock-blur.nix { };
+
+  i3lock-color = callPackage ../applications/window-managers/i3/lock-color.nix { };
+
+  i3lock-fancy = callPackage ../applications/window-managers/i3/lock-fancy.nix { };
+
+  i3lock-fancy-rapid = callPackage ../applications/window-managers/i3/lock-fancy-rapid.nix { };
+
+  i3lock-pixeled = callPackage ../misc/screensavers/i3lock-pixeled { };
+
+  betterlockscreen = callPackage ../misc/screensavers/betterlockscreen {
+    inherit (xorg) xdpyinfo xrandr xset;
+  };
+
+  multilockscreen = callPackage ../misc/screensavers/multilockscreen { };
+
+  i3minator = callPackage ../tools/misc/i3minator { };
+
+  i3nator = callPackage ../tools/misc/i3nator { };
+
+  i3pystatus = callPackage ../applications/window-managers/i3/pystatus.nix { };
+
+  i3status = callPackage ../applications/window-managers/i3/status.nix { };
+
+  i3status-rust = callPackage ../applications/window-managers/i3/status-rust.nix { };
+
+  i3wsr = callPackage ../applications/window-managers/i3/wsr.nix { };
+
+  i3-wk-switch = callPackage ../applications/window-managers/i3/wk-switch.nix { };
+
+  waybox = callPackage ../applications/window-managers/waybox {
+    wlroots = wlroots_0_14;
+  };
+
+  workstyle = callPackage ../applications/window-managers/i3/workstyle.nix { };
+
+  windowchef = callPackage ../applications/window-managers/windowchef { };
+
+  wmfocus = callPackage ../applications/window-managers/i3/wmfocus.nix { };
+
+  wmfs = callPackage ../applications/window-managers/wmfs { };
+
+  i810switch = callPackage ../os-specific/linux/i810switch { };
+
+  icewm = callPackage ../applications/window-managers/icewm {};
+
+  icon-library = callPackage ../applications/graphics/icon-library { };
+
+  id3v2 = callPackage ../applications/audio/id3v2 { };
+
+  ideamaker = libsForQt5.callPackage ../applications/misc/ideamaker { };
+
+  ifenslave = callPackage ../os-specific/linux/ifenslave { };
+
+  ii = callPackage ../applications/networking/irc/ii {
+    stdenv = gccStdenv;
+  };
+
+  ike = callPackage ../applications/networking/ike { };
+
+  ikiwiki = callPackage ../applications/misc/ikiwiki {
+    python = python3;
+    inherit (perlPackages.override { pkgs = pkgs // { imagemagick = imagemagickBig;}; }) ImageMagick;
+  };
+
+  iksemel = callPackage ../development/libraries/iksemel {
+    texinfo = texinfo6_7; # Uses @setcontentsaftertitlepage, removed in 6.8.
+  };
+
+  imag = callPackage ../applications/misc/imag {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  image-roll = callPackage ../applications/graphics/image-roll { };
+
+  imagej = callPackage ../applications/graphics/imagej { };
+
+  fiji = callPackage ../applications/graphics/fiji { };
+
+  imagemagick6_light = imagemagick6.override {
+    bzip2 = null;
+    zlib = null;
+    libX11 = null;
+    libXext = null;
+    libXt = null;
+    fontconfig = null;
+    freetype = null;
+    ghostscript = null;
+    libjpeg = null;
+    djvulibre = null;
+    lcms2 = null;
+    openexr = null;
+    libpng = null;
+    liblqr1 = null;
+    librsvg = null;
+    libtiff = null;
+    libxml2 = null;
+    openjpeg = null;
+    libwebp = null;
+    libheif = null;
+    libde265 = null;
+  };
+
+  imagemagick6 = callPackage ../applications/graphics/ImageMagick/6.x.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Foundation;
+    ghostscript = null;
+  };
+
+  imagemagick6Big = imagemagick6.override { inherit ghostscript; };
+
+  imagemagick_light = lowPrio (imagemagick.override {
+    bzip2 = null;
+    zlib = null;
+    libX11 = null;
+    libXext = null;
+    libXt = null;
+    fontconfig = null;
+    freetype = null;
+    ghostscript = null;
+    libjpeg = null;
+    djvulibre = null;
+    lcms2 = null;
+    openexr = null;
+    libjxl = null;
+    libpng = null;
+    liblqr1 = null;
+    librsvg = null;
+    libtiff = null;
+    libxml2 = null;
+    openjpeg = null;
+    libwebp = null;
+    libheif = null;
+  });
+
+  imagemagick = lowPrio (imagemagickBig.override {
+    ghostscript = null;
+  });
+
+  imagemagickBig = lowPrio (callPackage ../applications/graphics/ImageMagick/7.0.nix {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Foundation;
+  });
+
+  imagination = callPackage ../applications/video/imagination { };
+
+  inherit (nodePackages) imapnotify;
+
+  img2pdf = with python3Packages; toPythonApplication img2pdf;
+
+  imgbrd-grabber = qt5.callPackage ../applications/graphics/imgbrd-grabber {
+    typescript = nodePackages.typescript;
+  };
+
+  imgcat = callPackage ../applications/graphics/imgcat { };
+
+  img-cat = callPackage ../applications/graphics/img-cat { };
+
+  imgp = python3Packages.callPackage ../applications/graphics/imgp { };
+
+  index-fm = libsForQt5.callPackage ../applications/misc/index-fm { };
+
+  inkcut = libsForQt5.callPackage ../applications/misc/inkcut { };
+
+  inkscape = callPackage ../applications/graphics/inkscape {
+    lcms = lcms2;
+  };
+
+  inkscape-with-extensions = callPackage ../applications/graphics/inkscape/with-extensions.nix { };
+
+  inkscape-extensions = recurseIntoAttrs (callPackages ../applications/graphics/inkscape/extensions.nix {});
+
+  inspectrum = callPackage ../applications/radio/inspectrum { };
+
+  inputplug = callPackage ../tools/X11/inputplug { };
+
+  ion3 = callPackage ../applications/window-managers/ion-3 {
+    lua = lua5_1;
+  };
+
+  ipe = libsForQt514.callPackage ../applications/graphics/ipe {
+    ghostscript = ghostscriptX;
+    texlive = texlive.combine { inherit (texlive) scheme-small; };
+    lua5 = lua5_3;
+  };
+
+  iptraf = callPackage ../applications/networking/iptraf { };
+
+  iptraf-ng = callPackage ../applications/networking/iptraf-ng { };
+
+  irccloud = callPackage ../applications/networking/irc/irccloud { };
+
+  irssi = callPackage ../applications/networking/irc/irssi { };
+
+  irssi_fish = callPackage ../applications/networking/irc/irssi/fish { };
+
+  kirc = callPackage ../applications/networking/irc/kirc { };
+
+  ir.lv2 = callPackage ../applications/audio/ir.lv2 { };
+
+  istioctl = callPackage ../applications/networking/cluster/istioctl { };
+
+  bip = callPackage ../applications/networking/irc/bip { };
+
+  j4-dmenu-desktop = callPackage ../applications/misc/j4-dmenu-desktop { };
+
+  jabcode = callPackage ../development/libraries/jabcode { };
+
+  jabcode-writer = callPackage ../development/libraries/jabcode {
+    subproject = "writer";
+  };
+
+  jabcode-reader = callPackage ../development/libraries/jabcode {
+    subproject = "reader";
+  };
+
+  jabref = callPackage ../applications/office/jabref { };
+
+  jack_capture = callPackage ../applications/audio/jack-capture { };
+
+  jack_oscrolloscope = callPackage ../applications/audio/jack-oscrolloscope { };
+
+  jack_rack = callPackage ../applications/audio/jack-rack { };
+
+  jackmeter = callPackage ../applications/audio/jackmeter { };
+
+  jackmix = libsForQt5.callPackage ../applications/audio/jackmix { };
+  jackmix_jack1 = jackmix.override { jack = jack1; };
+
+  jaeles = callPackage ../tools/security/jaeles { };
+
+  jalv = callPackage ../applications/audio/jalv { };
+
+  jameica = callPackage ../applications/office/jameica {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  jamin = callPackage ../applications/audio/jamin { };
+
+  japa = callPackage ../applications/audio/japa { };
+
+  dupd = callPackage ../tools/misc/dupd { };
+
+  jconvolver = callPackage ../applications/audio/jconvolver { };
+
+  jdupes = callPackage ../tools/misc/jdupes { };
+
+  jed = callPackage ../applications/editors/jed { };
+
+  jedit = callPackage ../applications/editors/jedit { };
+
+  jgmenu = callPackage ../applications/misc/jgmenu { };
+
+  jigdo = callPackage ../applications/misc/jigdo { };
+
+  jitsi = callPackage ../applications/networking/instant-messengers/jitsi { };
+
+  joe = callPackage ../applications/editors/joe { };
+
+  josm = callPackage ../applications/misc/josm { };
+
+  jwm = callPackage ../applications/window-managers/jwm { };
+
+  jwm-settings-manager = callPackage ../applications/window-managers/jwm/jwm-settings-manager.nix { };
+
+  k3s = callPackage ../applications/networking/cluster/k3s { };
+
+  k3sup = callPackage ../applications/networking/cluster/k3sup {};
+
+  kconf = callPackage ../applications/networking/cluster/kconf { };
+
+  kail = callPackage ../tools/networking/kail {  };
+
+  kanboard = callPackage ../applications/misc/kanboard { };
+
+  kapitonov-plugins-pack = callPackage ../applications/audio/kapitonov-plugins-pack { };
+
+  kapow = libsForQt5.callPackage ../applications/misc/kapow { };
+
+  kappanhang = callPackage ../applications/radio/kappanhang { };
+
+  okteta = libsForQt5.callPackage ../applications/editors/okteta { };
+
+  k4dirstat = libsForQt5.callPackage ../applications/misc/k4dirstat { };
+
+  kbibtex = libsForQt5.callPackage ../applications/office/kbibtex { };
+
+  kbst = callPackage ../applications/networking/cluster/kbst { };
+
+  kaidan = libsForQt5.callPackage ../applications/networking/instant-messengers/kaidan { };
+
+  kde-gruvbox = callPackage ../data/themes/kde-gruvbox { };
+
+  kdeltachat = libsForQt5.callPackage ../applications/networking/instant-messengers/kdeltachat { };
+
+  kdevelop-pg-qt = libsForQt5.callPackage ../applications/editors/kdevelop5/kdevelop-pg-qt.nix { };
+
+  kdevelop-unwrapped = libsForQt5.callPackage ../applications/editors/kdevelop5/kdevelop.nix {
+    llvmPackages = llvmPackages_10;
+  };
+
+  kdev-php = libsForQt5.callPackage ../applications/editors/kdevelop5/kdev-php.nix { };
+  kdev-python = libsForQt5.callPackage ../applications/editors/kdevelop5/kdev-python.nix {
+    python = python3;
+  };
+
+  kdevelop = libsForQt5.callPackage ../applications/editors/kdevelop5/wrapper.nix { };
+
+  kega-fusion = pkgsi686Linux.callPackage ../applications/emulators/kega-fusion { };
+
+  kepubify = callPackage ../tools/misc/kepubify { };
+
+  kermit = callPackage ../tools/misc/kermit { };
+
+  kexi = libsForQt514.callPackage ../applications/office/kexi { };
+
+  kgt = callPackage ../development/tools/kgt {
+    inherit (skawarePackages) cleanPackaging;
+  };
+
+  khronos = callPackage ../applications/office/khronos { };
+
+  keyfinder = libsForQt5.callPackage ../applications/audio/keyfinder { };
+
+  keyfinder-cli = callPackage ../applications/audio/keyfinder-cli { };
+
+  kgraphviewer = libsForQt5.callPackage ../applications/graphics/kgraphviewer { };
+
+  khal = callPackage ../applications/misc/khal { };
+
+  khard = callPackage ../applications/misc/khard { };
+
+  kid3 = libsForQt5.callPackage ../applications/audio/kid3 { };
+
+  kile = libsForQt5.callPackage ../applications/editors/kile { };
+
+  kitsas = libsForQt5.callPackage ../applications/office/kitsas { };
+
+  kiwix = libsForQt5.callPackage ../applications/misc/kiwix { };
+
+  klayout = libsForQt5.callPackage ../applications/misc/klayout { };
+
+  klee = callPackage ../applications/science/logic/klee { };
+
+  kmetronome = libsForQt5.callPackage ../applications/audio/kmetronome { };
+
+  kmplayer = libsForQt5.callPackage ../applications/video/kmplayer { };
+
+  kmymoney = libsForQt5.callPackage ../applications/office/kmymoney { };
+
+  kn = callPackage ../applications/networking/cluster/kn { };
+
+  kodestudio = callPackage ../applications/editors/kodestudio { };
+
+  kondo = callPackage ../applications/misc/kondo { };
+
+  konversation = libsForQt5.callPackage ../applications/networking/irc/konversation { };
+
+  kooha = callPackage ../applications/video/kooha { };
+
+  kotatogram-desktop = libsForQt5.callPackage ../applications/networking/instant-messengers/telegram/kotatogram-desktop { };
+
+  kpt = callPackage ../applications/networking/cluster/kpt { };
+
+  krane = callPackage ../applications/networking/cluster/krane { };
+
+  krita = libsForQt5.callPackage ../applications/graphics/krita { };
+
+  krusader = libsForQt5.callPackage ../applications/misc/krusader { };
+
+  ksuperkey = callPackage ../tools/X11/ksuperkey { };
+
+  ktimetracker = libsForQt5.callPackage ../applications/office/ktimetracker { };
+
+  kubedb-cli = callPackage ../applications/networking/cluster/kubedb-cli { };
+
+  kubecfg = callPackage ../applications/networking/cluster/kubecfg { };
+
+  kube-score = callPackage ../applications/networking/cluster/kube-score { };
+
+  kubectl-evict-pod = callPackage ../applications/networking/cluster/kubectl-evict-pod { };
+
+  kubeval = callPackage ../applications/networking/cluster/kubeval { };
+
+  kubeval-schema = callPackage ../applications/networking/cluster/kubeval/schema.nix { };
+
+  kubernetes = callPackage ../applications/networking/cluster/kubernetes { };
+  kubectl = callPackage ../applications/networking/cluster/kubernetes/kubectl.nix { };
+
+  kubemqctl = callPackage ../applications/networking/cluster/kubemqctl { };
+
+  kubeseal = callPackage ../applications/networking/cluster/kubeseal { };
+
+  kubernix = callPackage ../applications/networking/cluster/kubernix { };
+
+  kubeconform = callPackage ../applications/networking/cluster/kubeconform { };
+
+  kubecolor = callPackage ../applications/networking/cluster/kubecolor { };
+
+  kubebuilder = callPackage ../applications/networking/cluster/kubebuilder { };
+
+  kuttl = callPackage ../applications/networking/cluster/kuttl { };
+
+  kubectl-doctor = callPackage ../applications/networking/cluster/kubectl-doctor { };
+
+  kubectl-example = callPackage ../applications/networking/cluster/kubectl-example { };
+
+  kubectl-tree = callPackage ../applications/networking/cluster/kubectl-tree { };
+
+  kubeless = callPackage ../applications/networking/cluster/kubeless { };
+
+  kubelogin = callPackage ../applications/networking/cluster/kubelogin { };
+
+  kubelogin-oidc = callPackage ../applications/networking/cluster/kubelogin-oidc { };
+
+  k9s = callPackage ../applications/networking/cluster/k9s { };
+
+  pgo-client = callPackage ../applications/networking/cluster/pgo-client { };
+
+  popeye = callPackage ../applications/networking/cluster/popeye { };
+
+  kube-capacity = callPackage ../applications/networking/cluster/kube-capacity { };
+
+  fluxctl = callPackage ../applications/networking/cluster/fluxctl { };
+
+  fluxcd = callPackage ../applications/networking/cluster/fluxcd { };
+
+  linkerd = callPackage ../applications/networking/cluster/linkerd { };
+  linkerd_edge = callPackage ../applications/networking/cluster/linkerd/edge.nix { };
+  linkerd_stable = linkerd;
+
+  kuma = callPackage ../applications/networking/cluster/kuma { isFull = true; };
+  kuma-experimental = callPackage ../applications/networking/cluster/kuma {
+    isFull = true;
+    enableGateway = true;
+    pname = "kuma-experimental";
+  };
+  kumactl = callPackage ../applications/networking/cluster/kuma {
+    components = ["kumactl"];
+    pname = "kumactl";
+  };
+  kuma-cp = callPackage ../applications/networking/cluster/kuma {
+    components = ["kuma-cp"];
+    pname = "kuma-cp";
+  };
+  kuma-dp = callPackage ../applications/networking/cluster/kuma {
+    components = ["kuma-dp"];
+    pname = "kuma-dp";
+  };
+  kuma-prometheus-sd = callPackage ../applications/networking/cluster/kuma {
+    components = ["kuma-prometheus-sd"];
+    pname = "kuma-prometheus-sd";
+  };
+
+  kile-wl = callPackage ../applications/misc/kile-wl { };
+
+  kiln = callPackage ../applications/misc/kiln { };
+
+  kubernetes-controller-tools = callPackage ../development/tools/kubernetes-controller-tools { };
+
+  kubernetes-helm = callPackage ../applications/networking/cluster/helm { };
+
+  wrapHelm = callPackage ../applications/networking/cluster/helm/wrapper.nix { };
+
+  kubernetes-helm-wrapped = wrapHelm kubernetes-helm {};
+
+  kubernetes-helmPlugins = dontRecurseIntoAttrs (callPackage ../applications/networking/cluster/helm/plugins { });
+
+  chart-testing = callPackage ../applications/networking/cluster/helm/chart-testing { };
+
+  helm-docs = callPackage ../applications/networking/cluster/helm-docs { };
+
+  kubetail = callPackage ../applications/networking/cluster/kubetail { } ;
+
+  kup = libsForQt5.callPackage ../applications/misc/kup { };
+
+  kupfer = callPackage ../applications/misc/kupfer { };
+
+  kvirc = libsForQt514.callPackage ../applications/networking/irc/kvirc { };
+
+  lambda-delta = callPackage ../applications/emulators/lambda-delta { };
+
+  lame = callPackage ../development/libraries/lame { };
+
+  labwc = callPackage ../applications/window-managers/labwc {
+    wlroots = wlroots_0_15;
+  };
+
+  larswm = callPackage ../applications/window-managers/larswm { };
+
+  lash = callPackage ../applications/audio/lash { };
+
+  ladspaH = callPackage ../applications/audio/ladspa-sdk/ladspah.nix { };
+
+  ladspaPlugins = callPackage ../applications/audio/ladspa-plugins {
+    fftw = fftwSinglePrec;
+  };
+
+  ladspa-sdk = callPackage ../applications/audio/ladspa-sdk { };
+
+  lazpaint = callPackage ../applications/graphics/lazpaint { };
+
+  caps = callPackage ../applications/audio/caps { };
+
+  lbdb = callPackage ../tools/misc/lbdb { abook = null; gnupg = null; goobook = null; khard = null; mu = null; };
+
+  lbry = callPackage ../applications/video/lbry { };
+
+  lbzip2 = callPackage ../tools/compression/lbzip2 { };
+
+  lci = callPackage ../applications/science/logic/lci {};
+
+  lemonbar = callPackage ../applications/window-managers/lemonbar { };
+
+  lemonbar-xft = callPackage ../applications/window-managers/lemonbar/xft.nix { };
+
+  legit = callPackage ../applications/version-management/git-and-tools/legit { };
+
+  lens = callPackage ../applications/networking/cluster/lens { };
+
+  leo-editor = libsForQt5.callPackage ../applications/editors/leo-editor { };
+
+  libowfat = callPackage ../development/libraries/libowfat { };
+
+  libowlevelzs = callPackage ../development/libraries/libowlevelzs { };
+
+  librecad = libsForQt514.callPackage ../applications/misc/librecad {
+    boost = boost175;
+  };
+
+  libreoffice = if stdenv.isDarwin
+    then callPackage ../applications/office/libreoffice/darwin.nix {}
+    else hiPrio libreoffice-still;
+  libreoffice-unwrapped = (hiPrio libreoffice-still).libreoffice;
+
+  libreoffice-args = {
+    inherit (perlPackages) ArchiveZip IOCompress;
+    zip = zip.override { enableNLS = false; };
+    fontsConf = makeFontsConf {
+      fontDirectories = [
+        carlito dejavu_fonts
+        freefont_ttf xorg.fontmiscmisc
+        liberation_ttf_v1
+        liberation_ttf_v2
+      ];
+    };
+    clucene_core = clucene_core_2;
+    lcms = lcms2;
+    harfbuzz = harfbuzz.override {
+      withIcu = true; withGraphite2 = true;
+    };
+  };
+
+  libreoffice-qt = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix {
+    libreoffice = libsForQt5.callPackage ../applications/office/libreoffice
+      (libreoffice-args // {
+        kdeIntegration = true;
+        variant = "fresh";
+      });
+  });
+
+  libreoffice-fresh = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix {
+    libreoffice = callPackage ../applications/office/libreoffice
+      (libreoffice-args // {
+        variant = "fresh";
+      });
+  });
+  libreoffice-fresh-unwrapped = libreoffice-fresh.libreoffice;
+
+  libreoffice-still = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix {
+    libreoffice = callPackage ../applications/office/libreoffice
+      (libreoffice-args // {
+        variant = "still";
+      });
+  });
+  libreoffice-still-unwrapped = libreoffice-still.libreoffice;
+
+  libresprite = callPackage ../applications/editors/libresprite {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Foundation;
+  };
+
+  libvmi = callPackage ../development/libraries/libvmi { };
+
+  libutp = callPackage ../applications/networking/p2p/libutp { };
+
+  lifelines = callPackage ../applications/misc/lifelines { };
+
+  liferea = callPackage ../applications/networking/newsreaders/liferea { };
+
+  lightworks = callPackage ../applications/video/lightworks { };
+
+  lingot = callPackage ../applications/audio/lingot { };
+
+  littlegptracker = callPackage ../applications/audio/littlegptracker {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  ledger = callPackage ../applications/office/ledger { };
+
+  ledger-autosync = callPackage  ../applications/office/ledger-autosync { };
+
+  ledger-web = callPackage ../applications/office/ledger-web { };
+
+  ledger2beancount = callPackage ../tools/text/ledger2beancount { };
+
+  lightburn = libsForQt5.callPackage ../applications/graphics/lightburn { };
+
+  lighthouse = callPackage ../applications/misc/lighthouse { };
+
+  lighthouse-steamvr = callPackage ../tools/misc/lighthouse-steamvr { };
+
+  lighttable = callPackage ../applications/editors/lighttable {};
+
+  libdsk = callPackage ../applications/emulators/libdsk { };
+
+  liblinphone = callPackage ../development/libraries/liblinphone { };
+
+  links2 = callPackage ../applications/networking/browsers/links2 { };
+
+  linphone = libsForQt5.callPackage ../applications/networking/instant-messengers/linphone { };
+
+  linuxsampler = callPackage ../applications/audio/linuxsampler { };
+
+  llpp = callPackage ../applications/misc/llpp {
+    inherit (ocaml-ng.ocamlPackages_4_09) ocaml;
+  };
+
+  lmms = libsForQt5.callPackage ../applications/audio/lmms {
+    lame = null;
+    libsoundio = null;
+    portaudio = null;
+  };
+
+  losslesscut-bin = callPackage ../applications/video/losslesscut-bin { };
+
+  loxodo = callPackage ../applications/misc/loxodo { };
+
+  lsd2dsl = libsForQt5.callPackage ../applications/misc/lsd2dsl { };
+
+  lrzsz = callPackage ../tools/misc/lrzsz { };
+
+  lsp-plugins = callPackage ../applications/audio/lsp-plugins { php = php74; };
+
+  luminanceHDR = libsForQt5.callPackage ../applications/graphics/luminance-hdr { };
+
+  lxdvdrip = callPackage ../applications/video/lxdvdrip { };
+
+  handbrake = callPackage ../applications/video/handbrake {
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox Foundation VideoToolbox;
+    inherit (darwin) libobjc;
+  };
+
+  handlr = callPackage ../tools/misc/handlr { };
+
+  jftui = callPackage ../applications/video/jftui { };
+
+  lime = callPackage ../development/libraries/lime { };
+
+  luakit = callPackage ../applications/networking/browsers/luakit {
+    inherit (luajitPackages) luafilesystem;
+  };
+
+  lookatme = callPackage ../tools/misc/lookatme {};
+
+  looking-glass-client = callPackage ../applications/virtualization/looking-glass-client { };
+
+  ltc-tools = callPackage ../applications/audio/ltc-tools { };
+
+  lscolors = callPackage ../applications/misc/lscolors { };
+
+  lucky-commit = callPackage ../applications/version-management/git-and-tools/lucky-commit {
+    inherit (darwin.apple_sdk.frameworks) OpenCL;
+  };
+
+  luddite = with python3Packages; toPythonApplication luddite;
+
+  lumail = callPackage ../applications/networking/mailreaders/lumail {
+    lua = lua5_1;
+  };
+
+  luppp = callPackage ../applications/audio/luppp { };
+
+  lutris-unwrapped = python3.pkgs.callPackage ../applications/misc/lutris {
+    inherit (gnome) gnome-desktop;
+    wine = wineWowPackages.staging;
+  };
+  lutris = callPackage ../applications/misc/lutris/fhsenv.nix {
+    buildFHSUserEnv = buildFHSUserEnvBubblewrap;
+  };
+  lutris-free = lutris.override {
+    steamSupport = false;
+  };
+
+  lv2bm = callPackage ../applications/audio/lv2bm { };
+
+  lv2-cpp-tools = callPackage ../applications/audio/lv2-cpp-tools { };
+
+  lxi-tools = callPackage ../tools/networking/lxi-tools { };
+
+  lynx = callPackage ../applications/networking/browsers/lynx { };
+
+  lyrebird = callPackage ../applications/audio/lyrebird { };
+
+  lyx = libsForQt5.callPackage ../applications/misc/lyx { };
+
+  m4acut = callPackage ../applications/audio/m4acut { };
+
+  mac = callPackage ../development/libraries/mac { };
+
+  macdylibbundler = callPackage ../development/tools/misc/macdylibbundler { inherit (darwin) cctools; };
+
+  magic-wormhole = with python3Packages; toPythonApplication magic-wormhole;
+
+  magnetophonDSP = lib.recurseIntoAttrs {
+    CharacterCompressor = callPackage ../applications/audio/magnetophonDSP/CharacterCompressor { };
+    CompBus = callPackage ../applications/audio/magnetophonDSP/CompBus { };
+    ConstantDetuneChorus  = callPackage ../applications/audio/magnetophonDSP/ConstantDetuneChorus { };
+    faustCompressors =  callPackage ../applications/audio/magnetophonDSP/faustCompressors { };
+    LazyLimiter = callPackage ../applications/audio/magnetophonDSP/LazyLimiter { };
+    MBdistortion = callPackage ../applications/audio/magnetophonDSP/MBdistortion { };
+    pluginUtils = callPackage ../applications/audio/magnetophonDSP/pluginUtils  { };
+    RhythmDelay = callPackage ../applications/audio/magnetophonDSP/RhythmDelay { };
+    VoiceOfFaust = callPackage ../applications/audio/magnetophonDSP/VoiceOfFaust { };
+    shelfMultiBand = callPackage ../applications/audio/magnetophonDSP/shelfMultiBand  { };
+  };
+
+  makeself = callPackage ../applications/misc/makeself { };
+
+  mako = callPackage ../applications/misc/mako { };
+
+  mandelbulber = libsForQt5.callPackage ../applications/graphics/mandelbulber { };
+
+  mapmap = libsForQt5.callPackage ../applications/video/mapmap { };
+
+  marathonctl = callPackage ../tools/virtualization/marathonctl { } ;
+
+  markdown-pp = callPackage ../tools/text/markdown-pp { };
+
+  mark = callPackage ../tools/text/mark { };
+
+  markets = callPackage ../applications/misc/markets { };
+
+  markmind = callPackage ../applications/misc/markmind {
+    electron = electron_9;
+  };
+
+  marp = callPackage ../applications/office/marp { };
+
+  magnetico = callPackage ../applications/networking/p2p/magnetico { };
+
+  mastodon-bot = nodePackages.mastodon-bot;
+
+  matchbox = callPackage ../applications/window-managers/matchbox { };
+
+  matrixcli = callPackage ../applications/networking/instant-messengers/matrixcli {
+    inherit (python3Packages) buildPythonApplication buildPythonPackage
+      pygobject3 pytest-runner requests responses pytest python-olm
+      canonicaljson;
+  };
+
+  matrix-commander = callPackage ../applications/networking/instant-messengers/matrix-commander { };
+
+  matrix-dl = callPackage ../applications/networking/instant-messengers/matrix-dl { };
+
+  matrix-recorder = callPackage ../applications/networking/instant-messengers/matrix-recorder {};
+
+  mblaze = callPackage ../applications/networking/mailreaders/mblaze { };
+
+  mbrola = callPackage ../applications/audio/mbrola { };
+
+  mcomix3 = callPackage ../applications/graphics/mcomix3 {};
+
+  mcpp = callPackage ../development/compilers/mcpp { };
+
+  mda_lv2 = callPackage ../applications/audio/mda-lv2 { };
+
+  mdzk = callPackage ../applications/misc/mdzk {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mediaelch = libsForQt5.callPackage ../applications/misc/mediaelch { };
+
+  mediainfo = callPackage ../applications/misc/mediainfo { };
+
+  mediainfo-gui = callPackage ../applications/misc/mediainfo-gui { };
+
+  mediathekview = callPackage ../applications/video/mediathekview { jre = adoptopenjdk-hotspot-bin-16; };
+
+  megapixels = callPackage ../applications/graphics/megapixels { };
+
+  meteo = callPackage ../applications/networking/weather/meteo { };
+
+  meld = callPackage ../applications/version-management/meld { };
+
+  meli = callPackage ../applications/networking/mailreaders/meli { };
+
+  melmatcheq.lv2 = callPackage ../applications/audio/melmatcheq.lv2 { };
+
+  melonDS = libsForQt5.callPackage ../applications/emulators/melonDS { };
+
+  meme-image-generator = callPackage ../applications/graphics/meme-image-generator { };
+
+  meme-suite = callPackage ../applications/science/biology/meme-suite { };
+
+  # Needs qtwebkit which is broken on qt5.15
+  mendeley = libsForQt514.callPackage ../applications/office/mendeley {
+    gconf = gnome2.GConf;
+  };
+
+  menumaker = callPackage ../applications/misc/menumaker { };
+
+  menyoki = callPackage ../applications/graphics/menyoki {
+    inherit (xorg) libX11 libXrandr;
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  mercurial = callPackage ../applications/version-management/mercurial {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  mercurialFull = mercurial.override { fullBuild = true; };
+
+  merkaartor = libsForQt5.callPackage ../applications/misc/merkaartor { };
+
+  mepo = callPackage ../applications/misc/mepo {
+    zig = zig_0_8_1;
+  };
+
+  meshcentral = callPackage ../tools/admin/meshcentral { };
+
+  meshlab = libsForQt5.callPackage ../applications/graphics/meshlab { };
+
+  metadata-cleaner = callPackage ../applications/misc/metadata-cleaner { };
+
+  metersLv2 = callPackage ../applications/audio/meters_lv2 { };
+
+  mhwaveedit = callPackage ../applications/audio/mhwaveedit {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  michabo = libsForQt5.callPackage ../applications/misc/michabo { };
+
+  mid2key = callPackage ../applications/audio/mid2key { };
+
+  midori-unwrapped = callPackage ../applications/networking/browsers/midori { };
+  midori = wrapFirefox midori-unwrapped { };
+
+  mikmod = callPackage ../applications/audio/mikmod { };
+
+  miniaudicle = callPackage ../applications/audio/miniaudicle { };
+
+  minicom = callPackage ../tools/misc/minicom { };
+
+  minigalaxy = callPackage ../applications/misc/minigalaxy { };
+
+  minimodem = callPackage ../applications/radio/minimodem { };
+
+  minidjvu = callPackage ../applications/graphics/minidjvu { };
+
+  minikube = callPackage ../applications/networking/cluster/minikube {
+    inherit (darwin.apple_sdk.frameworks) vmnet;
+  };
+
+  minishift = callPackage ../applications/networking/cluster/minishift { };
+
+  minitube = libsForQt5.callPackage ../applications/video/minitube { };
+
+  mimic = callPackage ../applications/audio/mimic { };
+
+  meh = callPackage ../applications/graphics/meh {};
+
+  mixxx = libsForQt5.callPackage ../applications/audio/mixxx { };
+
+  mjpg-streamer = callPackage ../applications/video/mjpg-streamer { };
+
+  mldonkey = callPackage ../applications/networking/p2p/mldonkey {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_08;
+  };
+
+  mlvwm = callPackage ../applications/window-managers/mlvwm { };
+
+  MMA = callPackage ../applications/audio/MMA { };
+
+  mmex = callPackage ../applications/office/mmex {
+    wxGTK30 = wxGTK30.override {
+      withWebKit = true;
+      withGtk2 = false;
+    };
+  };
+
+  mmsd = callPackage ../tools/networking/mmsd { };
+
+  mmtc = callPackage ../applications/audio/mmtc { };
+
+  mnamer = callPackage ../applications/misc/mnamer { };
+
+  moc = callPackage ../applications/audio/moc { };
+
+  mod-arpeggiator-lv2 = callPackage ../applications/audio/mod-arpeggiator-lv2 { };
+
+  mod-distortion = callPackage ../applications/audio/mod-distortion { };
+
+  xmr-stak = callPackage ../applications/misc/xmr-stak {
+    stdenvGcc6 = gcc6Stdenv;
+  };
+
+  xmrig = callPackage ../applications/misc/xmrig { };
+
+  xmrig-mo = callPackage ../applications/misc/xmrig/moneroocean.nix { };
+
+  xmrig-proxy = callPackage ../applications/misc/xmrig/proxy.nix { };
+
+  molot-lite = callPackage ../applications/audio/molot-lite { };
+
+  monkeysAudio = callPackage ../applications/audio/monkeys-audio { };
+
+  monkeysphere = callPackage ../tools/security/monkeysphere { };
+
+  monotone = callPackage ../applications/version-management/monotone {
+    lua = lua5;
+    boost = boost170;
+  };
+
+  monotoneViz = callPackage ../applications/version-management/monotone-viz {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_01_0;
+  };
+
+  monitor = callPackage ../applications/system/monitor {
+    libXNVCtrl = linuxPackages.nvidia_x11.settings.libXNVCtrl;
+  };
+
+  moolticute = libsForQt5.callPackage ../applications/misc/moolticute { };
+
+  moonlight-embedded = callPackage ../applications/misc/moonlight-embedded { };
+
+  moonlight-qt = libsForQt5.callPackage ../applications/misc/moonlight-qt { };
+
+  mooSpace = callPackage ../applications/audio/mooSpace { };
+
+  mop = callPackage ../applications/misc/mop { };
+
+  mopidyPackages = callPackages ../applications/audio/mopidy {
+    python = python3;
+  };
+
+  inherit (mopidyPackages)
+    mopidy
+    mopidy-iris
+    mopidy-jellyfin
+    mopidy-local
+    mopidy-moped
+    mopidy-mopify
+    mopidy-mpd
+    mopidy-mpris
+    mopidy-muse
+    mopidy-musicbox-webclient
+    mopidy-podcast
+    mopidy-scrobbler
+    mopidy-somafm
+    mopidy-soundcloud
+    mopidy-spotify
+    mopidy-spotify-tunigo
+    mopidy-subidy
+    mopidy-tunein
+    mopidy-youtube
+    mopidy-ytmusic;
+
+  motif = callPackage ../development/libraries/motif { };
+
+  mousai = callPackage ../applications/audio/mousai { };
+
+  mozjpeg = callPackage ../applications/graphics/mozjpeg { };
+
+  edgetx = libsForQt5.callPackage ../applications/misc/edgetx { };
+
+  easytag = callPackage ../applications/audio/easytag { };
+
+  mp3gain = callPackage ../applications/audio/mp3gain { };
+
+  mp3info = callPackage ../applications/audio/mp3info { };
+
+  mp3splt = callPackage ../applications/audio/mp3splt { };
+
+  mp3val = callPackage ../applications/audio/mp3val { };
+
+  mpc123 = callPackage ../applications/audio/mpc123 { };
+
+  mpg123 = callPackage ../applications/audio/mpg123 {
+    inherit (darwin.apple_sdk.frameworks) AudioUnit AudioToolbox;
+    jack = libjack2;
+  };
+
+  mpg321 = callPackage ../applications/audio/mpg321 { };
+
+  mpc-cli = callPackage ../applications/audio/mpc {
+    inherit (python3Packages) sphinx;
+  };
+
+  clerk = callPackage ../applications/audio/clerk { };
+
+  jujutsu = callPackage ../applications/version-management/jujutsu {
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
+    inherit (darwin) libiconv;
+  };
+
+  nbstripout = callPackage ../applications/version-management/nbstripout { python = python3; };
+
+  ncmpc = callPackage ../applications/audio/ncmpc { };
+
+  ncmpcpp = callPackage ../applications/audio/ncmpcpp { };
+
+  pragha = libsForQt5.callPackage ../applications/audio/pragha { };
+
+  rofi-mpd = callPackage ../applications/audio/rofi-mpd { };
+
+  rofi-calc = callPackage ../applications/science/math/rofi-calc { };
+
+  rofi-emoji = callPackage ../applications/misc/rofi-emoji { };
+
+  rofi-file-browser = callPackage ../applications/misc/rofi-file-browser { };
+
+  rofi-power-menu = callPackage ../applications/misc/rofi-power-menu { };
+
+  rofi-pulse-select = callPackage ../applications/audio/rofi-pulse-select { };
+
+  rofi-vpn = callPackage ../applications/networking/rofi-vpn { };
+
+  ympd = callPackage ../applications/audio/ympd { };
+
+  # a somewhat more maintained fork of ympd
+  mympd = callPackage ../applications/audio/mympd { };
+
+  nload = callPackage ../applications/networking/nload { };
+
+  nali = callPackage ../applications/networking/nali { };
+
+  normalize = callPackage ../applications/audio/normalize { };
+
+  mailspring = callPackage ../applications/networking/mailreaders/mailspring {};
+
+  mm = callPackage ../applications/networking/instant-messengers/mm { };
+
+  mm-common = callPackage ../development/libraries/mm-common { };
+
+  mpc-qt = libsForQt5.callPackage ../applications/video/mpc-qt { };
+
+  mps-youtube = callPackage ../applications/misc/mps-youtube { };
+
+  mplayer = callPackage ../applications/video/mplayer ({
+    libdvdnav = libdvdnav_4_2_1;
+  } // (config.mplayer or {}));
+
+  mpv-unwrapped = callPackage ../applications/video/mpv {
+    inherit lua;
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa CoreAudio MediaPlayer;
+  };
+
+  # Wraps without trigerring a rebuild
+  wrapMpv = callPackage ../applications/video/mpv/wrapper.nix { };
+  mpv = wrapMpv mpv-unwrapped {};
+
+  mpvScripts = recurseIntoAttrs {
+    autoload = callPackage ../applications/video/mpv/scripts/autoload.nix {};
+    convert = callPackage ../applications/video/mpv/scripts/convert.nix {};
+    mpris = callPackage ../applications/video/mpv/scripts/mpris.nix {};
+    mpv-playlistmanager = callPackage ../applications/video/mpv/scripts/mpv-playlistmanager.nix {};
+    mpvacious = callPackage ../applications/video/mpv/scripts/mpvacious.nix {};
+    simple-mpv-webui = callPackage ../applications/video/mpv/scripts/simple-mpv-webui.nix {};
+    sponsorblock = callPackage ../applications/video/mpv/scripts/sponsorblock.nix {};
+    thumbnail = callPackage ../applications/video/mpv/scripts/thumbnail.nix { };
+    youtube-quality = callPackage ../applications/video/mpv/scripts/youtube-quality.nix { };
+    cutter = callPackage ../applications/video/mpv/scripts/cutter.nix { };
+  };
+
+  mrpeach = callPackage ../applications/audio/pd-plugins/mrpeach { };
+
+  mtpaint = callPackage ../applications/graphics/mtpaint { };
+
+  mu-repo = python3Packages.callPackage ../applications/misc/mu-repo { };
+
+  mucommander = callPackage ../applications/misc/mucommander { };
+
+  multimarkdown = callPackage ../tools/typesetting/multimarkdown { };
+
+  multimon-ng = callPackage ../applications/radio/multimon-ng { };
+
+  murmur = (callPackages ../applications/networking/mumble {
+      avahi = avahi-compat;
+      pulseSupport = config.pulseaudio or false;
+      iceSupport = config.murmur.iceSupport or true;
+      grpcSupport = config.murmur.grpcSupport or true;
+    }).murmur;
+
+  mumble = (callPackages ../applications/networking/mumble {
+      avahi = avahi-compat;
+      jackSupport = config.mumble.jackSupport or false;
+      speechdSupport = config.mumble.speechdSupport or false;
+    }).mumble;
+
+  mumble_overlay = callPackage ../applications/networking/mumble/overlay.nix {
+    mumble_i686 = if stdenv.hostPlatform.system == "x86_64-linux"
+      then pkgsi686Linux.mumble
+      else null;
+  };
+
+  mup = callPackage ../applications/audio/mup {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  # TODO: we should probably merge these 2
+  musescore =
+    if stdenv.isDarwin then
+      callPackage ../applications/audio/musescore/darwin.nix { }
+    else
+      libsForQt5.callPackage ../applications/audio/musescore { };
+
+  mmh = callPackage ../applications/networking/mailreaders/mmh { };
+  mutt = callPackage ../applications/networking/mailreaders/mutt { };
+  mutt-with-sidebar = mutt.override {
+    withSidebar = true;
+  };
+  mutt-wizard = callPackage ../tools/misc/mutt-wizard { };
+
+  mwic = callPackage ../applications/misc/mwic {
+    pythonPackages = python3Packages;
+  };
+
+  n8n = callPackage ../applications/networking/n8n {};
+
+  neomutt = callPackage ../applications/networking/mailreaders/neomutt { };
+
+  natron = callPackage ../applications/video/natron { };
+
+  natural-docs = callPackage ../applications/misc/natural-docs { };
+
+  neocomp  = callPackage ../applications/window-managers/neocomp { };
+
+  nerd-font-patcher = callPackage ../applications/misc/nerd-font-patcher { };
+
+  newsflash = callPackage ../applications/networking/feedreaders/newsflash { };
+
+  nicotine-plus = callPackage ../applications/networking/soulseek/nicotine-plus { };
+
+  nice-dcv-client = callPackage ../applications/networking/remote/nice-dcv-client { };
+
+  nixos-shell = callPackage ../tools/virtualization/nixos-shell {};
+
+  noaa-apt = callPackage ../applications/radio/noaa-apt { };
+
+  node-problem-detector = callPackage ../applications/networking/cluster/node-problem-detector { };
+
+  ninjas2 = callPackage ../applications/audio/ninjas2 {};
+
+  nncp = callPackage ../tools/misc/nncp { };
+
+  notion = callPackage ../applications/window-managers/notion { };
+
+  nootka = qt5.callPackage ../applications/audio/nootka { };
+  nootka-unstable = qt5.callPackage ../applications/audio/nootka/unstable.nix { };
+
+  novnc = callPackage ../applications/networking/novnc { };
+
+  nwg-drawer = callPackage ../applications/misc/nwg-drawer { };
+
+  nwg-launchers = callPackage ../applications/misc/nwg-launchers { };
+
+  nwg-menu = callPackage ../applications/misc/nwg-menu { };
+
+  nwg-panel = callPackage ../applications/misc/nwg-panel { };
+
+  nwg-wrapper = callPackage ../applications/misc/nwg-wrapper { };
+
+  ocenaudio = callPackage ../applications/audio/ocenaudio { };
+
+  odo = callPackage ../applications/networking/cluster/odo { };
+
+  onlyoffice-bin = callPackage ../applications/office/onlyoffice-bin { };
+
+  open-policy-agent = callPackage ../development/tools/open-policy-agent { };
+
+  openshift = callPackage ../applications/networking/cluster/openshift { };
+
+  opsdroid = callPackage ../applications/networking/opsdroid { };
+
+  oroborus = callPackage ../applications/window-managers/oroborus {};
+
+  osm2pgsql = callPackage ../tools/misc/osm2pgsql { };
+
+  ostinato = libsForQt5.callPackage ../applications/networking/ostinato { };
+
+  p4 = callPackage ../applications/version-management/p4 { };
+  # Broken with Qt5.15 because qtwebkit is broken with it
+  p4v = libsForQt514.callPackage ../applications/version-management/p4v { };
+
+  partio = callPackage ../development/libraries/partio {};
+
+  pc-ble-driver = callPackage ../development/libraries/pc-ble-driver {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  pbis-open = callPackage ../tools/security/pbis { };
+
+  pcmanfm = callPackage ../applications/misc/pcmanfm { };
+
+  pcmanfm-qt = lxqt.pcmanfm-qt;
+
+  pcmanx-gtk2 = callPackage ../applications/misc/pcmanx-gtk2 { };
+
+  pdfmixtool = libsForQt5.callPackage ../applications/office/pdfmixtool { };
+
+  pig = callPackage ../applications/networking/cluster/pig { };
+
+  pijul = callPackage ../applications/version-management/pijul { };
+
+  pijuice = with python3Packages; toPythonApplication pijuice;
+
+  pinegrow = callPackage ../applications/editors/pinegrow { };
+
+  ping = callPackage ../applications/networking/ping { };
+
+  piper = callPackage ../os-specific/linux/piper { };
+
+  pipe-viewer = perlPackages.callPackage ../applications/video/pipe-viewer {};
+
+  plank = callPackage ../applications/misc/plank { };
+
+  playonlinux = callPackage ../applications/misc/playonlinux
+    { stdenv = stdenv_32bit; };
+
+  pleroma-bot = python3Packages.callPackage ../development/python-modules/pleroma-bot { };
+
+  polybar = callPackage ../applications/misc/polybar { };
+
+  polybarFull = callPackage ../applications/misc/polybar {
+    alsaSupport = true;
+    githubSupport = true;
+    mpdSupport = true;
+    pulseSupport  = true;
+    iwSupport = false;
+    nlSupport = true;
+    i3Support = true;
+    i3GapsSupport = false;
+  };
+
+  yambar = callPackage ../applications/misc/yambar { };
+
+  polyphone = libsForQt514.callPackage ../applications/audio/polyphone { };
+
+  portfolio = callPackage ../applications/office/portfolio {
+    jre = openjdk11;
+  };
+
+  prevo = callPackage ../applications/misc/prevo { };
+  prevo-data = callPackage ../applications/misc/prevo/data.nix { };
+  prevo-tools = callPackage ../applications/misc/prevo/tools.nix { };
+
+  psi-notify = callPackage ../applications/misc/psi-notify { };
+
+  ptex = callPackage ../development/libraries/ptex {};
+
+  pyright = nodePackages.pyright;
+
+  qbec = callPackage ../applications/networking/cluster/qbec { };
+
+  qemacs = callPackage ../applications/editors/qemacs { };
+
+  rqbit = callPackage ../applications/networking/p2p/rqbit {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rssguard = libsForQt5.callPackage ../applications/networking/feedreaders/rssguard { };
+
+  scudcloud = callPackage ../applications/networking/instant-messengers/scudcloud { };
+
+  shotcut = libsForQt5.callPackage ../applications/video/shotcut { };
+
+  shogun = callPackage ../applications/science/machine-learning/shogun {
+    opencv = opencv3;
+  };
+
+  smplayer = libsForQt5.callPackage ../applications/video/smplayer { };
+
+  smtube = libsForQt514.callPackage ../applications/video/smtube {};
+
+  softmaker-office = callPackage ../applications/office/softmaker/softmaker_office.nix {};
+
+  songrec = callPackage ../applications/audio/songrec {};
+
+  storrent = callPackage ../applications/networking/p2p/storrent { };
+
+  spacegun = callPackage ../applications/networking/cluster/spacegun {};
+
+  stride = callPackage ../applications/networking/instant-messengers/stride { };
+
+  sudolikeaboss = callPackage ../tools/security/sudolikeaboss { };
+
+  speedread = callPackage ../applications/misc/speedread { };
+
+  station = callPackage ../applications/networking/station { };
+
+  stochas = callPackage ../applications/audio/stochas { };
+
+  synapse = callPackage ../applications/misc/synapse { };
+
+  synapse-bt = callPackage ../applications/networking/p2p/synapse-bt {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Security;
+  };
+
+  synfigstudio = callPackage ../applications/graphics/synfigstudio {
+    mlt-qt5 = libsForQt514.mlt;
+  };
+
+  taxi = callPackage ../applications/networking/ftp/taxi { };
+
+  librep = callPackage ../development/libraries/librep { };
+
+  rep-gtk = callPackage ../development/libraries/rep-gtk { };
+
+  reproc = callPackage ../development/libraries/reproc { };
+
+  sawfish = callPackage ../applications/window-managers/sawfish { };
+
+  sc68 = callPackage ../applications/audio/sc68 { };
+
+  sidplayfp = callPackage ../applications/audio/sidplayfp { };
+
+  sndpeek = callPackage ../applications/audio/sndpeek { };
+
+  sxhkd = callPackage ../applications/window-managers/sxhkd { };
+
+  mpop = callPackage ../applications/networking/mpop {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  msmtp = callPackage ../applications/networking/msmtp {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  imapfilter = callPackage ../applications/networking/mailreaders/imapfilter.nix {
+    lua = lua5;
+  };
+
+  maxlib = callPackage ../applications/audio/pd-plugins/maxlib { };
+
+  maxscale = callPackage ../tools/networking/maxscale {
+    stdenv = gcc6Stdenv;
+  };
+
+  pdfdiff = callPackage ../applications/misc/pdfdiff { };
+
+  pdfsam-basic = callPackage ../applications/misc/pdfsam-basic { };
+
+  mupdf = callPackage ../applications/misc/mupdf { };
+  mupdf_1_17 = callPackage ../applications/misc/mupdf/1.17.nix { };
+
+  muso = callPackage ../applications/audio/muso {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  mystem = callPackage ../applications/misc/mystem { };
+
+  diffpdf = libsForQt5.callPackage ../applications/misc/diffpdf { };
+
+  diff-pdf = callPackage ../applications/misc/diff-pdf { wxGTK = wxGTK31; };
+
+  mlocate = callPackage ../tools/misc/mlocate { };
+
+  plocate = callPackage ../tools/misc/plocate { };
+
+  mypaint = callPackage ../applications/graphics/mypaint { };
+
+  mypaint-brushes1 = callPackage ../development/libraries/mypaint-brushes/1.0.nix { };
+
+  mypaint-brushes = callPackage ../development/libraries/mypaint-brushes { };
+
+  mythtv = libsForQt514.callPackage ../applications/video/mythtv { };
+
+  micro = callPackage ../applications/editors/micro { };
+
+  mle = callPackage ../applications/editors/mle { };
+
+  nano = callPackage ../applications/editors/nano { };
+
+  nanoblogger = callPackage ../applications/misc/nanoblogger { };
+
+  nanorc = callPackage ../applications/editors/nano/nanorc { };
+
+  navipowm = callPackage ../applications/misc/navipowm { };
+
+  netbeans = callPackage ../applications/editors/netbeans {
+    jdk = jdk17;
+  };
+
+  netcoredbg = callPackage ../development/tools/misc/netcoredbg { };
+
+  ncdu = callPackage ../tools/misc/ncdu { };
+
+  ncdc = callPackage ../applications/networking/p2p/ncdc { };
+
+  ncspot = callPackage ../applications/audio/ncspot {
+    withALSA = stdenv.isLinux;
+    withPulseAudio = config.pulseaudio or stdenv.isLinux;
+    withPortAudio = stdenv.isDarwin;
+    withMPRIS = stdenv.isLinux;
+  };
+
+  ncview = callPackage ../tools/X11/ncview { } ;
+
+  ne = callPackage ../applications/editors/ne { };
+
+  nedit = callPackage ../applications/editors/nedit { };
+
+  ngt = callPackage ../development/libraries/ngt { };
+
+  nheko = libsForQt5.callPackage ../applications/networking/instant-messengers/nheko { };
+
+  nomacs = libsForQt5.callPackage ../applications/graphics/nomacs { };
+
+  notepadqq = libsForQt514.callPackage ../applications/editors/notepadqq { };
+
+  notbit = callPackage ../applications/networking/mailreaders/notbit { };
+
+  notmuch = callPackage ../applications/networking/mailreaders/notmuch {
+    gmime = gmime3;
+    pythonPackages = python3Packages;
+  };
+
+  notejot = callPackage ../applications/misc/notejot { };
+
+  notmuch-mutt = callPackage ../applications/networking/mailreaders/notmuch/mutt.nix { };
+
+  muchsync = callPackage ../applications/networking/mailreaders/notmuch/muchsync.nix { };
+
+  nufraw = callPackage ../applications/graphics/nufraw { };
+
+  nufraw-thumbnailer = callPackage ../applications/graphics/nufraw {
+    addThumbnailer = true;
+  };
+
+  notmuch-addrlookup = callPackage ../applications/networking/mailreaders/notmuch-addrlookup { };
+
+  nova-filters =  callPackage ../applications/audio/nova-filters {
+    boost = boost172;
+  };
+
+  nvi = callPackage ../applications/editors/nvi { };
+
+  nvpy = callPackage ../applications/editors/nvpy { };
+
+  obconf = callPackage ../tools/X11/obconf { };
+
+  oberon-risc-emu = callPackage ../applications/emulators/oberon-risc-emu { };
+
+  gnome-obfuscate = callPackage ../applications/graphics/gnome-obfuscate { };
+
+  obs-studio = libsForQt5.callPackage ../applications/video/obs-studio {
+    ffmpeg_4 = ffmpeg-full;
+  };
+  obs-studio-plugins = recurseIntoAttrs (callPackage ../applications/video/obs-studio/plugins {});
+  wrapOBS = callPackage ../applications/video/obs-studio/wrapper.nix {};
+
+  obsidian = callPackage ../applications/misc/obsidian { };
+
+  octoprint = callPackage ../applications/misc/octoprint { };
+
+  ocr-a = callPackage ../data/fonts/ocr-a {};
+
+  ocrad = callPackage ../applications/graphics/ocrad { };
+
+  offrss = callPackage ../applications/networking/offrss { };
+
+  ogmtools = callPackage ../applications/video/ogmtools { };
+
+  omegat = callPackage ../applications/misc/omegat.nix { };
+
+  omxplayer = callPackage ../applications/video/omxplayer { };
+
+  inherit (python3Packages.callPackage ../applications/networking/onionshare { }) onionshare onionshare-gui;
+
+  openambit = qt5.callPackage ../applications/misc/openambit { };
+
+  openbox = callPackage ../applications/window-managers/openbox { };
+
+  openbox-menu = callPackage ../applications/misc/openbox-menu {
+    stdenv = gccStdenv;
+  };
+
+  openbrf = libsForQt5.callPackage ../applications/misc/openbrf { };
+
+  opencpn = callPackage ../applications/misc/opencpn { };
+
+  openfx = callPackage ../development/libraries/openfx {};
+
+  openimageio = callPackage ../applications/graphics/openimageio {
+    boost = boost175;
+  };
+
+  openimageio2 = callPackage ../applications/graphics/openimageio/2.x.nix { };
+
+  openjump = callPackage ../applications/misc/openjump { };
+
+  openorienteering-mapper = libsForQt5.callPackage ../applications/gis/openorienteering-mapper { };
+
+  openscad = libsForQt5.callPackage ../applications/graphics/openscad {};
+
+  opentimestamps-client = python3Packages.callPackage ../tools/misc/opentimestamps-client {};
+
+  opentoonz = let
+    opentoonz-libtiff = callPackage ../applications/graphics/opentoonz/libtiff.nix { };
+  in qt5.callPackage ../applications/graphics/opentoonz {
+    libtiff = opentoonz-libtiff;
+    opencv = opencv.override { libtiff = opentoonz-libtiff; };
+  };
+
+  opentabletdriver = callPackage ../tools/X11/opentabletdriver { };
+
+  opentx = libsForQt5.callPackage ../applications/misc/opentx { };
+
+  opera = callPackage ../applications/networking/browsers/opera {};
+
+  orca = python3Packages.callPackage ../applications/misc/orca {
+    inherit pkg-config;
+  };
+
+  orca-c = callPackage ../applications/audio/orca-c {};
+
+  osm2xmap = callPackage ../applications/misc/osm2xmap {
+    libyamlcpp = libyamlcpp_0_3;
+  };
+
+  osmctools = callPackage ../applications/misc/osmctools { };
+
+  osmium-tool = callPackage ../applications/misc/osmium-tool { };
+
+  owamp = callPackage ../applications/networking/owamp { };
+
+  vieb = callPackage ../applications/networking/browsers/vieb { };
+
+  vivaldi = callPackage ../applications/networking/browsers/vivaldi {};
+
+  vivaldi-ffmpeg-codecs = callPackage ../applications/networking/browsers/vivaldi/ffmpeg-codecs.nix {};
+
+  vivaldi-widevine = callPackage ../applications/networking/browsers/vivaldi/widevine.nix { };
+
+  libopenmpt = callPackage ../applications/audio/libopenmpt { };
+
+  openrazer-daemon = with python3Packages; toPythonApplication openrazer-daemon;
+
+  opusfile = callPackage ../applications/audio/opusfile { };
+
+  opustags = callPackage ../applications/audio/opustags { };
+
+  opusTools = callPackage ../applications/audio/opus-tools { };
+
+  orpie = callPackage ../applications/misc/orpie {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_12;
+  };
+
+  osmo = callPackage ../applications/office/osmo { };
+
+  osmscout-server = libsForQt5.callPackage ../applications/misc/osmscout-server { };
+
+  palemoon = callPackage ../applications/networking/browsers/palemoon { };
+
+  webbrowser = callPackage ../applications/networking/browsers/webbrowser {};
+
+  pamix = callPackage ../applications/audio/pamix { };
+
+  pamixer = callPackage ../applications/audio/pamixer { };
+
+  myxer = callPackage ../applications/audio/myxer { };
+
+  ncpamixer = callPackage ../applications/audio/ncpamixer { };
+
+  pan = callPackage ../applications/networking/newsreaders/pan { };
+
+  panotools = callPackage ../applications/graphics/panotools { };
+
+  paprefs = callPackage ../applications/audio/paprefs { };
+
+  pantalaimon = python3Packages.callPackage ../applications/networking/instant-messengers/pantalaimon { };
+
+  pantalaimon-headless = python3Packages.callPackage ../applications/networking/instant-messengers/pantalaimon {
+    enableDbusUi = false;
+  };
+
+  pavucontrol = callPackage ../applications/audio/pavucontrol { };
+
+  paraview = libsForQt5.callPackage ../applications/graphics/paraview { };
+
+  parlatype = callPackage ../applications/audio/parlatype { };
+
+  packet = callPackage ../development/tools/packet { };
+
+  packet-sd = callPackage ../development/tools/packet-sd { };
+
+  metal-cli = callPackage ../development/tools/metal-cli { };
+
+  pb_cli = callPackage ../tools/misc/pb_cli {};
+
+  capture = callPackage ../tools/misc/capture {};
+
+  patchmatrix = callPackage ../applications/audio/patchmatrix { };
+
+  pbrt = callPackage ../applications/graphics/pbrt { };
+
+  pcloud = callPackage ../applications/networking/pcloud { };
+
+  pcsxr = callPackage ../applications/emulators/pcsxr { };
+
+  pcsx2 = callPackage ../applications/emulators/pcsx2 {
+    wxGTK = wxGTK30-gtk3;
+  };
+
+  jpsxdec = callPackage ../tools/games/jpsxdec {
+    jdk = openjdk8;
+  };
+
+  pdfslicer = callPackage ../applications/misc/pdfslicer { };
+
+  pekwm = callPackage ../applications/window-managers/pekwm {
+    awk = gawk;
+    grep = gnugrep;
+    sed = gnused;
+  };
+
+  pencil = callPackage ../applications/graphics/pencil {
+  };
+
+  perseus = callPackage ../applications/science/math/perseus {};
+
+  petrifoo = callPackage ../applications/audio/petrifoo {
+    inherit (gnome2) libgnomecanvas;
+  };
+
+  pdfchain = callPackage ../tools/typesetting/pdfchain { };
+
+  pdfcpu = callPackage ../applications/graphics/pdfcpu { };
+  pdftk = callPackage ../tools/typesetting/pdftk {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  pdftk-legacy = lowPrio (callPackage ../tools/typesetting/pdftk/legacy.nix { });
+  pdfgrep  = callPackage ../tools/typesetting/pdfgrep { };
+
+  pdfpc = callPackage ../applications/misc/pdfpc {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-libav;
+  };
+
+  peach = callPackage ../servers/peach { };
+
+  peaclock = callPackage ../applications/misc/peaclock {
+    stdenv = gccStdenv;
+  };
+
+  peek = callPackage ../applications/video/peek { };
+
+  peertube = callPackage ../servers/peertube {
+    nodejs = nodejs-16_x;
+  };
+
+  pflask = callPackage ../os-specific/linux/pflask {};
+
+  pfsshell = callPackage ../tools/misc/pfsshell { };
+
+  photoqt = libsForQt5.callPackage ../applications/graphics/photoqt { };
+
+  photoflare = libsForQt5.callPackage ../applications/graphics/photoflare { };
+
+  photoflow = callPackage ../applications/graphics/photoflow { };
+
+  phototonic = libsForQt5.callPackage ../applications/graphics/phototonic { };
+
+  phrasendrescher = callPackage ../tools/security/phrasendrescher { };
+
+  phrase-cli = callPackage ../tools/misc/phrase-cli { };
+
+  phraseapp-client = callPackage ../tools/misc/phraseapp-client { };
+
+  phwmon = callPackage ../applications/misc/phwmon { };
+
+  pianobar = callPackage ../applications/audio/pianobar { };
+
+  pianobooster = qt5.callPackage ../applications/audio/pianobooster { };
+
+  pianoteq = callPackage ../applications/audio/pianoteq { };
+
+  picard = callPackage ../applications/audio/picard { };
+
+  picocom = callPackage ../tools/misc/picocom {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  picoloop = callPackage ../applications/audio/picoloop { };
+
+  pidgin = callPackage ../applications/networking/instant-messengers/pidgin {
+    withOpenssl = config.pidgin.openssl or true;
+    withGnutls = config.pidgin.gnutls or false;
+    plugins = [];
+  };
+
+  pidgin-indicator = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-indicator { };
+
+  pidgin-latex = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-latex {
+    texLive = texlive.combined.scheme-basic;
+  };
+
+  pidgin-msn-pecan = callPackage ../applications/networking/instant-messengers/pidgin-plugins/msn-pecan { };
+
+  pidgin-mra = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-mra { };
+
+  pidgin-skypeweb = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb { };
+
+  pidgin-carbons = callPackage ../applications/networking/instant-messengers/pidgin-plugins/carbons { };
+
+  pidgin-xmpp-receipts = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts { };
+
+  pidgin-otr = callPackage ../applications/networking/instant-messengers/pidgin-plugins/otr { };
+
+  pidgin-osd = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-osd { };
+
+  pidgin-sipe = callPackage ../applications/networking/instant-messengers/pidgin-plugins/sipe { };
+
+  pidgin-window-merge = callPackage ../applications/networking/instant-messengers/pidgin-plugins/window-merge { };
+
+  pika-backup = callPackage ../applications/backup/pika-backup { };
+
+  pur = callPackage ../development/tools/pur { };
+
+  purple-discord = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-discord { };
+
+  purple-googlechat = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-googlechat { };
+
+  purple-hangouts = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-hangouts { };
+
+  purple-lurch = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-lurch { };
+
+  purple-matrix = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-matrix { };
+
+  purple-mm-sms = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-mm-sms { };
+
+  purple-plugin-pack = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack { };
+
+  purple-slack = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-slack { };
+
+  purple-vk-plugin = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin { };
+
+  purple-xmpp-http-upload = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload { };
+
+  telegram-purple = callPackage ../applications/networking/instant-messengers/pidgin-plugins/telegram-purple { };
+
+  toxprpl = callPackage ../applications/networking/instant-messengers/pidgin-plugins/tox-prpl {
+    libtoxcore = libtoxcore-new;
+  };
+
+  pidgin-opensteamworks = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks { };
+
+  purple-facebook = callPackage ../applications/networking/instant-messengers/pidgin-plugins/purple-facebook { };
+
+  purpur = callPackage ../games/purpur { };
+
+  pikopixel = callPackage ../applications/graphics/pikopixel { };
+
+  pithos = callPackage ../applications/audio/pithos {
+    pythonPackages = python3Packages;
+  };
+
+  pinfo = callPackage ../applications/misc/pinfo { };
+
+  pinpoint = callPackage ../applications/office/pinpoint { };
+
+  pinta = callPackage ../applications/graphics/pinta { };
+
+  pistol = callPackage ../tools/misc/pistol { };
+
+  piston-cli = callPackage ../tools/misc/piston-cli { python3Packages = python39Packages; };
+
+  plater = libsForQt5.callPackage ../applications/misc/plater { };
+
+  plexamp = callPackage ../applications/audio/plexamp { };
+
+  plex-media-player = libsForQt5.callPackage ../applications/video/plex-media-player { };
+
+  plex-mpv-shim = python3Packages.callPackage ../applications/video/plex-mpv-shim { };
+
+  plover = recurseIntoAttrs (libsForQt5.callPackage ../applications/misc/plover { });
+
+  plugin-torture = callPackage ../applications/audio/plugin-torture { };
+
+  poke = callPackage ../applications/editors/poke { };
+
+  polar-bookshelf = callPackage ../applications/misc/polar-bookshelf { };
+
+  poezio = python3Packages.poezio;
+
+  pommed_light = callPackage ../os-specific/linux/pommed-light {};
+
+  polylith = callPackage ../development/tools/misc/polylith { };
+
+  polymake = callPackage ../applications/science/math/polymake { };
+
+  pomotroid = callPackage ../applications/misc/pomotroid {
+    electron = electron_9;
+  };
+
+  pond = callPackage ../applications/networking/instant-messengers/pond { };
+
+  ponymix = callPackage ../applications/audio/ponymix { };
+
+  portfolio-filemanager = callPackage ../applications/misc/portfolio-filemanager { };
+
+  pothos = libsForQt5.callPackage ../applications/radio/pothos { };
+
+  potrace = callPackage ../applications/graphics/potrace {};
+
+  posterazor = callPackage ../applications/misc/posterazor { };
+
+  pqiv = callPackage ../applications/graphics/pqiv { };
+
+  qiv = callPackage ../applications/graphics/qiv { };
+
+  premid = callPackage ../applications/misc/premid { };
+
+  processing = callPackage ../applications/graphics/processing {
+    jdk = oraclejdk8;
+  };
+
+  # perhaps there are better apps for this task? It's how I had configured my preivous system.
+  # And I don't want to rewrite all rules
+  procmail = callPackage ../applications/misc/procmail { };
+
+  profanity = callPackage ../applications/networking/instant-messengers/profanity ({
+    gtk = gtk3;
+    python = python3;
+  } // (config.profanity or {}));
+
+  properties-cpp = callPackage ../development/libraries/properties-cpp { };
+
+  protonmail-bridge = callPackage ../applications/networking/protonmail-bridge { };
+
+  protonvpn-cli = callPackage ../applications/networking/protonvpn-cli { };
+
+  protonvpn-gui = callPackage ../applications/networking/protonvpn-gui { };
+
+  ps2client = callPackage ../applications/networking/ps2client { };
+
+  psi = libsForQt5.callPackage ../applications/networking/instant-messengers/psi { };
+
+  psi-plus = libsForQt5.callPackage ../applications/networking/instant-messengers/psi-plus { };
+
+  psol = callPackage ../development/libraries/psol { };
+
+  pstree = callPackage ../applications/misc/pstree { };
+
+  pt2-clone = callPackage ../applications/audio/pt2-clone { };
+
+  ptask = callPackage ../applications/misc/ptask { };
+
+  pulseaudio-ctl = callPackage ../applications/audio/pulseaudio-ctl { };
+
+  pulseaudio-dlna = callPackage ../applications/audio/pulseaudio-dlna { };
+
+  pulseview = libsForQt514.callPackage ../applications/science/electronics/pulseview { };
+
+  puredata = callPackage ../applications/audio/puredata { };
+  puredata-with-plugins = plugins: callPackage ../applications/audio/puredata/wrapper.nix { inherit plugins; };
+
+  puremapping = callPackage ../applications/audio/pd-plugins/puremapping { };
+
+  pure-maps = libsForQt5.callPackage ../applications/misc/pure-maps { };
+
+  pwdsafety = callPackage ../tools/security/pwdsafety { };
+
+  qbittorrent = libsForQt5.callPackage ../applications/networking/p2p/qbittorrent { };
+  qbittorrent-nox = qbittorrent.override {
+    guiSupport = false;
+  };
+
+  qcad = libsForQt5.callPackage ../applications/misc/qcad { };
+
+  qcomicbook = libsForQt5.callPackage ../applications/graphics/qcomicbook { };
+
+  eiskaltdcpp = libsForQt5.callPackage ../applications/networking/p2p/eiskaltdcpp { };
+
+  qdirstat = libsForQt5.callPackage ../applications/misc/qdirstat {};
+
+  qemu = callPackage ../applications/virtualization/qemu {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Cocoa Hypervisor;
+    inherit (darwin.stubs) rez setfile;
+    inherit (darwin) sigtool;
+  };
+
+  qemu-utils = callPackage ../applications/virtualization/qemu/utils.nix {};
+
+  wrapQemuBinfmtP = callPackage ../applications/virtualization/qemu/binfmt-p-wrapper.nix { };
+
+  qgis-ltr = callPackage ../applications/gis/qgis/ltr.nix { };
+
+  qgis = callPackage ../applications/gis/qgis { };
+
+  qgroundcontrol = libsForQt5.callPackage ../applications/science/robotics/qgroundcontrol { };
+
+  qjackctl = libsForQt5.callPackage ../applications/audio/qjackctl { };
+
+  qimgv = libsForQt5.callPackage ../applications/graphics/qimgv { };
+
+  qlandkartegt = libsForQt514.callPackage ../applications/misc/qlandkartegt {
+    gdal = gdal.override {
+      libgeotiff = libgeotiff.override { proj = proj_7; };
+      libspatialite = libspatialite.override { proj = proj_7; };
+      proj = proj_7;
+    };
+    proj = proj_7;
+  };
+
+  garmindev = callPackage ../applications/misc/qlandkartegt/garmindev.nix {};
+
+  qmapshack = libsForQt5.callPackage ../applications/gis/qmapshack { };
+
+  qmediathekview = libsForQt5.callPackage ../applications/video/qmediathekview { };
+
+  qmplay2 = libsForQt5.callPackage ../applications/video/qmplay2 { };
+
+  qmetro = callPackage ../applications/misc/qmetro { };
+
+  qmidiarp = callPackage ../applications/audio/qmidiarp {};
+
+  qmidinet = libsForQt5.callPackage ../applications/audio/qmidinet { };
+
+  qmidiroute = callPackage ../applications/audio/qmidiroute { };
+
+  qmmp = libsForQt5.callPackage ../applications/audio/qmmp { };
+
+  qnotero = libsForQt5.callPackage ../applications/office/qnotero { };
+
+  qpwgraph = libsForQt5.callPackage ../applications/audio/qpwgraph { };
+
+  qrcode = callPackage ../tools/graphics/qrcode {};
+
+  qsampler = libsForQt5.callPackage ../applications/audio/qsampler { };
+
+  qscreenshot = callPackage ../applications/graphics/qscreenshot {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+    qt = qt4;
+  };
+
+  qsstv = qt5.callPackage ../applications/radio/qsstv { };
+
+  qsyncthingtray = libsForQt5.callPackage ../applications/misc/qsyncthingtray { };
+
+  qstopmotion = libsForQt5.callPackage ../applications/video/qstopmotion {
+    guvcview = guvcview.override {
+      useQt = true;
+      useGtk = false;
+    };
+  };
+
+  qsudo = libsForQt5.callPackage ../applications/misc/qsudo { };
+
+  qsynth = libsForQt5.callPackage ../applications/audio/qsynth { };
+
+  qtbitcointrader = libsForQt5.callPackage ../applications/misc/qtbitcointrader { };
+
+  qtchan = libsForQt5.callPackage ../applications/networking/browsers/qtchan { };
+
+  qtemu = libsForQt5.callPackage ../applications/virtualization/qtemu { };
+
+  qtox = libsForQt5.callPackage ../applications/networking/instant-messengers/qtox {
+    inherit (darwin.apple_sdk.frameworks) AVFoundation;
+  };
+
+  qtpass = libsForQt5.callPackage ../applications/misc/qtpass { };
+
+  qtractor = libsForQt5.callPackage ../applications/audio/qtractor { };
+
+  qtscrobbler = callPackage ../applications/audio/qtscrobbler { };
+
+  quantomatic = callPackage ../applications/science/physics/quantomatic { };
+
+  quassel = libsForQt5.callPackage ../applications/networking/irc/quassel { };
+
+  quasselClient = quassel.override {
+    monolithic = false;
+    client = true;
+    tag = "-client-kf5";
+  };
+
+  quasselDaemon = quassel.override {
+    monolithic = false;
+    enableDaemon = true;
+    withKDE = false;
+    tag = "-daemon-qt5";
+  };
+
+  quill-qr = callPackage ../tools/security/quill-qr { };
+
+  quirc = callPackage ../tools/graphics/quirc {};
+
+  quisk = python38Packages.callPackage ../applications/radio/quisk { };
+
+  quiterss = libsForQt514.callPackage ../applications/networking/newsreaders/quiterss {};
+
+  falkon = libsForQt5.callPackage ../applications/networking/browsers/falkon { };
+
+  quodlibet = callPackage ../applications/audio/quodlibet {
+    keybinder3 = null;
+    libmodplug = null;
+    kakasi = null;
+    libappindicator-gtk3 = null;
+  };
+
+  quodlibet-without-gst-plugins = quodlibet.override {
+    withGstPlugins = false;
+    tag = "-without-gst-plugins";
+  };
+
+  quodlibet-xine = quodlibet.override { xineBackend = true; tag = "-xine"; };
+
+  quodlibet-full = quodlibet.override {
+    inherit gtksourceview webkitgtk;
+    withDbusPython = true;
+    withPyInotify = true;
+    withMusicBrainzNgs = true;
+    withPahoMqtt = true;
+    keybinder3 = keybinder3;
+    libmodplug = libmodplug;
+    kakasi = kakasi;
+    libappindicator-gtk3 = libappindicator-gtk3;
+    tag = "-full";
+  };
+
+  quodlibet-xine-full = quodlibet-full.override { xineBackend = true; tag = "-xine-full"; };
+
+  qutebrowser = libsForQt5.callPackage ../applications/networking/browsers/qutebrowser { };
+
+  qxw = callPackage ../applications/editors/qxw {};
+
+  rabbitvcs = callPackage ../applications/version-management/rabbitvcs {};
+
+  rakarrack = callPackage ../applications/audio/rakarrack {
+    fltk = fltk13;
+  };
+
+  renoise = callPackage ../applications/audio/renoise {};
+
+  redux = callPackage ../applications/audio/redux { };
+
+  roomeqwizard = callPackage ../applications/audio/roomeqwizard { };
+
+  radiotray-ng = callPackage ../applications/audio/radiotray-ng {
+    wxGTK = wxGTK30;
+  };
+
+  railcar = callPackage ../applications/virtualization/railcar {};
+
+  raiseorlaunch = callPackage ../applications/misc/raiseorlaunch {};
+
+  rapcad = libsForQt514.callPackage ../applications/graphics/rapcad { boost = boost159; };
+
+  rapid-photo-downloader = libsForQt5.callPackage ../applications/graphics/rapid-photo-downloader { };
+
+  rapidsvn = callPackage ../applications/version-management/rapidsvn { };
+
+  ratmen = callPackage ../tools/X11/ratmen {};
+
+  ratox = callPackage ../applications/networking/instant-messengers/ratox { };
+
+  ratpoison = callPackage ../applications/window-managers/ratpoison { };
+
+  rawtherapee = callPackage ../applications/graphics/rawtherapee {
+    fftw = fftwSinglePrec;
+  };
+
+  rclone = callPackage ../applications/networking/sync/rclone { };
+
+  rclone-browser = libsForQt5.callPackage ../applications/networking/sync/rclone/browser.nix { };
+
+  rcs = callPackage ../applications/version-management/rcs { };
+
+  rdesktop = callPackage ../applications/networking/remote/rdesktop { };
+
+  rdedup = callPackage ../tools/backup/rdedup {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rdup = callPackage ../tools/backup/rdup { };
+
+  reaper = callPackage ../applications/audio/reaper { };
+
+  recapp = callPackage ../applications/video/recapp { };
+
+  recode = callPackage ../tools/text/recode { };
+
+  reddsaver = callPackage ../applications/misc/reddsaver {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rednotebook = python3Packages.callPackage ../applications/editors/rednotebook { };
+
+  remotebox = callPackage ../applications/virtualization/remotebox { };
+
+  restique = libsForQt5.callPackage ../applications/backup/restique { };
+
+  retroshare = libsForQt5.callPackage ../applications/networking/p2p/retroshare { };
+
+  rgp = libsForQt5.callPackage ../development/tools/rgp { };
+
+  ricochet = libsForQt5.callPackage ../applications/networking/instant-messengers/ricochet { };
+
+  ries = callPackage ../applications/science/math/ries { };
+
+  ripcord = if stdenv.isLinux then
+    qt5.callPackage ../applications/networking/instant-messengers/ripcord { }
+  else
+    callPackage ../applications/networking/instant-messengers/ripcord/darwin.nix { };
+
+  ripser = callPackage ../applications/science/math/ripser { };
+
+  rkdeveloptool = callPackage ../misc/rkdeveloptool { };
+
+  rocketchat-desktop = callPackage ../applications/networking/instant-messengers/rocketchat-desktop { };
+
+  rofi-unwrapped = callPackage ../applications/misc/rofi { };
+  rofi = callPackage ../applications/misc/rofi/wrapper.nix { };
+  rofi-wayland-unwrapped = callPackage ../applications/misc/rofi/wayland.nix { };
+  rofi-wayland = callPackage ../applications/misc/rofi/wrapper.nix {
+    rofi-unwrapped = rofi-wayland-unwrapped;
+  };
+
+  rofi-pass = callPackage ../tools/security/pass/rofi-pass.nix { };
+
+  rofi-menugen = callPackage ../applications/misc/rofi-menugen { };
+
+  rofi-systemd = callPackage ../tools/system/rofi-systemd { };
+
+  rofimoji = callPackage ../applications/misc/rofimoji {
+    inherit (python3Packages) buildPythonApplication configargparse;
+  };
+
+  rootlesskit = callPackage ../tools/virtualization/rootlesskit {};
+
+  rpcs3 = libsForQt5.callPackage ../applications/emulators/rpcs3 { };
+
+  rsclock = callPackage ../applications/misc/rsclock { };
+
+  rstudio = libsForQt5.callPackage ../applications/editors/rstudio {
+    jdk = jdk8;
+  };
+
+  rstudio-server = rstudio.override { server = true; };
+
+  rsync = callPackage ../applications/networking/sync/rsync (config.rsync or {});
+  rrsync = callPackage ../applications/networking/sync/rsync/rrsync.nix {};
+
+  rtl_433 = callPackage ../applications/radio/rtl_433 { };
+
+  rtl-ais = callPackage ../applications/radio/rtl-ais { };
+
+  # librtlsdr is a friendly fork with additional features
+  rtl-sdr = callPackage ../applications/radio/rtl-sdr { };
+  librtlsdr = callPackage ../development/libraries/librtlsdr { };
+
+  rubyripper = callPackage ../applications/audio/rubyripper {};
+
+  rucredstash = callPackage ../tools/security/rucredstash {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  runc = callPackage ../applications/virtualization/runc {};
+
+  rymcast = callPackage ../applications/audio/rymcast {
+    inherit (gnome) zenity;
+  };
+
+  uade123 = callPackage ../applications/audio/uade123 {};
+
+  udevil = callPackage ../applications/misc/udevil {};
+
+  udiskie = python3.pkgs.callPackage ../applications/misc/udiskie { };
+
+  sacc = callPackage ../applications/networking/gopher/sacc { };
+
+  sameboy = callPackage ../applications/emulators/sameboy { };
+
+  sayonara = libsForQt514.callPackage ../applications/audio/sayonara { };
+
+  sbagen = callPackage ../applications/misc/sbagen { };
+
+  scantailor = callPackage ../applications/graphics/scantailor { };
+
+  scantailor-advanced = libsForQt514.callPackage ../applications/graphics/scantailor/advanced.nix { };
+
+  sc-im = callPackage ../applications/misc/sc-im { };
+
+  scite = callPackage ../applications/editors/scite { };
+
+  scli = callPackage ../applications/misc/scli { };
+
+  scribus = callPackage ../applications/office/scribus {
+    inherit (gnome2) libart_lgpl;
+  };
+
+  scribusUnstable = libsForQt5.callPackage ../applications/office/scribus/unstable.nix { };
+
+  seafile-client = libsForQt5.callPackage ../applications/networking/seafile-client { };
+
+  seahub = callPackage ../applications/networking/seahub { };
+
+  seatd = callPackage ../applications/misc/seatd { };
+
+  secretscanner = callPackage ../tools/security/secretscanner { };
+
+  semiphemeral = callPackage ../tools/misc/semiphemeral { };
+
+  sent = callPackage ../applications/misc/sent { };
+
+  seq24 = callPackage ../applications/audio/seq24 { };
+
+  seq66 = qt5.callPackage ../applications/audio/seq66 { };
+
+  setbfree = callPackage ../applications/audio/setbfree { };
+
+  sfizz = callPackage ../applications/audio/sfizz { };
+
+  sfxr = callPackage ../applications/audio/sfxr { };
+
+  sfxr-qt = libsForQt5.callPackage ../applications/audio/sfxr-qt { };
+
+  shadowfox = callPackage ../tools/networking/shadowfox { };
+
+  shfmt = callPackage ../tools/text/shfmt { };
+
+  shortwave = callPackage ../applications/audio/shortwave { };
+
+  shotgun = callPackage ../tools/graphics/shotgun {};
+
+  shutter = callPackage ../applications/graphics/shutter { };
+
+  sic-image-cli = callPackage ../tools/graphics/sic-image-cli { };
+
+  simple-scan = gnome.simple-scan;
+
+  siproxd = callPackage ../applications/networking/siproxd { };
+
+  sish = callPackage ../tools/networking/sish { };
+
+  skypeforlinux = callPackage ../applications/networking/instant-messengers/skypeforlinux { };
+
+  SkypeExport = callPackage ../applications/networking/instant-messengers/SkypeExport { };
+
+  slmenu = callPackage ../applications/misc/slmenu {};
+
+  slop = callPackage ../tools/misc/slop {};
+
+  slowhttptest = callPackage ../tools/security/slowhttptest { };
+
+  slrn = callPackage ../applications/networking/newsreaders/slrn { };
+
+  sniproxy = callPackage ../applications/networking/sniproxy { };
+
+  snixembed = callPackage ../applications/misc/snixembed { };
+
+  sooperlooper = callPackage ../applications/audio/sooperlooper { };
+
+  sops = callPackage ../tools/security/sops { };
+
+  sorcer = callPackage ../applications/audio/sorcer { };
+
+  sound-juicer = callPackage ../applications/audio/sound-juicer { };
+
+  soundtracker = callPackage ../applications/audio/soundtracker { };
+
+  spice-vdagent = callPackage ../applications/virtualization/spice-vdagent { };
+
+  spike = callPackage ../applications/virtualization/spike { };
+
+  tensorman = callPackage ../tools/misc/tensorman { };
+
+  spideroak = callPackage ../applications/networking/spideroak { };
+
+  split2flac = callPackage ../applications/audio/split2flac {
+    inherit (python3.pkgs) mutagen;
+  };
+
+  spotify-qt = libsForQt5.callPackage ../applications/audio/spotify-qt { };
+
+  spotify-tray = callPackage ../applications/misc/spotify-tray { };
+
+  spotify-tui = callPackage ../applications/audio/spotify-tui {
+    inherit (darwin.apple_sdk.frameworks) AppKit Security;
+  };
+
+  sptlrx = callPackage ../applications/audio/sptlrx { };
+
+  squishyball = callPackage ../applications/audio/squishyball {
+    ncurses = ncurses5;
+  };
+
+  styx = callPackage ../applications/misc/styx { };
+
+  sway-launcher-desktop = callPackage ../applications/misc/sway-launcher-desktop { };
+
+  tecoc = callPackage ../applications/editors/tecoc { };
+
+  viber = callPackage ../applications/networking/instant-messengers/viber { };
+
+  wavebox = callPackage ../applications/networking/instant-messengers/wavebox { };
+
+  sonic-pi = libsForQt5.callPackage ../applications/audio/sonic-pi { };
+
+  stag = callPackage ../applications/misc/stag {
+    curses = ncurses;
+  };
+
+  stella = callPackage ../applications/emulators/stella { };
+
+  linuxstopmotion = libsForQt5.callPackage ../applications/video/linuxstopmotion { };
+
+  sweethome3d = recurseIntoAttrs (
+    (callPackage ../applications/misc/sweethome3d { }) //
+    (callPackage ../applications/misc/sweethome3d/editors.nix {
+      sweethome3dApp = sweethome3d.application;
+    })
+  );
+
+  swingsane = callPackage ../applications/graphics/swingsane { };
+
+  sxiv = callPackage ../applications/graphics/sxiv { };
+
+  nsxiv = callPackage ../applications/graphics/nsxiv { };
+
+  resilio-sync = callPackage ../applications/networking/resilio-sync { };
+
+  dropbox = callPackage ../applications/networking/dropbox { };
+
+  dropbox-cli = callPackage ../applications/networking/dropbox/cli.nix { };
+
+  synology-drive-client = callPackage ../applications/networking/synology-drive-client { };
+
+  maestral = with python3Packages; toPythonApplication maestral;
+
+  maestral-gui = libsForQt5.callPackage ../applications/networking/maestral-qt { };
+
+  insync = callPackage ../applications/networking/insync { };
+
+  insync-v3 = libsForQt515.callPackage ../applications/networking/insync/v3.nix { };
+
+  libstrangle = callPackage ../tools/X11/libstrangle {
+    stdenv = stdenv_32bit;
+  };
+
+  lightdm = libsForQt5.callPackage ../applications/display-managers/lightdm { };
+
+  lightdm_qt = lightdm.override { withQt5 = true; };
+
+  lightdm-enso-os-greeter = callPackage ../applications/display-managers/lightdm-enso-os-greeter {
+    inherit (xorg) libX11 libXdmcp libpthreadstubs;
+  };
+
+  lightdm_gtk_greeter = callPackage ../applications/display-managers/lightdm/gtk-greeter.nix {
+    inherit (xfce) xfce4-dev-tools;
+  };
+
+  lightdm-mini-greeter = callPackage ../applications/display-managers/lightdm-mini-greeter { };
+
+  lightdm-tiny-greeter = callPackage ../applications/display-managers/lightdm-tiny-greeter {
+    conf = config.lightdm-tiny-greeter.conf or "";
+  };
+
+  ly = callPackage ../applications/display-managers/ly { };
+
+  slic3r = callPackage ../applications/misc/slic3r {
+    boost = boost172; # Building fails with Boost >1.72 due to boost/detail/endian.hpp missing
+  };
+
+  curaengine_stable = callPackage ../applications/misc/curaengine/stable.nix { };
+  cura_stable = callPackage ../applications/misc/cura/stable.nix {
+    curaengine = curaengine_stable;
+  };
+
+  curaengine = callPackage ../applications/misc/curaengine { inherit (python3.pkgs) libarcus; };
+
+  cura = libsForQt5.callPackage ../applications/misc/cura { };
+
+  curaPlugins = callPackage ../applications/misc/cura/plugins.nix { };
+
+  peru = callPackage ../applications/version-management/peru {};
+
+  petrinizer = haskellPackages.callPackage ../applications/science/logic/petrinizer {};
+
+  pmidi = callPackage ../applications/audio/pmidi { };
+
+  printrun = callPackage ../applications/misc/printrun { };
+
+  prusa-slicer = callPackage ../applications/misc/prusa-slicer { };
+
+  super-slicer = callPackage ../applications/misc/prusa-slicer/super-slicer.nix { };
+
+  super-slicer-latest = (callPackage ../applications/misc/prusa-slicer/super-slicer.nix { }).latest;
+
+  snapmaker-luban = callPackage ../applications/misc/snapmaker-luban { };
+
+  robustirc-bridge = callPackage ../servers/irc/robustirc-bridge { };
+
+  skrooge = libsForQt5.callPackage ../applications/office/skrooge {};
+
+  smartgithg = callPackage ../applications/version-management/smartgithg {
+    jre = openjdk11;
+  };
+
+  smartdeblur = callPackage ../applications/graphics/smartdeblur { };
+
+  snapper = callPackage ../tools/misc/snapper { };
+  snapper-gui = callPackage ../applications/misc/snapper-gui { };
+
+  snd = callPackage ../applications/audio/snd {
+    inherit (darwin.apple_sdk.frameworks) CoreServices CoreMIDI;
+  };
+
+  shntool = callPackage ../applications/audio/shntool { };
+
+  sipp = callPackage ../development/tools/misc/sipp { };
+
+  skanpage = libsForQt5.callPackage ../applications/graphics/skanpage { };
+
+  soci = callPackage ../development/libraries/soci { };
+
+  socialscan = with python3.pkgs; toPythonApplication socialscan;
+
+  sonic-lineup = libsForQt5.callPackage ../applications/audio/sonic-lineup { };
+
+  sonic-visualiser = libsForQt5.callPackage ../applications/audio/sonic-visualiser { };
+
+  soulseekqt = libsForQt5.callPackage ../applications/networking/p2p/soulseekqt { };
+
+  sox = callPackage ../applications/misc/audio/sox {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio;
+  };
+
+  soxr = callPackage ../applications/misc/audio/soxr { };
+
+  spek = callPackage ../applications/audio/spek {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  spotify-unwrapped = callPackage ../applications/audio/spotify {
+    curl = curl.override {
+      opensslSupport = false; gnutlsSupport = true;
+    };
+  };
+
+  spotify = callPackage ../applications/audio/spotify/wrapper.nix { };
+
+  libspotify = callPackage ../development/libraries/libspotify (config.libspotify or {});
+
+  sourcetrail = let
+    llvmPackages = llvmPackages_10;
+  in libsForQt5.callPackage ../development/tools/sourcetrail {
+    stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+    jdk = jdk8;
+    pythonPackages = python3Packages;
+    inherit llvmPackages;
+    boost = boost16x; # Filesystem tests in the checkPhase fail with Boost 1.77
+  };
+
+  spotifywm = callPackage ../applications/audio/spotifywm { };
+
+  psst = callPackage ../applications/audio/psst { };
+
+  squeezelite = callPackage ../applications/audio/squeezelite { audioBackend = "alsa"; };
+
+  squeezelite-pulse = callPackage ../applications/audio/squeezelite { audioBackend = "pulse"; };
+
+  ltunify = callPackage ../tools/misc/ltunify { };
+
+  src = callPackage ../applications/version-management/src {
+    git = gitMinimal;
+    python = python3;
+  };
+
+  sslyze = with python3Packages; toPythonApplication sslyze;
+
+  ssr = callPackage ../applications/audio/soundscape-renderer {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  ssrc = callPackage ../applications/audio/ssrc { };
+
+  stalonetray = callPackage ../applications/window-managers/stalonetray {};
+
+  inherit (ocaml-ng.ocamlPackages_4_12) stog;
+
+  stp = callPackage ../applications/science/logic/stp { };
+
+  stretchly = callPackage ../applications/misc/stretchly { };
+
+  stumpish = callPackage ../applications/window-managers/stumpish {};
+
+  stumpwm = lispPackages.stumpwm;
+
+  sublime = callPackage ../applications/editors/sublime/2 { };
+
+  sublime3Packages = recurseIntoAttrs (callPackage ../applications/editors/sublime/3/packages.nix { });
+
+  sublime3 = sublime3Packages.sublime3;
+
+  sublime3-dev = sublime3Packages.sublime3-dev;
+
+  inherit (recurseIntoAttrs (callPackage ../applications/editors/sublime/4/packages.nix { }))
+    sublime4
+    sublime4-dev;
+
+  inherit (callPackage ../applications/version-management/sublime-merge {})
+    sublime-merge
+    sublime-merge-dev;
+
+  inherit (callPackages ../applications/version-management/subversion { sasl = cyrus_sasl; })
+    subversion_1_10 subversion;
+
+  subversionClient = appendToName "client" (subversion.override {
+    bdbSupport = false;
+    perlBindings = true;
+    pythonBindings = true;
+  });
+
+  sublime-music = callPackage ../applications/audio/sublime-music { };
+
+  subunit = callPackage ../development/libraries/subunit { };
+
+  surf = callPackage ../applications/networking/browsers/surf { gtk = gtk2; };
+
+  surf-display = callPackage ../desktops/surf-display { };
+
+  surge = callPackage ../applications/audio/surge {
+    inherit (gnome) zenity;
+    git = gitMinimal;
+  };
+
+  surge-XT = callPackage ../applications/audio/surge-XT { };
+
+  survex = callPackage ../applications/misc/survex {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  sunvox = callPackage ../applications/audio/sunvox { };
+
+  svkbd = callPackage ../applications/accessibility/svkbd { };
+
+  swaglyrics = callPackage ../tools/misc/swaglyrics { };
+
+  swh_lv2 = callPackage ../applications/audio/swh-lv2 { };
+
+  swift-im = libsForQt514.callPackage ../applications/networking/instant-messengers/swift-im {
+    inherit (gnome2) GConf;
+    boost = boost168;
+  };
+
+  sylpheed = callPackage ../applications/networking/mailreaders/sylpheed { };
+
+  symbolic-preview = callPackage ../applications/graphics/symbolic-preview {
+    libhandy = libhandy_0;
+  };
+
+  symlinks = callPackage ../tools/system/symlinks { };
+
+  syncplay = python3.pkgs.callPackage ../applications/networking/syncplay { };
+
+  syncterm = callPackage ../applications/terminal-emulators/syncterm { };
+
+  inherit (callPackages ../applications/networking/syncthing { })
+    syncthing
+    syncthing-discovery
+    syncthing-relay;
+
+  syncthing-gtk = python2Packages.callPackage ../applications/networking/syncthing-gtk { };
+
+  syncthing-tray = callPackage ../applications/misc/syncthing-tray { };
+
+  syncthingtray = libsForQt5.callPackage ../applications/misc/syncthingtray { };
+  syncthingtray-minimal = libsForQt5.callPackage ../applications/misc/syncthingtray {
+    webviewSupport = false;
+    jsSupport = false;
+    kioPluginSupport = false;
+    plasmoidSupport = false;
+    systemdSupport = true;
+  };
+
+  synergy = libsForQt5.callPackage ../applications/misc/synergy {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa CoreServices ScreenSaver;
+  };
+
+  synergyWithoutGUI = synergy.override { withGUI = false; };
+
+  tabbed = callPackage ../applications/window-managers/tabbed {
+    # if you prefer a custom config, write the config.h in tabbed.config.h
+    # and enable
+    # customConfig = builtins.readFile ./tabbed.config.h;
+  };
+
+  taffybar = callPackage ../applications/window-managers/taffybar {
+    inherit (haskellPackages) ghcWithPackages taffybar;
+  };
+
+  tagainijisho = callPackage ../applications/office/tagainijisho {};
+
+  tahoe-lafs = callPackage ../tools/networking/p2p/tahoe-lafs {};
+
+  tailor = callPackage ../applications/version-management/tailor {};
+
+  taizen = callPackage ../applications/misc/taizen {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  talosctl = callPackage ../applications/networking/cluster/talosctl { };
+
+  talentedhack = callPackage ../applications/audio/talentedhack { };
+
+  tambura = callPackage ../applications/audio/tambura { };
+
+  tamgamp.lv2 = callPackage ../applications/audio/tamgamp.lv2 { };
+
+  tanka = callPackage ../applications/networking/cluster/tanka { };
+
+  teams = callPackage ../applications/networking/instant-messengers/teams { };
+
+  teamspeak_client = libsForQt5.callPackage ../applications/networking/instant-messengers/teamspeak/client.nix { };
+  teamspeak_server = callPackage ../applications/networking/instant-messengers/teamspeak/server.nix { };
+
+  taskell = haskell.lib.compose.justStaticExecutables haskellPackages.taskell;
+
+  tap-plugins = callPackage ../applications/audio/tap-plugins { };
+
+  taskjuggler = callPackage ../applications/misc/taskjuggler { };
+
+  tabula = callPackage ../applications/misc/tabula { };
+
+  tabula-java = callPackage ../applications/misc/tabula-java { };
+
+  tasknc = callPackage ../applications/misc/tasknc { };
+
+  taskwarrior = callPackage ../applications/misc/taskwarrior { };
+
+  taskwarrior-tui = callPackage ../applications/misc/taskwarrior-tui { };
+
+  dstask = callPackage ../applications/misc/dstask { };
+
+  tasksh = callPackage ../applications/misc/tasksh { };
+
+  taskserver = callPackage ../servers/misc/taskserver { };
+
+  taskopen = callPackage ../applications/misc/taskopen { };
+
+  tdesktop = libsForQt5.callPackage ../applications/networking/instant-messengers/telegram/tdesktop {
+    abseil-cpp = abseil-cpp_202111;
+  };
+
+  tektoncd-cli = callPackage ../applications/networking/cluster/tektoncd-cli { };
+
+  telegram-cli = callPackage ../applications/networking/instant-messengers/telegram/telegram-cli { };
+
+  telepathy-gabble = callPackage ../applications/networking/instant-messengers/telepathy/gabble { };
+
+  telepathy-haze = callPackage ../applications/networking/instant-messengers/telepathy/haze {};
+
+  telepathy-logger = callPackage ../applications/networking/instant-messengers/telepathy/logger {};
+
+  telepathy-mission-control = callPackage ../applications/networking/instant-messengers/telepathy/mission-control { };
+
+  telepathy-salut = callPackage ../applications/networking/instant-messengers/telepathy/salut {};
+
+  telepathy-idle = callPackage ../applications/networking/instant-messengers/telepathy/idle {};
+
+  teleprompter = callPackage ../applications/misc/teleprompter {};
+
+  tempo = callPackage ../servers/tracing/tempo {};
+
+  temporal = callPackage ../applications/networking/cluster/temporal { };
+
+  tenacity = callPackage ../applications/audio/tenacity { wxGTK = wxGTK31-gtk3; };
+
+  tendermint = callPackage ../tools/networking/tendermint { };
+
+  termdbms = callPackage ../development/tools/database/termdbms { };
+
+  termdown = python3Packages.callPackage ../applications/misc/termdown { };
+
+  terminal-notifier = callPackage ../applications/misc/terminal-notifier {};
+
+  textplots = callPackage ../tools/graphics/textplots { };
+
+  texture-synthesis = callPackage ../tools/graphics/texture-synthesis { };
+
+  tty-solitaire = callPackage ../applications/misc/tty-solitaire { };
+
+  termtosvg = callPackage ../tools/misc/termtosvg { };
+
+  inherit (callPackage ../applications/graphics/tesseract {})
+    tesseract3
+    tesseract4;
+  tesseract = tesseract3;
+
+  tetraproc = callPackage ../applications/audio/tetraproc { };
+
+  tev = callPackage ../applications/graphics/tev { };
+
+  themechanger = callPackage ../applications/misc/themechanger { };
+
+  thinkingRock = callPackage ../applications/misc/thinking-rock { };
+
+  thonny = callPackage ../applications/editors/thonny { };
+
+  thunderbirdPackages = recurseIntoAttrs (callPackage ../applications/networking/mailreaders/thunderbird/packages.nix {
+    callPackage = newScope {
+      inherit (rustPackages) cargo rustc;
+      libpng = libpng_apng;
+      gnused = gnused_422;
+      inherit (darwin.apple_sdk.frameworks) CoreMedia ExceptionHandling
+                                            Kerberos AVFoundation MediaToolbox
+                                            CoreLocation Foundation AddressBook;
+      inherit (darwin) libobjc;
+    };
+  });
+
+  thunderbird-unwrapped = thunderbirdPackages.thunderbird;
+  thunderbird = wrapThunderbird thunderbird-unwrapped { };
+  thunderbird-wayland = wrapThunderbird thunderbird-unwrapped { forceWayland = true; };
+
+  thunderbird-bin = thunderbird-bin-91;
+  thunderbird-bin-unwrapped = thunderbird-bin-91-unwrapped;
+
+  thunderbird-bin-91 = wrapThunderbird thunderbird-bin-91-unwrapped {
+    applicationName = "thunderbird";
+    pname = "thunderbird-bin";
+    desktopName = "Thunderbird";
+  };
+  thunderbird-bin-91-unwrapped = callPackage ../applications/networking/mailreaders/thunderbird-bin {
+    inherit (gnome) adwaita-icon-theme;
+  };
+
+  thunderbolt = callPackage ../os-specific/linux/thunderbolt {};
+
+  ticpp = callPackage ../development/libraries/ticpp { };
+
+  ticker = callPackage ../applications/misc/ticker { };
+
+  tickrs = callPackage ../applications/misc/tickrs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tig = callPackage ../applications/version-management/git-and-tools/tig { };
+
+  timbreid = callPackage ../applications/audio/pd-plugins/timbreid {
+    fftw = fftwSinglePrec;
+  };
+
+  timelimit = callPackage ../tools/misc/timelimit { };
+
+  timewarrior = callPackage ../applications/misc/timewarrior { };
+
+  timew-sync-server = callPackage ../applications/misc/timew-sync-server { };
+
+  timg = callPackage ../tools/graphics/timg { };
+
+  timidity = callPackage ../tools/misc/timidity {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio;
+  };
+
+  tint2 = callPackage ../applications/misc/tint2 { };
+
+  tiny = callPackage ../applications/networking/irc/tiny {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  tipp10 = qt5.callPackage ../applications/misc/tipp10 { };
+
+  tixati = callPackage ../applications/networking/p2p/tixati { };
+
+  tkrev = callPackage ../applications/version-management/tkrev { };
+
+  tla = callPackage ../applications/version-management/arch { };
+
+  tlf = callPackage ../applications/radio/tlf { };
+
+  tlp = callPackage ../tools/misc/tlp {
+    inherit (linuxPackages) x86_energy_perf_policy;
+  };
+
+  tippecanoe = callPackage ../applications/misc/tippecanoe { };
+
+  tmatrix = callPackage ../applications/misc/tmatrix { };
+
+  tnef = callPackage ../applications/misc/tnef { };
+
+  todiff = callPackage ../applications/misc/todiff { };
+
+  todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };
+
+  todofi-sh = callPackage ../applications/office/todofi.sh { };
+
+  todoman = callPackage ../applications/office/todoman { };
+
+  toggldesktop = libsForQt514.callPackage ../applications/misc/toggldesktop { };
+
+  topydo = callPackage ../applications/misc/topydo {};
+
+  torchat = callPackage ../applications/networking/instant-messengers/torchat { };
+
+  torrential = callPackage ../applications/networking/p2p/torrential { };
+
+  tortoisehg = callPackage ../applications/version-management/tortoisehg { };
+
+  tonelib-gfx = callPackage ../applications/audio/tonelib-gfx { };
+
+  tonelib-jam = callPackage ../applications/audio/tonelib-jam { };
+
+  tonelib-zoom = callPackage ../applications/audio/tonelib-zoom { };
+
+  tony = libsForQt514.callPackage ../applications/audio/tony { };
+
+  toot = callPackage ../applications/misc/toot { };
+
+  tootle = callPackage ../applications/misc/tootle { };
+
+  toxic = callPackage ../applications/networking/instant-messengers/toxic { };
+
+  toxiproxy = callPackage ../development/tools/toxiproxy { };
+
+  tqsl = callPackage ../applications/radio/tqsl { };
+  trustedqsl = tqsl; # Alias added 2019-02-10
+
+  transcode = callPackage ../applications/audio/transcode { };
+
+  transcribe = callPackage ../applications/audio/transcribe { };
+
+  transmission = callPackage ../applications/networking/p2p/transmission { };
+  libtransmission = transmission.override {
+    installLib = true;
+    enableDaemon = false;
+    enableCli = false;
+  };
+  transmission-gtk = transmission.override { enableGTK3 = true; };
+  transmission-qt = transmission.override { enableQt = true; };
+
+  transmission-remote-gtk = callPackage ../applications/networking/p2p/transmission-remote-gtk {};
+
+  transgui = callPackage ../applications/networking/p2p/transgui { };
+
+  traverso = libsForQt5.callPackage ../applications/audio/traverso { };
+
+  trayer = callPackage ../applications/window-managers/trayer { };
+
+  tinywl = callPackage ../applications/window-managers/tinywl { };
+
+  tinywm = callPackage ../applications/window-managers/tinywm { };
+
+  tree-from-tags = callPackage ../applications/audio/tree-from-tags { };
+
+  tdrop = callPackage ../applications/misc/tdrop { };
+
+  tre-command = callPackage ../tools/system/tre-command {};
+
+  tree = callPackage ../tools/system/tree {};
+
+  treesheets = callPackage ../applications/office/treesheets {
+    wxGTK = wxGTK31-gtk3;
+  };
+
+  tremc = callPackage ../applications/networking/p2p/tremc { };
+
+  tribler = callPackage ../applications/networking/p2p/tribler { };
+
+  trojita = libsForQt5.callPackage ../applications/networking/mailreaders/trojita { };
+
+  ttyper = callPackage ../applications/misc/ttyper { };
+
+  tudu = callPackage ../applications/office/tudu { };
+
+  tuna = python3Packages.callPackage ../os-specific/linux/tuna { };
+
+  tunefish = callPackage ../applications/audio/tunefish {
+    stdenv = clangStdenv; # https://github.com/jpcima/tunefish/issues/4
+  };
+
+  tut = callPackage ../applications/misc/tut { };
+
+  tuxguitar = callPackage ../applications/editors/music/tuxguitar {
+    jre = jre8;
+    swt = swt_jdk8;
+  };
+
+  twister = callPackage ../applications/networking/p2p/twister {
+    boost = boost16x;
+  };
+
+  twmn = libsForQt5.callPackage ../applications/misc/twmn { };
+
+  testssl = callPackage ../applications/networking/testssl { };
+
+  lavalauncher = callPackage ../applications/misc/lavalauncher { };
+
+  t-rec = callPackage ../misc/t-rec {
+    inherit (darwin.apple_sdk.frameworks) Foundation;
+  };
+
+  ulauncher = callPackage ../applications/misc/ulauncher { };
+
+  twinkle = qt5.callPackage ../applications/networking/instant-messengers/twinkle { };
+
+  terminal-typeracer = callPackage ../applications/misc/terminal-typeracer {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  ueberzug = with python3Packages; toPythonApplication ueberzug;
+
+  uhhyou.lv2 = callPackage ../applications/audio/uhhyou.lv2 { };
+
+  umurmur = callPackage ../applications/networking/umurmur { };
+
+  udocker = callPackage ../tools/virtualization/udocker { };
+
+  uefitoolPackages = recurseIntoAttrs (callPackage ../tools/system/uefitool/variants.nix {});
+  uefitool = uefitoolPackages.new-engine;
+
+  ungoogled-chromium = callPackage ../applications/networking/browsers/chromium ((config.chromium or {}) // {
+    ungoogled = true;
+    channel = "ungoogled-chromium";
+  });
+
+  unigine-valley = callPackage ../applications/graphics/unigine-valley { };
+
+  unipicker = callPackage ../applications/misc/unipicker { };
+
+  unison = callPackage ../applications/networking/sync/unison {
+    enableX11 = config.unison.enableX11 or true;
+  };
+
+  unpaper = callPackage ../tools/graphics/unpaper { };
+
+  unison-ucm = callPackage ../development/compilers/unison { };
+
+  urh = callPackage ../applications/radio/urh { };
+
+  uroboros = callPackage ../tools/system/uroboros { };
+
+  uuagc = haskell.lib.compose.justStaticExecutables haskellPackages.uuagc;
+
+  uucp = callPackage ../tools/misc/uucp { };
+
+  uvccapture = callPackage ../applications/video/uvccapture { };
+
+  uwimap = callPackage ../tools/networking/uwimap { };
+
+  utox = callPackage ../applications/networking/instant-messengers/utox { };
+
+  valentina = libsForQt512.callPackage ../applications/misc/valentina { };
+
+  vbindiff = callPackage ../applications/editors/vbindiff { };
+
+  vcprompt = callPackage ../applications/version-management/vcprompt {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  vcs = callPackage ../applications/video/vcs { };
+
+  vcv-rack = callPackage ../applications/audio/vcv-rack { };
+
+  vdirsyncer = with python3Packages; toPythonApplication vdirsyncer;
+
+  vdpauinfo = callPackage ../tools/X11/vdpauinfo { };
+
+  vengi-tools = callPackage ../applications/graphics/vengi-tools {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreServices OpenCL;
+  };
+
+  verbiste = callPackage ../applications/misc/verbiste {
+    inherit (gnome2) libgnomeui;
+  };
+
+  veusz = libsForQt5.callPackage ../applications/graphics/veusz { };
+
+  vim = callPackage ../applications/editors/vim {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  vimiv = callPackage ../applications/graphics/vimiv { };
+
+  vimiv-qt = callPackage ../applications/graphics/vimiv-qt { };
+
+  macvim = callPackage ../applications/editors/vim/macvim-configurable.nix { stdenv = clangStdenv; };
+
+  vimHugeX = vim_configurable;
+
+  vim_configurable = vimUtils.makeCustomizable (callPackage ../applications/editors/vim/configurable.nix {
+    inherit (darwin.apple_sdk.frameworks) CoreServices Cocoa Foundation CoreData;
+    inherit (darwin) libobjc;
+    gtk2 = if stdenv.isDarwin then gtk2-x11 else gtk2;
+    gtk3 = if stdenv.isDarwin then gtk3-x11 else gtk3;
+  });
+
+  vim-darwin = (vim_configurable.override {
+    config = {
+      vim = {
+        gui = "none";
+        darwin = true;
+      };
+    };
+  }).overrideAttrs (_: rec {
+    pname = "vim-darwin";
+    meta = {
+      platforms = lib.platforms.darwin;
+    };
+  });
+
+  vimacs = callPackage ../applications/editors/vim/vimacs.nix { };
+
+  vimv = callPackage ../tools/misc/vimv { };
+
+  qpdfview = libsForQt5.callPackage ../applications/misc/qpdfview {};
+
+  qtile = callPackage ../applications/window-managers/qtile { };
+
+  vimgolf = callPackage ../games/vimgolf { };
+
+  vimpc = callPackage ../applications/audio/vimpc { };
+
+  # this is a lower-level alternative to wrapNeovim conceived to handle
+  # more usecases when wrapping neovim. The interface is being actively worked on
+  # so expect breakage. use wrapNeovim instead if you want a stable alternative
+  wrapNeovimUnstable = callPackage ../applications/editors/neovim/wrapper.nix { };
+  wrapNeovim = neovim-unwrapped: lib.makeOverridable (neovimUtils.legacyWrapper neovim-unwrapped);
+  neovim-unwrapped = callPackage ../applications/editors/neovim {
+    lua = luajit;
+  };
+
+  neovimUtils = callPackage ../applications/editors/neovim/utils.nix { };
+  neovim = wrapNeovim neovim-unwrapped { };
+
+  neovim-qt-unwrapped = libsForQt5.callPackage ../applications/editors/neovim/neovim-qt.nix { };
+  neovim-qt = libsForQt5.callPackage ../applications/editors/neovim/qt.nix { };
+
+  gnvim-unwrapped = callPackage ../applications/editors/neovim/gnvim {
+    gtk = gtk3;
+  };
+
+  gnvim = callPackage ../applications/editors/neovim/gnvim/wrapper.nix { };
+
+  neovide = callPackage ../applications/editors/neovim/neovide { };
+
+  neovim-remote = callPackage ../applications/editors/neovim/neovim-remote.nix { };
+
+  vis = callPackage ../applications/editors/vis { };
+
+  viw = callPackage ../applications/editors/viw { };
+
+  virt-viewer = callPackage ../applications/virtualization/virt-viewer { };
+
+  virt-top = callPackage ../applications/virtualization/virt-top { };
+
+  virt-what = callPackage ../applications/virtualization/virt-what { };
+
+  virt-manager = callPackage ../applications/virtualization/virt-manager {
+    system-libvirt = libvirt;
+  };
+
+  virt-manager-qt = libsForQt5.callPackage ../applications/virtualization/virt-manager/qt.nix {
+    qtermwidget = lxqt.qtermwidget;
+  };
+
+  virtscreen = callPackage ../tools/admin/virtscreen {};
+
+  virtual-ans = callPackage ../applications/audio/virtual-ans {};
+
+  virtualbox = libsForQt514.callPackage ../applications/virtualization/virtualbox {
+    stdenv = stdenv_32bit;
+    inherit (gnome2) libIDL;
+    jdk = openjdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  virtualboxHardened = lowPrio (virtualbox.override {
+    enableHardening = true;
+  });
+
+  virtualboxHeadless = lowPrio (virtualbox.override {
+    enableHardening = true;
+    headless = true;
+  });
+
+  virtualboxExtpack = callPackage ../applications/virtualization/virtualbox/extpack.nix { };
+
+  virtualboxWithExtpack = lowPrio (virtualbox.override {
+    extensionPack = virtualboxExtpack;
+  });
+
+  virtualglLib = callPackage ../tools/X11/virtualgl/lib.nix {
+    fltk = fltk13;
+  };
+
+  virtualgl = callPackage ../tools/X11/virtualgl {
+    virtualglLib_i686 = if stdenv.hostPlatform.system == "x86_64-linux"
+      then pkgsi686Linux.virtualglLib
+      else null;
+  };
+
+  vpcs = callPackage ../applications/virtualization/vpcs { };
+
+  primusLib = callPackage ../tools/X11/primus/lib.nix {
+    nvidia_x11 = linuxPackages.nvidia_x11.override { libsOnly = true; };
+  };
+
+  primus = callPackage ../tools/X11/primus {
+    stdenv_i686 = pkgsi686Linux.stdenv;
+    primusLib_i686 = if stdenv.hostPlatform.system == "x86_64-linux"
+      then pkgsi686Linux.primusLib
+      else null;
+  };
+
+  bumblebee = callPackage ../tools/X11/bumblebee {
+    nvidia_x11 = linuxPackages.nvidia_x11;
+    nvidia_x11_i686 = if stdenv.hostPlatform.system == "x86_64-linux"
+      then pkgsi686Linux.linuxPackages.nvidia_x11.override { libsOnly = true; }
+      else null;
+    libglvnd_i686 = if stdenv.hostPlatform.system == "x86_64-linux"
+      then pkgsi686Linux.libglvnd
+      else null;
+  };
+
+  uvcdynctrl = callPackage ../os-specific/linux/uvcdynctrl { };
+
+  vkeybd = callPackage ../applications/audio/vkeybd {};
+
+  vlc = libsForQt5.callPackage ../applications/video/vlc {
+    # Newest libcaca changed the API, and libvlc didn't catch it. Until next
+    # version arrives, it is safer to disable it.
+    # Upstream thread: https://code.videolan.org/videolan/vlc/-/issues/26389
+    libcaca = null;
+  };
+
+  libvlc = vlc.override {
+    withQt5 = false;
+    qtbase = null;
+    qtsvg = null;
+    qtx11extras = null;
+    wrapQtAppsHook = null;
+    onlyLibVLC = true;
+  };
+
+  vmpk = libsForQt5.callPackage ../applications/audio/vmpk { };
+
+  vmware-horizon-client = callPackage ../applications/networking/remote/vmware-horizon-client { };
+
+  vocproc = callPackage ../applications/audio/vocproc { };
+
+  vnstat = callPackage ../applications/networking/vnstat { };
+
+  vocal = callPackage ../applications/audio/vocal { };
+
+  vogl = libsForQt5.callPackage ../development/tools/vogl { };
+
+  volnoti = callPackage ../applications/misc/volnoti { };
+
+  vorbis-tools = callPackage ../applications/audio/vorbis-tools {
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  vscode = callPackage ../applications/editors/vscode/vscode.nix { };
+  vscode-fhs = vscode.fhs;
+  vscode-fhsWithPackages = vscode.fhsWithPackages;
+
+  vscode-with-extensions = callPackage ../applications/editors/vscode/with-extensions.nix { };
+
+  vscode-utils = callPackage ../applications/editors/vscode/extensions/vscode-utils.nix { };
+
+  vscode-extensions = recurseIntoAttrs (callPackage ../applications/editors/vscode/extensions { });
+
+  vscodium = callPackage ../applications/editors/vscode/vscodium.nix { };
+  vscodium-fhs = vscodium.fhs;
+  vscodium-fhsWithPackages = vscodium.fhsWithPackages;
+
+  openvscode-server = callPackage ../servers/openvscode-server {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Security;
+    inherit (darwin) cctools;
+  };
+
+  code-server = callPackage ../servers/code-server {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa CoreServices Security;
+    inherit (darwin) cctools;
+    inherit (nodePackages) node-gyp;
+  };
+
+  vue = callPackage ../applications/misc/vue { };
+
+  vuze = callPackage ../applications/networking/p2p/vuze {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  vwm = callPackage ../applications/window-managers/vwm { };
+
+  yeahwm = callPackage ../applications/window-managers/yeahwm { };
+
+  vym = qt5.callPackage ../applications/misc/vym { };
+
+  wad = callPackage ../tools/security/wad { };
+
+  wafw00f = callPackage ../tools/security/wafw00f { };
+
+  whispers = callPackage ../tools/security/whispers { };
+
+  waon = callPackage ../applications/audio/waon { };
+
+  w3m = callPackage ../applications/networking/browsers/w3m { };
+
+  # Should always be the version with the most features
+  w3m-full = w3m;
+
+  # Version without X11
+  w3m-nox = w3m.override {
+    x11Support = false;
+    imlib2 = imlib2-nox;
+  };
+
+  # Version without X11 or graphics
+  w3m-nographics = w3m.override {
+    x11Support = false;
+    graphicsSupport = false;
+  };
+
+  # Version for batch text processing, not a good browser
+  w3m-batch = w3m.override {
+    graphicsSupport = false;
+    mouseSupport = false;
+    x11Support = false;
+    imlib2 = imlib2-nox;
+  };
+
+  watson = callPackage ../applications/office/watson { };
+
+  wapiti = callPackage ../tools/security/wapiti { };
+
+  wayfireApplications = wayfireApplications-unwrapped.withPlugins (plugins: [ plugins.wf-shell ]);
+  inherit (wayfireApplications) wayfire wcm;
+  wayfireApplications-unwrapped = recurseIntoAttrs (
+    (callPackage ../applications/window-managers/wayfire/applications.nix { }).
+    extend (_: _: { wlroots = wlroots_0_14; })
+  );
+  wayfirePlugins = recurseIntoAttrs (
+    callPackage ../applications/window-managers/wayfire/plugins.nix {
+      inherit (wayfireApplications-unwrapped) wayfire;
+    }
+  );
+  wf-config = callPackage ../applications/window-managers/wayfire/wf-config.nix { };
+
+  waypipe = callPackage ../applications/networking/remote/waypipe { };
+
+  wayv = callPackage ../tools/X11/wayv {};
+
+  wayvnc = callPackage ../applications/networking/remote/wayvnc { };
+
+  webcamoid = libsForQt5.callPackage ../applications/video/webcamoid { };
+
+  webmacs = libsForQt5.callPackage ../applications/networking/browsers/webmacs {};
+
+  webssh = with python3Packages; toPythonApplication webssh;
+
+  webtorrent_desktop = callPackage ../applications/video/webtorrent_desktop {};
+
+  wrapWeechat = callPackage ../applications/networking/irc/weechat/wrapper.nix { };
+
+  weechat-unwrapped = callPackage ../applications/networking/irc/weechat {
+    inherit (darwin) libobjc;
+    inherit (darwin) libresolv;
+    guile = guile_2_0;
+  };
+
+  weechat = wrapWeechat weechat-unwrapped { };
+
+  weechatScripts = recurseIntoAttrs (callPackage ../applications/networking/irc/weechat/scripts { });
+
+  westonLite = weston.override {
+    pango = null;
+    freerdp = null;
+    libunwind = null;
+    vaapi = null;
+    libva = null;
+    libwebp = null;
+    xwayland = null;
+    pipewire = null;
+  };
+
+  chatterino2 = libsForQt5.callPackage ../applications/networking/instant-messengers/chatterino2 {};
+
+  weston = callPackage ../applications/window-managers/weston { };
+
+  whalebird = callPackage ../applications/misc/whalebird {
+    electron = electron_14;
+  };
+
+  wio = callPackage ../applications/window-managers/wio {
+    wlroots = wlroots_0_14;
+  };
+
+  whitebox-tools = callPackage ../applications/gis/whitebox-tools {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  windowlab = callPackage ../applications/window-managers/windowlab { };
+
+  windowmaker = callPackage ../applications/window-managers/windowmaker { };
+  dockapps = callPackage ../applications/window-managers/windowmaker/dockapps { };
+
+  wily = callPackage ../applications/editors/wily { };
+
+  wings = callPackage ../applications/graphics/wings {
+    erlang = erlangR21;
+  };
+
+  write_stylus = libsForQt5.callPackage ../applications/graphics/write_stylus { };
+
+  wlc = callPackage  ../tools/misc/wlc { };
+
+  wllvm = callPackage  ../development/tools/wllvm { };
+
+  wmname = callPackage ../applications/misc/wmname { };
+
+  wmctrl = callPackage ../tools/X11/wmctrl { };
+
+  wmderland = callPackage ../applications/window-managers/wmderland { };
+
+  wmderlandc = callPackage ../applications/window-managers/wmderlandc { };
+
+  wmii_hg = callPackage ../applications/window-managers/wmii-hg { };
+
+  wofi = callPackage ../applications/misc/wofi { };
+
+  wofi-emoji = callPackage ../applications/misc/wofi-emoji { };
+
+  cl-wordle = callPackage ../games/cl-wordle { };
+
+  wordnet = callPackage ../applications/misc/wordnet {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  wordgrinder = callPackage ../applications/office/wordgrinder { };
+
+  worker = callPackage ../applications/misc/worker { };
+
+  workrave = callPackage ../applications/misc/workrave {
+    inherit (python27Packages) cheetah;
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good;
+  };
+
+  worldengine-cli = python3Packages.worldengine;
+
+  wpsoffice = libsForQt514.callPackage ../applications/office/wpsoffice {};
+
+  wrapFirefox = callPackage ../applications/networking/browsers/firefox/wrapper.nix { };
+
+  wrapThunderbird = callPackage ../applications/networking/mailreaders/thunderbird/wrapper.nix { };
+
+  wp-cli = callPackage ../development/tools/wp-cli { };
+
+  wsjtx = qt5.callPackage ../applications/radio/wsjtx { };
+
+  wxhexeditor = callPackage ../applications/editors/wxhexeditor {
+    wxGTK = wxGTK31;
+  };
+
+  wxcam = callPackage ../applications/video/wxcam {
+    inherit (gnome2) libglade;
+    wxGTK = wxGTK28;
+    gtk = gtk2;
+  };
+
+  xa = callPackage ../development/compilers/xa/xa.nix { };
+  dxa = callPackage ../development/compilers/xa/dxa.nix { };
+
+  x11basic = callPackage ../development/compilers/x11basic {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  x11vnc = callPackage ../tools/X11/x11vnc { };
+
+  x11spice = callPackage ../tools/X11/x11spice { };
+
+  x2goclient = libsForQt5.callPackage ../applications/networking/remote/x2goclient { };
+
+  x2goserver = callPackage ../applications/networking/remote/x2goserver { };
+
+  x2vnc = callPackage ../tools/X11/x2vnc { };
+
+  x32edit = callPackage ../applications/audio/midas/x32edit.nix {};
+
+  x42-avldrums = callPackage ../applications/audio/x42-avldrums { };
+
+  x42-gmsynth = callPackage ../applications/audio/x42-gmsynth { };
+
+  x42-plugins = callPackage ../applications/audio/x42-plugins { };
+
+  xannotate = callPackage ../tools/X11/xannotate {};
+
+  xaos = callPackage ../applications/graphics/xaos {
+    libpng = libpng12;
+  };
+
+  xastir = callPackage ../applications/misc/xastir {
+    rastermagick = imagemagick6;
+    inherit (xorg) libXt;
+  };
+
+  xautomation = callPackage ../tools/X11/xautomation { };
+
+  xawtv = callPackage ../applications/video/xawtv { };
+
+  xbattbar = callPackage ../applications/misc/xbattbar { };
+
+  xbindkeys = callPackage ../tools/X11/xbindkeys { };
+
+  xbindkeys-config = callPackage ../tools/X11/xbindkeys-config {
+    gtk = gtk2;
+  };
+
+  xxh = with python3Packages; toPythonApplication xxh;
+
+  kodiPackages = recurseIntoAttrs (kodi.packages);
+
+  kodi = callPackage ../applications/video/kodi {
+    jre_headless = jdk11_headless;
+  };
+
+  kodi-wayland = callPackage ../applications/video/kodi {
+    jre_headless = jdk11_headless;
+    waylandSupport = true;
+  };
+
+  kodi-gbm = callPackage ../applications/video/kodi {
+    jre_headless = jdk11_headless;
+    gbmSupport = true;
+  };
+
+  kodi-cli = callPackage ../tools/misc/kodi-cli { };
+
+  kodi-retroarch-advanced-launchers =
+    callPackage ../applications/emulators/retroarch/kodi-advanced-launchers.nix { };
+
+  xca = libsForQt5.callPackage ../applications/misc/xca { };
+
+  xcalib = callPackage ../tools/X11/xcalib { };
+
+  xcape = callPackage ../tools/X11/xcape { };
+
+  xcat = callPackage ../tools/security/xcat { };
+
+  xchainkeys = callPackage ../tools/X11/xchainkeys { };
+
+  xchm = callPackage ../applications/misc/xchm { };
+
+  inherit (xorg) xcompmgr;
+
+  picom = callPackage ../applications/window-managers/picom {};
+
+  picom-next = callPackage ../applications/window-managers/picom/picom-next.nix { };
+
+  xd = callPackage ../applications/networking/p2p/xd {};
+
+  xdaliclock = callPackage ../tools/misc/xdaliclock {};
+
+  xdg-dbus-proxy = callPackage ../development/libraries/xdg-dbus-proxy { };
+
+  xdg-desktop-portal = callPackage ../development/libraries/xdg-desktop-portal { };
+
+  xdg-desktop-portal-gnome = callPackage ../development/libraries/xdg-desktop-portal-gnome { };
+
+  xdg-desktop-portal-gtk = callPackage ../development/libraries/xdg-desktop-portal-gtk { };
+
+  xdg-desktop-portal-wlr = callPackage ../development/libraries/xdg-desktop-portal-wlr { };
+
+  xdg-user-dirs = callPackage ../tools/X11/xdg-user-dirs { };
+
+  xdg-utils = callPackage ../tools/X11/xdg-utils {
+    w3m = w3m-batch;
+  };
+
+  xdgmenumaker = callPackage ../applications/misc/xdgmenumaker { };
+
+  xdotool = callPackage ../tools/X11/xdotool { };
+
+  xed-editor = callPackage ../applications/editors/xed-editor {
+    xapps = cinnamon.xapps;
+  };
+
+  xenPackages = recurseIntoAttrs (callPackage ../applications/virtualization/xen/packages.nix {});
+
+  xen = xenPackages.xen-vanilla;
+  xen-slim = xenPackages.xen-slim;
+  xen-light = xenPackages.xen-light;
+
+  xen_4_10 = xenPackages.xen_4_10-vanilla;
+  xen_4_10-slim = xenPackages.xen_4_10-slim;
+  xen_4_10-light = xenPackages.xen_4_10-light;
+
+  xkbset = callPackage ../tools/X11/xkbset { };
+
+  xkbmon = callPackage ../applications/misc/xkbmon { };
+
+  win-spice = callPackage ../applications/virtualization/driver/win-spice { };
+  win-virtio = callPackage ../applications/virtualization/driver/win-virtio { };
+  win-qemu = callPackage ../applications/virtualization/driver/win-qemu { };
+  win-pvdrivers = callPackage ../applications/virtualization/driver/win-pvdrivers { };
+  win-signed-gplpv-drivers = callPackage ../applications/virtualization/driver/win-signed-gplpv-drivers { };
+
+  xfe = callPackage ../applications/misc/xfe {
+    fox = fox_1_6;
+  };
+
+  xfig = callPackage ../applications/graphics/xfig { };
+
+  xfractint = callPackage ../applications/graphics/xfractint {};
+
+  xine-ui = callPackage ../applications/video/xine-ui { };
+
+  xlsxgrep = callPackage ../applications/search/xlsxgrep { };
+
+  xmind = callPackage ../applications/misc/xmind { };
+
+  xneur = callPackage ../applications/misc/xneur {
+    enchant = enchant1;
+  };
+
+  gxneur = callPackage ../applications/misc/gxneur  {
+    inherit (gnome2) libglade GConf;
+  };
+
+  xiphos = callPackage ../applications/misc/xiphos {
+    gtkhtml = gnome2.gtkhtml4;
+  };
+
+  xournal = callPackage ../applications/graphics/xournal {
+    inherit (gnome2) libgnomeprint libgnomeprintui libgnomecanvas;
+  };
+
+  xournalpp = callPackage ../applications/graphics/xournalpp {
+    lua = lua5_3;
+  };
+
+  apvlv = callPackage ../applications/misc/apvlv { };
+
+  xpdf = libsForQt5.callPackage ../applications/misc/xpdf { };
+
+  xplugd = callPackage ../tools/X11/xplugd { };
+
+  xpointerbarrier = callPackage ../tools/X11/xpointerbarrier {};
+
+  xkb-switch = callPackage ../tools/X11/xkb-switch { };
+
+  xkb-switch-i3 = callPackage ../tools/X11/xkb-switch-i3 { };
+
+  xkblayout-state = callPackage ../applications/misc/xkblayout-state { };
+
+  xlife = callPackage ../applications/graphics/xlife { };
+
+  xmobar = haskellPackages.xmobar;
+
+  xmonad-log = callPackage ../tools/misc/xmonad-log { };
+
+  xmonad-with-packages = callPackage ../applications/window-managers/xmonad/wrapper.nix {
+    inherit (haskellPackages) ghcWithPackages;
+    packages = _: [ haskellPackages.xmonad-contrib ];
+  };
+
+  xmonad_log_applet = callPackage ../applications/window-managers/xmonad/log-applet {
+    inherit (xfce) libxfce4util xfce4-panel;
+  };
+
+  xmonad_log_applet_mate = xmonad_log_applet.override {
+    desktopSupport = "mate";
+  };
+
+  xmonad_log_applet_xfce = xmonad_log_applet.override {
+    desktopSupport = "xfce4";
+  };
+
+  xmountains = callPackage ../applications/graphics/xmountains { };
+
+  xmpp-client = callPackage ../applications/networking/instant-messengers/xmpp-client { };
+
+  libxpdf = callPackage ../applications/misc/xpdf/libxpdf.nix { };
+
+  xpra = callPackage ../tools/X11/xpra { };
+  xpraWithNvenc = callPackage ../tools/X11/xpra {
+    withNvenc = true;
+    nvidia_x11 = linuxPackages.nvidia_x11.override { libsOnly = true; };
+  };
+  libfakeXinerama = callPackage ../tools/X11/xpra/libfakeXinerama.nix { };
+
+
+  xplayer = callPackage ../applications/video/xplayer {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad;
+    inherit (cinnamon) xapps;
+  };
+  libxplayer-plparser = callPackage ../applications/video/xplayer/plparser.nix { };
+
+  xrectsel = callPackage ../tools/X11/xrectsel { };
+
+  xrestop = callPackage ../tools/X11/xrestop { };
+
+  xrgears = callPackage ../applications/graphics/xrgears { };
+
+  xsd = callPackage ../development/libraries/xsd {
+    stdenv = gcc9Stdenv;
+  };
+
+  xscope = callPackage ../applications/misc/xscope { };
+
+  xscreensaver = callPackage ../misc/screensavers/xscreensaver { };
+
+  xsuspender = callPackage ../applications/misc/xsuspender {  };
+
+  xss-lock = callPackage ../misc/screensavers/xss-lock { };
+
+  xloadimage = callPackage ../tools/X11/xloadimage { };
+
+  xssproxy = callPackage ../misc/screensavers/xssproxy { };
+
+  xsynth_dssi = callPackage ../applications/audio/xsynth-dssi { };
+
+  xtrace = callPackage ../tools/X11/xtrace { };
+
+  xtruss = callPackage ../tools/X11/xtruss { };
+
+  xtuner = callPackage ../applications/audio/xtuner { };
+
+  xmacro = callPackage ../tools/X11/xmacro { };
+
+  xmenu = callPackage ../applications/misc/xmenu { };
+
+  xmlcopyeditor = callPackage ../applications/editors/xmlcopyeditor { };
+
+  xmp = callPackage ../applications/audio/xmp { };
+
+  xnee = callPackage ../tools/X11/xnee { };
+
+  xvidcap = callPackage ../applications/video/xvidcap {
+    inherit (gnome2) scrollkeeper libglade;
+  };
+
+  xygrib = libsForQt514.callPackage ../applications/misc/xygrib {};
+
+  xzgv = callPackage ../applications/graphics/xzgv { };
+
+  yabar = callPackage ../applications/window-managers/yabar { };
+
+  yabar-unstable = callPackage ../applications/window-managers/yabar/unstable.nix { };
+
+  yarp = callPackage ../applications/science/robotics/yarp {};
+
+  yate = callPackage ../applications/misc/yate { };
+
+  ydiff = with python3.pkgs; toPythonApplication ydiff;
+
+  yed = callPackage ../applications/graphics/yed {};
+
+  yeetgif = callPackage ../applications/graphics/yeetgif { };
+
+  inherit (gnome) yelp;
+
+  yelp-tools = callPackage ../development/misc/yelp-tools { };
+
+  yokadi = python3Packages.callPackage ../applications/misc/yokadi {};
+
+  yoshimi = callPackage ../applications/audio/yoshimi { };
+
+  your-editor = callPackage ../applications/editors/your-editor { stdenv = gccStdenv; };
+
+  youtube-dl = with python3Packages; toPythonApplication youtube-dl;
+
+  youtube-dl-light = with python3Packages; toPythonApplication youtube-dl-light;
+
+  yt-dlp = with python3Packages; toPythonApplication yt-dlp;
+
+  yt-dlp-light = with python3Packages; toPythonApplication yt-dlp-light;
+
+  youtube-viewer = perlPackages.WWWYoutubeViewer;
+
+  ytalk = callPackage ../applications/networking/instant-messengers/ytalk { };
+
+  ytarchive = callPackage ../tools/misc/ytarchive { };
+
+  ytcc = callPackage ../tools/networking/ytcc { };
+
+  ytmdesktop = callPackage ../applications/audio/ytmdesktop { };
+
+  ytmdl = callPackage ../tools/misc/ytmdl { };
+
+  zam-plugins = callPackage ../applications/audio/zam-plugins { };
+
+  zammad = callPackage ../applications/networking/misc/zammad { };
+
+  zathuraPkgs = callPackage ../applications/misc/zathura { };
+  zathura = zathuraPkgs.zathuraWrapper;
+
+  zdns = callPackage ../tools/security/zdns { };
+
+  zerobin = callPackage ../applications/networking/zerobin { };
+
+  zeroc-ice = callPackage ../development/libraries/zeroc-ice {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  zeroc-ice-cpp11 = zeroc-ice.override { cpp11 = true; };
+
+  zeroc-ice-36 = callPackage ../development/libraries/zeroc-ice/3.6.nix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  zeronet = callPackage ../applications/networking/p2p/zeronet { };
+
+  zexy = callPackage ../applications/audio/pd-plugins/zexy {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  zgrab2 = callPackage ../tools/security/zgrab2 { };
+
+  zgrviewer = callPackage ../applications/graphics/zgrviewer { };
+
+  zgv = callPackage ../applications/graphics/zgv {
+    # Enable the below line for terminal display. Note
+    # that it requires sixel graphics compatible terminals like mlterm
+    # or xterm -ti 340
+    SDL = SDL_sixel;
+  };
+
+  zim = callPackage ../applications/office/zim { };
+
+  zita-ajbridge = callPackage ../applications/audio/zita-ajbridge { };
+
+  zita-at1 = callPackage ../applications/audio/zita-at1 { };
+
+  zita-njbridge = callPackage ../applications/audio/zita-njbridge { };
+
+  zola = callPackage ../applications/misc/zola {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  zombietrackergps = libsForQt5.callPackage ../applications/gis/zombietrackergps { };
+
+  zoom-us = callPackage ../applications/networking/instant-messengers/zoom-us { };
+
+  zotero = callPackage ../applications/office/zotero { };
+
+  zscroll = callPackage ../applications/misc/zscroll {};
+
+  zsteg = callPackage ../tools/security/zsteg { };
+
+  inherit (nodePackages) zx;
+
+  zynaddsubfx = zyn-fusion;
+
+  zynaddsubfx-fltk = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "fltk";
+  };
+
+  zynaddsubfx-ntk = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "ntk";
+  };
+
+  zyn-fusion = callPackage ../applications/audio/zynaddsubfx {
+    guiModule = "zest";
+  };
+
+  ### BLOCKCHAINS / CRYPTOCURRENCIES / WALLETS
+
+  aeon = callPackage ../applications/blockchains/aeon {
+    boost = boost172;
+  };
+
+  alfis = callPackage ../applications/blockchains/alfis {
+    inherit (darwin.apple_sdk.frameworks) Cocoa Security WebKit;
+    inherit (gnome) zenity;
+  };
+  alfis-nogui = alfis.override {
+    withGui = false;
+  };
+
+  balanceofsatoshis = nodePackages.balanceofsatoshis;
+
+  bitcoin  = libsForQt5.callPackage ../applications/blockchains/bitcoin {
+    boost = boost17x;
+    miniupnpc = miniupnpc_2;
+    withGui = true;
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  bitcoind = callPackage ../applications/blockchains/bitcoin {
+    boost = boost17x;
+    miniupnpc = miniupnpc_2;
+    withGui = false;
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  bitcoind-knots = callPackage ../applications/blockchains/bitcoin-knots {
+    boost = boost17x;
+    miniupnpc = miniupnpc_2;
+    withGui = false;
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  cgminer = callPackage ../applications/blockchains/cgminer { };
+
+  chia = callPackage ../applications/blockchains/chia { };
+
+  chia-plotter = callPackage ../applications/blockchains/chia-plotter { };
+
+  clightning = callPackage ../applications/blockchains/clightning { };
+
+  besu = callPackage ../applications/blockchains/besu { };
+
+  bitcoin-abc  = libsForQt5.callPackage ../applications/blockchains/bitcoin-abc {
+    boost = boost165;
+    withGui = true;
+  };
+  bitcoind-abc = callPackage ../applications/blockchains/bitcoin-abc {
+    boost = boost165;
+    mkDerivation = stdenv.mkDerivation;
+    withGui = false;
+  };
+
+  bitcoin-unlimited  = libsForQt514.callPackage ../applications/blockchains/bitcoin-unlimited {
+    inherit (darwin.apple_sdk.frameworks) Foundation ApplicationServices AppKit;
+    withGui = true;
+  };
+  bitcoind-unlimited = callPackage ../applications/blockchains/bitcoin-unlimited {
+    inherit (darwin.apple_sdk.frameworks) Foundation ApplicationServices AppKit;
+    withGui = false;
+  };
+
+  bitcoin-classic  = libsForQt514.callPackage ../applications/blockchains/bitcoin-classic {
+    boost = boost165;
+    withGui = true;
+  };
+  bitcoind-classic = callPackage ../applications/blockchains/bitcoin-classic {
+    boost = boost165;
+    withGui = false;
+  };
+
+  bitcoin-gold = libsForQt514.callPackage ../applications/blockchains/bitcoin-gold {
+    boost = boost165;
+    withGui = true;
+  };
+  bitcoind-gold = callPackage ../applications/blockchains/bitcoin-gold {
+    boost = boost165;
+    withGui = false;
+  };
+
+  btcpayserver = callPackage ../applications/blockchains/btcpayserver { };
+
+  charge-lnd = callPackage ../applications/blockchains/charge-lnd { };
+
+  cryptop = python3.pkgs.callPackage ../applications/blockchains/cryptop { };
+
+  dashpay = callPackage ../applications/blockchains/dashpay { };
+
+  dcrd = callPackage ../applications/blockchains/dcrd { };
+  dcrwallet = callPackage ../applications/blockchains/dcrwallet { };
+
+  digibyte = libsForQt514.callPackage ../applications/blockchains/digibyte {
+    withGui = true;
+    boost = boost170;
+  };
+  digibyted = callPackage ../applications/blockchains/digibyte {
+    withGui = false;
+    boost = boost170;
+  };
+
+  dogecoin  = callPackage ../applications/blockchains/dogecoin {
+    boost = boost165;
+    withGui = true;
+  };
+  dogecoind = callPackage ../applications/blockchains/dogecoin {
+    boost = boost165;
+    withGui = false;
+  };
+
+  eclair = callPackage ../applications/blockchains/eclair { };
+
+  electrs = callPackage ../applications/blockchains/electrs {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  elements  = libsForQt5.callPackage ../applications/blockchains/elements {
+    miniupnpc = miniupnpc_2;
+    withGui = true;
+    boost = boost175;
+  };
+  elementsd = callPackage ../applications/blockchains/elements {
+    miniupnpc = miniupnpc_2;
+    withGui = false;
+    boost = boost175;
+  };
+
+  ergo = callPackage ../applications/blockchains/ergo { };
+
+  erigon = callPackage ../applications/blockchains/erigon.nix { };
+
+  exodus = callPackage ../applications/blockchains/exodus { };
+
+  faraday = callPackage ../applications/blockchains/faraday { };
+
+  fulcrum = libsForQt5.callPackage ../applications/blockchains/fulcrum { };
+
+  go-ethereum = callPackage ../applications/blockchains/go-ethereum {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  groestlcoin  = libsForQt5.callPackage ../applications/blockchains/groestlcoin {
+    boost = boost17x;
+    withGui = true;
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  groestlcoind = callPackage ../applications/blockchains/groestlcoin {
+    boost = boost17x;
+    inherit (darwin) autoSignDarwinBinariesHook;
+  };
+
+  ledger_agent = with python3Packages; toPythonApplication ledger_agent;
+
+  ledger-live-desktop = callPackage ../applications/blockchains/ledger-live-desktop { };
+
+  lightning-loop = callPackage ../applications/blockchains/lightning-loop { };
+
+  lightning-pool = callPackage ../applications/blockchains/lightning-pool { };
+
+  litecoin  = libsForQt514.callPackage ../applications/blockchains/litecoin {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+  litecoind = litecoin.override { withGui = false; };
+
+  livedl = callPackage ../tools/misc/livedl { };
+
+  lnd = callPackage ../applications/blockchains/lnd { };
+
+  lndconnect = callPackage ../applications/blockchains/lndconnect { };
+
+  lndmanage = callPackage ../applications/blockchains/lndmanage { };
+
+  monero-cli = callPackage ../applications/blockchains/monero-cli {
+    inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC;
+  };
+
+  monero-gui = libsForQt5.callPackage ../applications/blockchains/monero-gui {
+    boost = boost17x;
+  };
+
+  oxen = callPackage ../applications/blockchains/oxen {
+    boost = boost17x;
+  };
+
+  masari = callPackage ../applications/blockchains/masari { boost = boost165; };
+
+  napari = with python3Packages; toPythonApplication napari;
+
+  nano-wallet = libsForQt5.callPackage ../applications/blockchains/nano-wallet {
+    boost = boost172;
+  };
+
+  namecoin  = callPackage ../applications/blockchains/namecoin { withGui = true; };
+  namecoind = callPackage ../applications/blockchains/namecoin { withGui = false; };
+
+  nbxplorer = callPackage ../applications/blockchains/nbxplorer { };
+
+  pivx = libsForQt5.callPackage ../applications/blockchains/pivx { withGui = true; };
+  pivxd = callPackage ../applications/blockchains/pivx {
+    withGui = false;
+    qtbase = null;
+    qttools = null;
+    wrapQtAppsHook = null;
+    autoreconfHook = buildPackages.autoreconfHook269;
+  };
+
+  ethabi = callPackage ../applications/blockchains/ethabi { };
+
+  pycoin = with python3Packages; toPythonApplication pycoin;
+
+  stellar-core = callPackage ../applications/blockchains/stellar-core { };
+
+  sumokoin = callPackage ../applications/blockchains/sumokoin { boost = boost165; };
+
+  solana-testnet = callPackage ../applications/blockchains/solana {
+    inherit (darwin.apple_sdk.frameworks) IOKit Security AppKit;
+  };
+
+  snarkos = callPackage ../applications/blockchains/snarkos {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  tessera = callPackage ../applications/blockchains/tessera { };
+
+  vertcoin  = libsForQt514.callPackage ../applications/blockchains/vertcoin {
+    boost = boost165;
+    withGui = true;
+  };
+  vertcoind = callPackage ../applications/blockchains/vertcoin {
+    boost = boost165;
+    withGui = false;
+  };
+
+  wasabiwallet = callPackage ../applications/blockchains/wasabiwallet { };
+
+  wasabibackend = callPackage ../applications/blockchains/wasabibackend { };
+
+  wownero = callPackage ../applications/blockchains/wownero {
+    boost = boost175;
+  };
+
+  zcash = callPackage ../applications/blockchains/zcash { };
+
+  lightwalletd = callPackage ../applications/blockchains/lightwalletd { };
+
+  openethereum = callPackage ../applications/blockchains/openethereum { };
+
+  polkadot = callPackage ../applications/blockchains/polkadot { };
+
+  particl-core = callPackage ../applications/blockchains/particl-core { miniupnpc = miniupnpc_2; };
+
+  quorum = callPackage ../applications/blockchains/quorum { };
+
+  saga = libsForQt5.callPackage ../applications/gis/saga {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  samplv1 = libsForQt5.callPackage ../applications/audio/samplv1 { };
+
+  scaleft = callPackage ../applications/networking/scaleft { };
+
+  scaleway-cli = callPackage ../tools/admin/scaleway-cli { };
+
+  beancount = with python3.pkgs; toPythonApplication beancount;
+
+  bean-add = callPackage ../applications/office/beancount/bean-add.nix { };
+
+  bench = haskell.lib.compose.justStaticExecutables haskellPackages.bench;
+
+  cri-o = callPackage ../applications/virtualization/cri-o/wrapper.nix { };
+  cri-o-unwrapped = callPackage ../applications/virtualization/cri-o { };
+
+  confd = callPackage ../tools/system/confd { };
+
+  conmon = callPackage ../applications/virtualization/conmon { };
+
+  digikam = libsForQt5.callPackage ../applications/graphics/digikam {};
+
+  drumkv1 = libsForQt5.callPackage ../applications/audio/drumkv1 { };
+
+  gshhg-gmt = callPackage ../applications/gis/gmt/gshhg.nix { };
+
+  eureka-editor = callPackage ../applications/misc/eureka-editor { };
+
+  eureka-ideas = callPackage ../applications/misc/eureka-ideas {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  fava = callPackage ../applications/office/fava {};
+
+  nux = callPackage ../tools/misc/nux { };
+
+  tts = callPackage ../tools/audio/tts { };
+
+  ### GAMES
+
+  _1oom = callPackage ../games/1oom { };
+
+  _2048-in-terminal = callPackage ../games/2048-in-terminal { };
+
+  _20kly = callPackage ../games/20kly { };
+
+  _90secondportraits = callPackage ../games/90secondportraits { love = love_0_10; };
+
+  ace-of-penguins = callPackage ../games/ace-of-penguins { };
+
+  among-sus = callPackage ../games/among-sus { };
+
+  antsimulator = callPackage ../games/antsimulator { };
+
+  augustus = callPackage ../games/augustus { };
+
+  ballerburg = callPackage ../games/ballerburg { } ;
+
+  blockattack = callPackage ../games/blockattack { } ;
+
+  colobot = callPackage ../games/colobot { };
+
+  doom-bcc = callPackage ../games/zdoom/bcc-git.nix { };
+
+  enigma = callPackage ../games/enigma { };
+
+  ezquake = callPackage ../games/ezquake { };
+
+  fmodex = callPackage ../games/zandronum/fmod.nix { };
+
+  freedroid = callPackage ../games/freedroid { };
+
+  freedroidrpg = callPackage ../games/freedroidrpg { };
+
+  freenukum = callPackage ../games/freenukum { };
+
+  gnome-hexgl = callPackage ../games/gnome-hexgl { };
+
+  gotypist = callPackage ../games/gotypist { };
+
+  heroic = callPackage ../games/heroic { };
+
+  julius = callPackage ../games/julius { };
+
+  jumpnbump = callPackage ../games/jumpnbump { };
+
+  keeperrl = callPackage ../games/keeperrl { };
+
+  lbreakout2 = callPackage ../games/lbreakout2 { };
+
+  ltris = callPackage ../games/ltris { };
+
+  lunar-client = callPackage ../games/lunar-client { };
+
+  maelstrom = callPackage ../games/maelstrom { };
+
+  mar1d = callPackage ../games/mar1d { } ;
+
+  meritous = callPackage ../games/meritous { };
+
+  oh-my-git = callPackage ../games/oh-my-git { };
+
+  opendune = callPackage ../games/opendune { };
+
+  openrct2 = callPackage ../games/openrct2 { };
+
+  osu-lazer = callPackage ../games/osu-lazer { };
+
+  pro-office-calculator = libsForQt5.callPackage ../games/pro-office-calculator { };
+
+  qgo = libsForQt5.callPackage ../games/qgo { };
+
+  rpg-cli = callPackage ../games/rpg-cli { };
+
+  runelite = callPackage ../games/runelite { };
+
+  runescape = callPackage ../games/runescape-launcher { };
+
+  sm64ex = callPackage ../games/sm64ex { };
+
+  snipes = callPackage ../games/snipes { };
+
+  unvanquished = callPackage ../games/unvanquished { };
+
+  xbill = callPackage ../games/xbill { };
+
+  xmage = callPackage ../games/xmage { };
+
+  abbaye-des-morts = callPackage ../games/abbaye-des-morts { };
+
+  abuse = callPackage ../games/abuse { };
+
+  adom = callPackage ../games/adom { };
+
+  airshipper = callPackage ../games/airshipper { };
+
+  airstrike = callPackage ../games/airstrike { };
+
+  alephone = callPackage ../games/alephone { };
+  alephone-durandal = callPackage ../games/alephone/durandal { };
+  alephone-eternal = callPackage ../games/alephone/eternal { };
+  alephone-evil = callPackage ../games/alephone/evil { };
+  alephone-infinity = callPackage ../games/alephone/infinity { };
+  alephone-marathon = callPackage ../games/alephone/marathon { };
+  alephone-pheonix = callPackage ../games/alephone/pheonix { };
+  alephone-red = callPackage ../games/alephone/red { };
+  alephone-rubicon-x = callPackage ../games/alephone/rubicon-x { };
+  alephone-pathways-into-darkness =
+    callPackage ../games/alephone/pathways-into-darkness { };
+
+  alienarena = callPackage ../games/alienarena { };
+
+  amoeba = callPackage ../games/amoeba { };
+  amoeba-data = callPackage ../games/amoeba/data.nix { };
+
+  andyetitmoves = callPackage ../games/andyetitmoves { };
+
+  angband = callPackage ../games/angband { };
+
+  anki = python3Packages.callPackage ../games/anki {
+    inherit (darwin.apple_sdk.frameworks) CoreAudio;
+  };
+  anki-bin = callPackage ../games/anki/bin.nix { buildFHSUserEnv = buildFHSUserEnvBubblewrap; };
+
+  armagetronad = callPackage ../games/armagetronad { };
+
+  armagetronad-dedicated = callPackage ../games/armagetronad { dedicatedServer = true; };
+
+  arena = callPackage ../games/arena { };
+
+  arx-libertatis = libsForQt5.callPackage ../games/arx-libertatis { };
+
+  asc = callPackage ../games/asc {
+    lua = lua5_1;
+    libsigcxx = libsigcxx12;
+    physfs = physfs_2;
+  };
+
+  assaultcube = callPackage ../games/assaultcube { };
+
+  astromenace = callPackage ../games/astromenace { };
+
+  atanks = callPackage ../games/atanks { };
+
+  azimuth = callPackage ../games/azimuth { };
+
+  ballAndPaddle = callPackage ../games/ball-and-paddle {
+    guile = guile_1_8;
+  };
+
+  banner = callPackage ../games/banner { };
+
+  bastet = callPackage ../games/bastet { };
+
+  black-hole-solver = callPackage ../games/black-hole-solver {
+    inherit (perlPackages) PathTiny;
+  };
+
+  blackshades = callPackage ../games/blackshades { };
+
+  blobby = callPackage ../games/blobby { };
+
+  blobwars = callPackage ../games/blobwars { };
+
+  boohu = callPackage ../games/boohu { };
+
+  braincurses = callPackage ../games/braincurses { };
+
+  brogue = callPackage ../games/brogue { };
+
+  brutalmaze = callPackage ../games/brutalmaze { };
+
+  bsdgames = callPackage ../games/bsdgames { };
+
+  btanks = callPackage ../games/btanks { };
+
+  bzflag = callPackage ../games/bzflag {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreServices;
+  };
+
+  cataclysmDDA = callPackage ../games/cataclysm-dda { };
+
+  cataclysm-dda = cataclysmDDA.stable.tiles;
+
+  cataclysm-dda-git = cataclysmDDA.git.tiles;
+
+  cbonsai = callPackage ../games/cbonsai { };
+
+  cdogs-sdl = callPackage ../games/cdogs-sdl { };
+
+  cgoban = callPackage ../games/cgoban { };
+
+  chessdb = callPackage ../games/chessdb { };
+
+  chessx = libsForQt5.callPackage ../games/chessx { };
+
+  chiaki = libsForQt5.callPackage ../games/chiaki { };
+
+  chromium-bsu = callPackage ../games/chromium-bsu { };
+
+  chocolateDoom = callPackage ../games/chocolate-doom { };
+
+  clonehero-unwrapped = callPackage ../games/clonehero { };
+
+  clonehero = callPackage ../games/clonehero/fhs-wrapper.nix { };
+
+  crispyDoom = callPackage ../games/crispy-doom { };
+
+  vintagestory = callPackage ../games/vintagestory { };
+
+  ckan = callPackage ../games/ckan { };
+
+  cockatrice = libsForQt5.callPackage ../games/cockatrice {  };
+
+  commandergenius = callPackage ../games/commandergenius { };
+
+  construoBase = lowPrio (callPackage ../games/construo {
+    libGL = null;
+    libGLU = null;
+    freeglut = null;
+  });
+
+  construo = construoBase.override {
+    inherit libGL libGLU freeglut;
+  };
+
+  crack_attack = callPackage ../games/crack-attack { };
+
+  crawlTiles = callPackage ../games/crawl {
+    tileMode = true;
+  };
+
+  crawl = callPackage ../games/crawl { };
+
+  inherit (import ../games/crossfire pkgs)
+    crossfire-server crossfire-arch crossfire-maps crossfire-client;
+
+  crrcsim = callPackage ../games/crrcsim { };
+
+  curseofwar = callPackage ../games/curseofwar { SDL = null; };
+  curseofwar-sdl = callPackage ../games/curseofwar { ncurses = null; };
+
+  cutemaze = libsForQt5.callPackage ../games/cutemaze { };
+
+  cuyo = callPackage ../games/cuyo { };
+
+  inherit (import ../games/deliantra pkgs)
+    deliantra-server deliantra-arch deliantra-maps deliantra-data;
+
+  ddnet = callPackage ../games/ddnet { };
+
+  devilutionx = callPackage ../games/devilutionx {
+    SDL2 = SDL2.override {
+      withStatic = true;
+    };
+  };
+
+  dhewm3 = callPackage ../games/dhewm3 { };
+
+  domination = callPackage ../games/domination { };
+
+  duckmarines = callPackage ../games/duckmarines { love = love_0_10; };
+
+  dwarf-fortress-packages = recurseIntoAttrs (callPackage ../games/dwarf-fortress { });
+
+  dwarf-fortress = dwarf-fortress-packages.dwarf-fortress;
+
+  dwarf-therapist = dwarf-fortress-packages.dwarf-therapist;
+
+  dxx-rebirth = callPackage ../games/dxx-rebirth {
+    physfs = physfs_2;
+  };
+
+  inherit (callPackages ../games/dxx-rebirth/assets.nix { })
+    descent1-assets
+    descent2-assets;
+
+  inherit (callPackages ../games/dxx-rebirth/full.nix { })
+    d1x-rebirth-full
+    d2x-rebirth-full;
+
+  easyrpg-player = callPackage ../games/easyrpg-player { };
+
+  eboard = callPackage ../games/eboard { };
+
+  ecwolf = callPackage ../games/ecwolf { };
+
+  eduke32 = callPackage ../games/eduke32 {
+    inherit (darwin.apple_sdk.frameworks) AGL Cocoa GLUT OpenGL;
+  };
+
+  egoboo = callPackage ../games/egoboo { };
+
+  eidolon = callPackage ../games/eidolon { };
+
+  EmptyEpsilon = callPackage ../games/empty-epsilon { };
+
+  endgame-singularity = callPackage ../games/endgame-singularity { };
+
+  endless-sky = callPackage ../games/endless-sky { };
+
+  enyo-doom = libsForQt5.callPackage ../games/enyo-doom { };
+
+  eternity = callPackage ../games/eternity-engine { };
+
+  extremetuxracer = callPackage ../games/extremetuxracer {
+    libpng = libpng12;
+  };
+
+  exult = callPackage ../games/exult { };
+
+  flare = callPackage ../games/flare {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  fltrator = callPackage ../games/fltrator {
+    fltk = fltk-minimal;
+  };
+
+  factorio = callPackage ../games/factorio { releaseType = "alpha"; };
+
+  factorio-experimental = factorio.override { releaseType = "alpha"; experimental = true; };
+
+  factorio-headless = factorio.override { releaseType = "headless"; };
+
+  factorio-headless-experimental = factorio.override { releaseType = "headless"; experimental = true; };
+
+  factorio-demo = factorio.override { releaseType = "demo"; };
+
+  factorio-mods = callPackage ../games/factorio/mods.nix { };
+
+  factorio-utils = callPackage ../games/factorio/utils.nix { };
+
+  fairymax = callPackage ../games/fairymax { };
+
+  fheroes2 = callPackage ../games/fheroes2 { };
+
+  fish-fillets-ng = callPackage ../games/fish-fillets-ng { };
+
+  fishfight = callPackage ../games/fishfight {
+    inherit (xorg) libX11 libXi;
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox Cocoa CoreAudio OpenGL;
+  };
+
+  flightgear = libsForQt5.callPackage ../games/flightgear { };
+
+  flock = callPackage ../development/tools/flock { };
+
+  freecell-solver = callPackage ../games/freecell-solver { };
+
+  freeciv = callPackage ../games/freeciv {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    qt5 = qt514;
+  };
+
+  freeciv_gtk = freeciv.override {
+    gtkClient = true;
+    sdlClient = false;
+  };
+
+  freeciv_qt = freeciv.override {
+    qtClient = true;
+    sdlClient = false;
+  };
+
+  freedink = callPackage ../games/freedink { };
+
+  freeorion = callPackage ../games/freeorion { };
+
+  freesweep = callPackage ../games/freesweep { };
+
+  frotz = callPackage ../games/frotz { };
+
+  frogatto = callPackage ../games/frogatto { };
+
+  frozen-bubble = callPackage ../games/frozen-bubble { };
+
+  fsg = callPackage ../games/fsg {
+    wxGTK = wxGTK28.override {
+      unicode = false;
+    };
+  };
+
+  galaxis = callPackage ../games/galaxis { };
+
+  gambatte = callPackage ../games/gambatte { };
+
+  garden-of-coloured-lights = callPackage ../games/garden-of-coloured-lights { allegro = allegro4; };
+
+  gargoyle = callPackage ../games/gargoyle {
+    inherit (darwin) cctools;
+  };
+
+  gav = callPackage ../games/gav { };
+
+  gcs = callPackage ../games/gcs { };
+
+  gcompris = libsForQt5.callPackage ../games/gcompris { };
+
+  gemrb = callPackage ../games/gemrb { };
+
+  gimx = callPackage ../games/gimx { };
+
+  gl117 = callPackage ../games/gl-117 { };
+
+  globulation2 = callPackage ../games/globulation {
+    boost = boost155;
+  };
+
+  gltron = callPackage ../games/gltron { };
+
+  gl-gsync-demo = callPackage ../games/gl-gsync-demo {
+    libXNVCtrl = linuxPackages.nvidia_x11.settings.libXNVCtrl;
+  };
+
+  gmad = callPackage ../games/gmad { };
+
+  gnonograms = callPackage ../games/gnonograms { };
+
+  gnubg = callPackage ../games/gnubg { };
+
+  gnuchess = callPackage ../games/gnuchess { };
+
+  gnugo = callPackage ../games/gnugo { };
+
+  gnujump = callPackage ../games/gnujump { };
+
+  gnushogi = callPackage ../games/gnushogi { };
+
+  gogui = callPackage ../games/gogui { };
+
+  gscrabble = python3Packages.callPackage ../games/gscrabble { };
+
+  gshogi = python3Packages.callPackage ../games/gshogi { };
+
+  qtads = qt5.callPackage ../games/qtads { };
+
+  grapejuice = callPackage ../games/grapejuice {
+    wine = wineWowPackages.unstable;
+  };
+
+  gtetrinet = callPackage ../games/gtetrinet {
+    inherit (gnome2) GConf libgnome libgnomeui;
+  };
+
+  gtypist = callPackage ../games/gtypist { };
+
+  gweled = callPackage ../games/gweled { };
+
+  gzdoom = callPackage ../games/gzdoom { };
+
+  harmonist = callPackage ../games/harmonist { };
+
+  hedgewars = libsForQt514.callPackage ../games/hedgewars {
+    inherit (haskellPackages) ghcWithPackages;
+  };
+
+  holdingnuts = callPackage ../games/holdingnuts { };
+
+  hyperrogue = callPackage ../games/hyperrogue { };
+
+  icbm3d = callPackage ../games/icbm3d { };
+
+  ingen = callPackage ../applications/audio/ingen { };
+
+  ideogram = callPackage ../applications/graphics/ideogram { };
+
+  instead = callPackage ../games/instead { };
+
+  instead-launcher = callPackage ../games/instead-launcher { };
+
+  iortcw = callPackage ../games/iortcw { };
+  # used as base package for iortcw forks
+  iortcw_sp = callPackage ../games/iortcw/sp.nix { };
+
+  ivan = callPackage ../games/ivan { };
+
+  ja2-stracciatella = callPackage ../games/ja2-stracciatella {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
+
+  katago = callPackage ../games/katago { };
+
+  katagoWithCuda = katago.override {
+    enableCuda = true;
+    cudnn = cudnn_8_3_cudatoolkit_11;
+    cudatoolkit = cudatoolkit_11;
+  };
+
+  katagoCPU = katago.override {
+    enableGPU = false;
+  };
+
+  klavaro = callPackage ../games/klavaro { };
+
+  kobodeluxe = callPackage ../games/kobodeluxe { };
+
+  koboredux = callPackage ../games/koboredux { };
+
+  koboredux-free = callPackage ../games/koboredux {
+    useProprietaryAssets = false;
+  };
+
+  leela-zero = libsForQt5.callPackage ../games/leela-zero { };
+
+  legendary-gl = python38Packages.callPackage ../games/legendary-gl { };
+
+  left4gore-bin = callPackage ../games/left4gore { };
+
+  lgogdownloader = callPackage ../games/lgogdownloader { };
+
+  liberal-crime-squad = callPackage ../games/liberal-crime-squad { };
+
+  liberation-circuit = callPackage ../games/liberation-circuit { };
+
+  lincity = callPackage ../games/lincity { };
+
+  lincity_ng = callPackage ../games/lincity/ng.nix {
+    # https://github.com/lincity-ng/lincity-ng/issues/25
+    physfs = physfs_2;
+  };
+
+  liquidwar = callPackage ../games/liquidwar {
+    guile = guile_2_0;
+  };
+
+  liquidwar5 = callPackage ../games/liquidwar/5.nix {
+  };
+
+  lugaru = callPackage ../games/lugaru { };
+
+  macopix = callPackage ../games/macopix {
+    gtk = gtk2;
+  };
+
+  mari0 = callPackage ../games/mari0 { };
+
+  manaplus = callPackage ../games/manaplus { };
+
+  mars = callPackage ../games/mars { };
+
+  megaglest = callPackage ../games/megaglest { };
+
+  methane = callPackage ../games/methane { };
+
+  mindustry = callPackage ../games/mindustry {
+    jdk = adoptopenjdk-hotspot-bin-15;
+  };
+  mindustry-wayland = callPackage ../games/mindustry {
+    jdk = adoptopenjdk-hotspot-bin-15;
+    glew = glew-egl;
+  };
+
+  mindustry-server = callPackage ../games/mindustry {
+    jdk = adoptopenjdk-hotspot-bin-15;
+    enableClient = false;
+    enableServer = true;
+  };
+
+  minecraft = callPackage ../games/minecraft { };
+
+  minecraftServers = import ../games/minecraft-servers { inherit callPackage lib javaPackages; };
+  minecraft-server = minecraftServers.vanilla; # backwards compatibility
+
+  moon-buggy = callPackage ../games/moon-buggy { };
+
+  inherit (callPackages ../games/minetest {
+    inherit (darwin) libiconv;
+    inherit (darwin.apple_sdk.frameworks) OpenGL OpenAL Carbon Cocoa Kernel;
+  })
+    minetestclient_5 minetestserver_5;
+
+  minetest = minetestclient;
+  minetestclient = minetestclient_5;
+  minetestserver = minetestserver_5;
+
+  mnemosyne = callPackage ../games/mnemosyne {
+    python = python3;
+  };
+
+  mrrescue = callPackage ../games/mrrescue { };
+
+  mudlet = libsForQt5.callPackage ../games/mudlet {
+    lua = lua5_1;
+  };
+
+  blightmud = callPackage ../games/blightmud { };
+
+  blightmud-tts = callPackage ../games/blightmud { withTTS = true; };
+
+  n2048 = callPackage ../games/n2048 { };
+
+  naev = callPackage ../games/naev { };
+
+  nanosaur = callPackage ../games/nanosaur { };
+
+  nethack = callPackage ../games/nethack { };
+
+  nethack-qt = callPackage ../games/nethack {
+    qtMode = true;
+    stdenv = gccStdenv;
+  };
+
+  nethack-x11 = callPackage ../games/nethack { x11Mode = true; };
+
+  netris = callPackage ../games/netris { };
+
+  neverball = callPackage ../games/neverball { };
+
+  nexuiz = callPackage ../games/nexuiz { };
+
+  ninvaders = callPackage ../games/ninvaders { };
+
+  njam = callPackage ../games/njam { };
+
+  npush = callPackage ../games/npush { };
+  run-npush = callPackage ../games/npush/run.nix { };
+
+  newtonwars = callPackage ../games/newtonwars { };
+
+  nudoku = callPackage ../games/nudoku { };
+
+  nxengine-evo = callPackage ../games/nxengine-evo { };
+
+  odamex = callPackage ../games/odamex { };
+
+  oilrush = callPackage ../games/oilrush { };
+
+  onscripter-en = callPackage ../games/onscripter-en { };
+
+  openarena = callPackage ../games/openarena { };
+
+  opendungeons = callPackage ../games/opendungeons {
+    ogre = ogre1_10;
+  };
+
+  openlierox = callPackage ../games/openlierox { };
+
+  openclonk = callPackage ../games/openclonk { };
+
+  openjk = callPackage ../games/openjk { };
+
+  openmw = libsForQt5.callPackage ../games/openmw { };
+
+  openmw-tes3mp = libsForQt5.callPackage ../games/openmw/tes3mp.nix { };
+
+  portmod = callPackage ../games/portmod { };
+
+  tetrio-desktop = callPackage ../games/tetrio-desktop { };
+
+  tr-patcher = callPackage ../games/tr-patcher { };
+
+  tes3cmd = callPackage ../games/tes3cmd { };
+
+  otto-matic = callPackage ../games/otto-matic { };
+
+  openraPackages = import ../games/openra pkgs;
+
+  openra = openraPackages.engines.release;
+
+  openrw = callPackage ../games/openrw {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenAL;
+  };
+
+  openspades = callPackage ../games/openspades {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  openttd = callPackage ../games/openttd {
+    zlib = zlib.override {
+      static = true;
+    };
+  };
+  openttd-jgrpp = callPackage ../games/openttd/jgrpp.nix {
+    zlib = zlib.override {
+      static = true;
+    };
+  };
+  openttd-grfcodec = callPackage ../games/openttd/grfcodec.nix { };
+  openttd-nml = callPackage ../games/openttd/nml.nix { };
+
+  opentyrian = callPackage ../games/opentyrian { };
+
+  openxcom = callPackage ../games/openxcom { };
+
+  openxray = callPackage ../games/openxray { };
+
+  orthorobot = callPackage ../games/orthorobot { };
+
+  pacvim = callPackage ../games/pacvim { };
+
+  papermc = callPackage ../games/papermc { };
+
+  pentobi = libsForQt5.callPackage ../games/pentobi { };
+
+  performous = callPackage ../games/performous {
+    boost = boost166;
+  };
+
+  pinball = callPackage ../games/pinball { };
+
+  pingus = callPackage ../games/pingus { };
+
+  pioneer = callPackage ../games/pioneer { };
+
+  pioneers = callPackage ../games/pioneers { };
+
+  planetary_annihilation = callPackage ../games/planetaryannihilation { };
+
+  polymc = libsForQt5.callPackage ../games/polymc { };
+
+  pong3d = callPackage ../games/pong3d { };
+
+  pokerth = libsForQt5.callPackage ../games/pokerth {
+    boost = boost16x;
+  };
+
+  pokerth-server = libsForQt5.callPackage ../games/pokerth {
+    boost = boost16x;
+    target = "server";
+  };
+
+  powermanga = callPackage ../games/powermanga { };
+
+  prboom = callPackage ../games/prboom { };
+
+  pysolfc = python3Packages.callPackage ../games/pysolfc { };
+
+  qqwing = callPackage ../games/qqwing { };
+
+  quake3wrapper = callPackage ../games/quake3/wrapper { };
+
+  quake3demo = quake3wrapper {
+    name = "quake3-demo-${lib.getVersion quake3demodata}";
+    description = "Demo of Quake 3 Arena, a classic first-person shooter";
+    paks = [ quake3pointrelease quake3demodata ];
+  };
+
+  quake3demodata = callPackage ../games/quake3/content/demo.nix { };
+
+  quake3pointrelease = callPackage ../games/quake3/content/pointrelease.nix { };
+
+  quake3hires = callPackage ../games/quake3/content/hires.nix { };
+
+  quakespasm = callPackage ../games/quakespasm {
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreAudio CoreFoundation IOKit OpenGL;
+  };
+  vkquake = callPackage ../games/quakespasm/vulkan.nix { };
+
+  ioquake3 = callPackage ../games/quake3/ioquake { };
+  quake3e = callPackage ../games/quake3/quake3e { };
+
+  quantumminigolf = callPackage ../games/quantumminigolf { };
+
+  r2mod_cli = callPackage ../games/r2mod_cli { };
+
+  racer = callPackage ../games/racer { };
+
+  randtype = callPackage ../games/randtype { };
+
+  redeclipse = callPackage ../games/redeclipse { };
+
+  rftg = callPackage ../games/rftg { };
+
+  rigsofrods = callPackage ../games/rigsofrods {
+    angelscript = angelscript_2_22;
+    ogre = ogre1_9;
+    ogrepaged = ogrepaged.override {
+      ogre = ogre1_9;
+    };
+    mygui = mygui.override {
+      withOgre = true;
+    };
+  };
+
+  riko4 = callPackage ../games/riko4 { };
+
+  rili = callPackage ../games/rili { };
+
+  rogue = callPackage ../games/rogue {
+    ncurses = ncurses5;
+  };
+
+  robotfindskitten = callPackage ../games/robotfindskitten { };
+
+  rocksndiamonds = callPackage ../games/rocksndiamonds { };
+
+  rott = callPackage ../games/rott { };
+
+  rott-shareware = rott.override {
+    buildShareware = true;
+  };
+
+  rrootage = callPackage ../games/rrootage { };
+
+  space-cadet-pinball = callPackage ../games/space-cadet-pinball { };
+
+  starsector = callPackage ../games/starsector {
+    openjdk = openjdk8;
+  };
+
+  sauerbraten = callPackage ../games/sauerbraten { };
+
+  scid = callPackage ../games/scid {
+    tcl = tcl-8_5;
+    tk = tk-8_5;
+  };
+
+  scid-vs-pc = callPackage ../games/scid-vs-pc {
+    tcl = tcl-8_6;
+    tk = tk-8_6;
+  };
+
+  scummvm = callPackage ../games/scummvm {
+    inherit (darwin) cctools;
+    inherit (darwin.apple_sdk.frameworks) Cocoa AudioToolbox Carbon CoreMIDI AudioUnit;
+  };
+
+  inherit (callPackage ../games/scummvm/games.nix { })
+    beneath-a-steel-sky
+    broken-sword-25
+    drascula-the-vampire-strikes-back
+    dreamweb
+    flight-of-the-amazon-queen
+    lure-of-the-temptress;
+
+  scorched3d = callPackage ../games/scorched3d { };
+
+  scrolls = callPackage ../games/scrolls { };
+
+  service-wrapper = callPackage ../os-specific/linux/service-wrapper { };
+
+  sfrotz = callPackage ../games/sfrotz { };
+
+  sgtpuzzles = callPackage ../games/sgt-puzzles { };
+
+  shattered-pixel-dungeon = callPackage ../games/shattered-pixel-dungeon { };
+
+  shticker-book-unwritten = callPackage ../games/shticker-book-unwritten { };
+
+  sienna = callPackage ../games/sienna { love = love_0_10; };
+
+  sil = callPackage ../games/sil { };
+
+  simutrans = callPackage ../games/simutrans { };
+  # get binaries without data built by Hydra
+  simutrans_binaries = lowPrio simutrans.binaries;
+
+  snake4 = callPackage ../games/snake4 { };
+
+  soi = callPackage ../games/soi {
+    lua = lua5_1;
+  };
+
+  # solarus and solarus-quest-editor must use the same version of Qt.
+  solarus = libsForQt5.callPackage ../games/solarus { };
+  solarus-quest-editor = libsForQt5.callPackage ../development/tools/solarus-quest-editor { };
+
+  soldat-unstable = callPackage ../games/soldat-unstable { };
+
+  sollya = callPackage ../development/interpreters/sollya { };
+
+  # You still can override by passing more arguments.
+  space-orbit = callPackage ../games/space-orbit { };
+
+  spring = callPackage ../games/spring {
+    asciidoc = asciidoc-full;
+    boost = boost155;
+  };
+
+  springLobby = callPackage ../games/spring/springlobby.nix { };
+
+  ssl-cert-check = callPackage ../tools/admin/ssl-cert-check { };
+
+  stardust = callPackage ../games/stardust { };
+
+  starspace = callPackage ../applications/science/machine-learning/starspace { };
+
+  stockfish = callPackage ../games/stockfish { };
+
+  steamPackages = dontRecurseIntoAttrs (callPackage ../games/steam {
+    buildFHSUserEnv = buildFHSUserEnvBubblewrap;
+  });
+
+  steam = steamPackages.steam-fhsenv;
+
+  steam-run = steam.run;
+
+  steam-tui = callPackage ../games/steam-tui { };
+
+  steamcmd = steamPackages.steamcmd;
+
+  steam-acf = callPackage ../tools/games/steam-acf { };
+
+  protontricks = python3Packages.callPackage ../tools/package-management/protontricks {
+    inherit winetricks steam-run yad;
+  };
+
+  protonup = with python3Packages; toPythonApplication protonup;
+
+  sdlpop = callPackage ../games/sdlpop { };
+
+  stepmania = callPackage ../games/stepmania { };
+
+  streamlit = python3Packages.callPackage ../applications/science/machine-learning/streamlit { };
+
+  stt = callPackage ../tools/audio/stt { };
+
+  stuntrally = callPackage ../games/stuntrally {
+    ogre = ogre1_9;
+    mygui = mygui.override {
+      withOgre = true;
+    };
+  };
+
+  superTux = callPackage ../games/supertux { };
+
+  superTuxKart = callPackage ../games/super-tux-kart {
+    inherit (darwin.apple_sdk.frameworks) Cocoa IOKit OpenAL;
+  };
+
+  synthv1 = libsForQt5.callPackage ../applications/audio/synthv1 { };
+
+  snis = callPackage ../games/snis { };
+
+  system-syzygy = callPackage ../games/system-syzygy { };
+
+  t4kcommon = callPackage ../games/t4kcommon { };
+
+  taisei = callPackage ../games/taisei { };
+
+  tcl2048 = callPackage ../games/tcl2048 { };
+
+  the-legend-of-edgar = callPackage ../games/the-legend-of-edgar { };
+
+  the-powder-toy = callPackage ../games/the-powder-toy {
+    lua = lua5_1;
+  };
+
+  tbe = libsForQt5.callPackage ../games/the-butterfly-effect { };
+
+  tecnoballz = callPackage ../games/tecnoballz { };
+
+  teetertorture = callPackage ../games/teetertorture { };
+
+  teeworlds = callPackage ../games/teeworlds { };
+
+  tengine = callPackage ../servers/http/tengine {
+    modules = with nginxModules; [ rtmp dav moreheaders modsecurity-nginx ];
+  };
+
+  tennix = callPackage ../games/tennix { };
+
+  terraria-server = callPackage ../games/terraria-server { };
+
+  tibia = pkgsi686Linux.callPackage ../games/tibia { };
+
+  tintin = callPackage ../games/tintin { };
+
+  tinyfugue = callPackage ../games/tinyfugue { };
+
+  tome2 = callPackage ../games/tome2 { };
+
+  tome4 = callPackage ../games/tome4 { };
+
+  toppler = callPackage ../games/toppler { };
+
+  torus-trooper = callPackage ../games/torus-trooper { };
+
+  trackballs = callPackage ../games/trackballs { };
+
+  tremulous = callPackage ../games/tremulous { };
+
+  tumiki-fighters = callPackage ../games/tumiki-fighters { };
+
+  tuxpaint = callPackage ../games/tuxpaint { };
+
+  tuxtype = callPackage ../games/tuxtype { };
+
+  tworld2 = callPackage ../games/tworld2 { };
+
+  speed_dreams = callPackage ../games/speed-dreams {
+    # Torcs wants to make shared libraries linked with plib libraries (it provides static).
+    # i686 is the only platform I know than can do that linking without plib built with -fPIC
+    libpng = libpng12;
+  };
+
+  torcs = callPackage ../games/torcs { };
+
+  trigger = callPackage ../games/trigger { };
+
+  typespeed = callPackage ../games/typespeed { };
+
+  uchess = callPackage ../games/uchess { };
+
+  udig = callPackage ../applications/gis/udig { };
+
+  ufoai = callPackage ../games/ufoai { };
+
+  uhexen2 = callPackage ../games/uhexen2 { };
+
+  ultimatestunts = callPackage ../games/ultimatestunts { };
+
+  ultrastar-creator = libsForQt5.callPackage ../tools/misc/ultrastar-creator { };
+
+  ultrastar-manager = libsForQt5.callPackage ../tools/misc/ultrastar-manager { };
+
+  ultrastardx = callPackage ../games/ultrastardx { };
+
+  unciv = callPackage ../games/unciv { };
+
+  unnethack = callPackage ../games/unnethack { };
+
+  uqm = callPackage ../games/uqm { };
+
+  urbanterror = callPackage ../games/urbanterror { };
+
+  ue4 = callPackage ../games/ue4 { };
+
+  ue4demos = recurseIntoAttrs (callPackage ../games/ue4demos { });
+
+  ut2004Packages = dontRecurseIntoAttrs (callPackage ../games/ut2004 { });
+
+  ut2004demo = res.ut2004Packages.ut2004 [ res.ut2004Packages.ut2004-demo ];
+
+  vassal = callPackage ../games/vassal { };
+
+  vdrift = callPackage ../games/vdrift { };
+
+  # To ensure vdrift's code is built on hydra
+  vdrift-bin = vdrift.bin;
+
+  vectoroids = callPackage ../games/vectoroids { };
+
+  vessel = pkgsi686Linux.callPackage ../games/vessel { };
+
+  vitetris = callPackage ../games/vitetris { };
+
+  vms-empire = callPackage ../games/vms-empire { };
+
+  voxelands = callPackage ../games/voxelands {
+    libpng = libpng12;
+  };
+
+  wargus = callPackage ../games/wargus { };
+
+  warmux = callPackage ../games/warmux { };
+
+  warsow-engine = callPackage ../games/warsow/engine.nix { };
+
+  warsow = callPackage ../games/warsow { };
+
+  warzone2100 = callPackage ../games/warzone2100 { };
+
+  wesnoth = callPackage ../games/wesnoth {
+    inherit (darwin.apple_sdk.frameworks) Cocoa Foundation;
+  };
+
+  wesnoth-dev = wesnoth;
+
+  widelands = callPackage ../games/widelands { };
+
+  worldofgoo = callPackage ../games/worldofgoo { };
+
+  xboard =  callPackage ../games/xboard { };
+
+  xbomb = callPackage ../games/xbomb { };
+
+  xconq = callPackage ../games/xconq {
+    tcl = tcl-8_5;
+    tk = tk-8_5;
+  };
+
+  xcowsay = callPackage ../games/xcowsay { };
+
+  xjump = callPackage ../games/xjump { };
+  # TODO: the corresponding nix file is missing
+  # xracer = callPackage ../games/xracer { };
+
+  xmoto = callPackage ../games/xmoto { };
+
+
+  inherit (callPackage ../games/xonotic { })
+    xonotic-data
+    xonotic;
+
+  xonotic-glx = (callPackage ../games/xonotic {
+    withSDL = false;
+    withGLX = true;
+  }).xonotic;
+
+  xonotic-dedicated = (callPackage ../games/xonotic {
+    withSDL = false;
+    withDedicated = true;
+  }).xonotic;
+
+  xonotic-sdl = xonotic;
+  xonotic-sdl-unwrapped = xonotic-sdl.xonotic-unwrapped;
+  xonotic-glx-unwrapped = xonotic-glx.xonotic-unwrapped;
+  xonotic-dedicated-unwrapped = xonotic-dedicated.xonotic-unwrapped;
+
+
+  xpilot-ng = callPackage ../games/xpilot { };
+  bloodspilot-server = callPackage ../games/xpilot/bloodspilot-server.nix { };
+  bloodspilot-client = callPackage ../games/xpilot/bloodspilot-client.nix { };
+
+  xskat = callPackage ../games/xskat { };
+
+  xsnow = callPackage ../games/xsnow { };
+
+  xsok = callPackage ../games/xsok { };
+
+  xsokoban = callPackage ../games/xsokoban { };
+
+  xtris = callPackage ../games/xtris { };
+
+  inherit (callPackage ../games/quake2/yquake2 {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenAL;
+  })
+    yquake2
+    yquake2-ctf
+    yquake2-ground-zero
+    yquake2-the-reckoning
+    yquake2-all-games;
+
+  zandronum = callPackage ../games/zandronum { };
+
+  zandronum-server = zandronum.override {
+    serverOnly = true;
+  };
+
+  zangband = callPackage ../games/zangband { };
+
+  zaz = callPackage ../games/zaz { };
+
+  zdbsp = callPackage ../games/zdoom/zdbsp.nix { };
+
+  zdoom = callPackage ../games/zdoom { };
+
+  zod = callPackage ../games/zod { };
+
+  zoom = callPackage ../games/zoom { };
+
+  keen4 = callPackage ../games/keen4 { };
+
+  zeroadPackages = recurseIntoAttrs (callPackage ../games/0ad {
+    wxGTK = wxGTK31;
+  });
+
+  zeroad = zeroadPackages.zeroad;
+
+  _0verkill = callPackage ../games/0verkill { };
+
+  _7kaa = callPackage ../games/7kaa { };
+
+  hhexen = callPackage ../games/hhexen { };
+
+  wyvern = callPackage ../games/wyvern { };
+
+  ### DESKTOP ENVIRONMENTS
+
+  cdesktopenv = callPackage ../desktops/cdesktopenv { };
+
+  cinnamon = recurseIntoAttrs (callPackage ../desktops/cinnamon { });
+
+  inherit (cinnamon) mint-x-icons mint-y-icons;
+
+  enlightenment = recurseIntoAttrs (callPackage ../desktops/enlightenment {
+    callPackage = newScope enlightenment;
+  });
+
+  gnome2 = recurseIntoAttrs (callPackage ../desktops/gnome-2 { });
+
+  gnome = recurseIntoAttrs (callPackage ../desktops/gnome { });
+
+  inherit (callPackage ../desktops/gnome/extensions { })
+    gnomeExtensions
+    gnome38Extensions
+    gnome40Extensions
+    gnome41Extensions
+  ;
+
+  gnome-connections = callPackage ../desktops/gnome/apps/gnome-connections { };
+
+  gnome-text-editor = callPackage ../desktops/gnome/apps/gnome-text-editor { };
+
+  gnome-tour = callPackage ../desktops/gnome/core/gnome-tour { };
+
+  hsetroot = callPackage ../tools/X11/hsetroot { };
+
+  imwheel = callPackage ../tools/X11/imwheel { };
+
+  kakasi = callPackage ../tools/text/kakasi { };
+
+  lumina = recurseIntoAttrs (callPackage ../desktops/lumina { });
+
+  lxqt = recurseIntoAttrs (import ../desktops/lxqt {
+    inherit pkgs;
+    inherit (lib) makeScope;
+    inherit qt5 libsForQt5;
+  });
+
+  mate = recurseIntoAttrs (callPackage ../desktops/mate { });
+
+  pantheon = recurseIntoAttrs (callPackage ../desktops/pantheon { });
+
+  plasma-applet-volumewin7mixer = libsForQt5.callPackage ../applications/misc/plasma-applet-volumewin7mixer { };
+
+  plasma-theme-switcher = libsForQt5.callPackage ../applications/misc/plasma-theme-switcher {};
+
+  plasma-pass = libsForQt5.callPackage ../tools/security/plasma-pass { };
+
+  inherit (callPackages ../applications/misc/redshift {
+    inherit (python3Packages) python pygobject3 pyxdg wrapPython;
+    inherit (darwin.apple_sdk.frameworks) CoreLocation ApplicationServices Foundation Cocoa;
+    geoclue = geoclue2;
+  }) redshift gammastep;
+
+  redshift-plasma-applet = libsForQt5.callPackage ../applications/misc/redshift-plasma-applet { };
+
+  latte-dock = libsForQt5.callPackage ../applications/misc/latte-dock { };
+
+  gnome-themes-extra = gnome.gnome-themes-extra;
+
+  rox-filer = callPackage ../desktops/rox/rox-filer {
+    gtk = gtk2;
+  };
+
+  arcan = recurseIntoAttrs (callPackage ../desktops/arcan {
+    callPackage = newScope arcan;
+  });
+
+  xfce = recurseIntoAttrs (callPackage ../desktops/xfce { });
+
+  xrandr-invert-colors = callPackage ../applications/misc/xrandr-invert-colors { };
+
+  ### SCIENCE/CHEMISTY
+
+  avogadro = callPackage ../applications/science/chemistry/avogadro {
+    openbabel = openbabel2;
+    eigen = eigen2;
+  };
+
+  avogadrolibs = libsForQt5.callPackage ../development/libraries/science/chemistry/avogadrolibs { };
+
+  molequeue = libsForQt5.callPackage ../development/libraries/science/chemistry/molequeue { };
+
+  avogadro2 = libsForQt5.callPackage ../applications/science/chemistry/avogadro2 { };
+
+  chemtool = callPackage ../applications/science/chemistry/chemtool { };
+
+  cp2k = callPackage ../applications/science/chemistry/cp2k { };
+
+  d-seams = callPackage ../applications/science/chemistry/d-seams {};
+
+  ergoscf = callPackage ../applications/science/chemistry/ergoscf { };
+
+  gwyddion = callPackage ../applications/science/chemistry/gwyddion {};
+
+  jmol = callPackage ../applications/science/chemistry/jmol {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  marvin = callPackage ../applications/science/chemistry/marvin { };
+
+  molden = callPackage ../applications/science/chemistry/molden { };
+
+  octopus = callPackage ../applications/science/chemistry/octopus { };
+
+  openlp = libsForQt5.callPackage ../applications/misc/openlp { };
+  openlpFull = openlp.override {
+    pdfSupport = true;
+    presentationSupport = true;
+    vlcSupport = true;
+    gstreamerSupport = true;
+  };
+
+  dkh = callPackage ../applications/science/chemistry/dkh { };
+
+  openmolcas = callPackage ../applications/science/chemistry/openmolcas { };
+
+  pymol = callPackage ../applications/science/chemistry/pymol { };
+
+  quantum-espresso = callPackage ../applications/science/chemistry/quantum-espresso { };
+
+  quantum-espresso-mpi = callPackage ../applications/science/chemistry/quantum-espresso { useMpi = true; };
+
+  siesta = callPackage ../applications/science/chemistry/siesta { };
+
+  siesta-mpi = callPackage ../applications/science/chemistry/siesta { useMpi = true; };
+
+  ### SCIENCE/GEOMETRY
+
+  antiprism = callPackage ../applications/science/geometry/antiprism { };
+
+  gama = callPackage ../applications/science/geometry/gama { };
+
+  drgeo = callPackage ../applications/science/geometry/drgeo {
+    inherit (gnome2) libglade;
+    guile = guile_1_8;
+  };
+
+  tetgen = callPackage ../applications/science/geometry/tetgen { }; # AGPL3+
+  tetgen_1_4 = callPackage ../applications/science/geometry/tetgen/1.4.nix { }; # MIT
+
+  ### SCIENCE/BENCHMARK
+
+  papi = callPackage ../development/libraries/science/benchmark/papi { };
+
+  ### SCIENCE/BIOLOGY
+
+  alliance = callPackage ../applications/science/electronics/alliance { };
+
+  angsd = callPackage ../applications/science/biology/angsd { };
+
+  ants = callPackage ../applications/science/biology/ants {
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  aragorn = callPackage ../applications/science/biology/aragorn { };
+
+  archimedes = callPackage ../applications/science/electronics/archimedes {
+    stdenv = gcc6Stdenv;
+  };
+
+  bayescan = callPackage ../applications/science/biology/bayescan { };
+
+  bedops = callPackage ../applications/science/biology/bedops { };
+
+  bedtools = callPackage ../applications/science/biology/bedtools { };
+
+  bcftools = callPackage ../applications/science/biology/bcftools { };
+
+  bftools = callPackage ../applications/science/biology/bftools { };
+
+  blast = callPackage ../applications/science/biology/blast {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  bpp-core = callPackage ../development/libraries/science/biology/bpp-core { };
+
+  bpp-phyl = callPackage ../development/libraries/science/biology/bpp-phyl { };
+
+  bpp-popgen = callPackage ../development/libraries/science/biology/bpp-popgen { };
+
+  bpp-seq = callPackage ../development/libraries/science/biology/bpp-seq { };
+
+  bppsuite = callPackage ../applications/science/biology/bppsuite { };
+
+  cd-hit = callPackage ../applications/science/biology/cd-hit {
+    inherit (llvmPackages) openmp;
+  };
+
+  cmtk = callPackage ../applications/science/biology/cmtk { };
+
+  clustal-omega = callPackage ../applications/science/biology/clustal-omega { };
+
+  conglomerate = callPackage ../applications/science/biology/conglomerate { };
+
+  dalfox = callPackage ../tools/security/dalfox { };
+
+  dcm2niix = callPackage ../applications/science/biology/dcm2niix { };
+
+  deepdiff = with python3Packages; toPythonApplication deepdiff;
+
+  deepsea = callPackage ../tools/security/deepsea { };
+
+  deeptools = callPackage ../applications/science/biology/deeptools { python = python3; };
+
+  deep-translator = with python3Packages; toPythonApplication deep-translator;
+
+  delly = callPackage ../applications/science/biology/delly { };
+
+  diamond = callPackage ../applications/science/biology/diamond { };
+
+  ecopcr = callPackage ../applications/science/biology/ecopcr { };
+
+  eggnog-mapper = callPackage ../applications/science/biology/eggnog-mapper { };
+
+  emboss = callPackage ../applications/science/biology/emboss { };
+
+  est-sfs = callPackage ../applications/science/biology/est-sfs { };
+
+  ezminc = callPackage ../applications/science/biology/EZminc { };
+
+  exonerate = callPackage ../applications/science/biology/exonerate { };
+
+  fastp = callPackage ../applications/science/biology/fastp { };
+
+  febio-studio = libsForQt5.callPackage ../applications/science/biology/febio-studio { };
+
+  hisat2 = callPackage ../applications/science/biology/hisat2 { };
+
+  htslib = callPackage ../development/libraries/science/biology/htslib { };
+
+  igv = callPackage ../applications/science/biology/igv { };
+
+  inormalize = callPackage ../applications/science/biology/inormalize { };
+
+  itsx = callPackage ../applications/science/biology/itsx { };
+
+  iv = callPackage ../applications/science/biology/iv {
+    neuron-version = neuron.version;
+  };
+
+  kallisto = callPackage ../applications/science/biology/kallisto {
+    autoconf = buildPackages.autoconf269;
+  };
+
+  kssd = callPackage ../applications/science/biology/kssd { };
+
+  last = callPackage ../applications/science/biology/last { };
+
+  macse = callPackage ../applications/science/biology/macse { };
+
+  MACS2 = callPackage ../applications/science/biology/MACS2 { };
+
+  migrate = callPackage ../applications/science/biology/migrate { };
+
+  minia = callPackage ../applications/science/biology/minia { };
+
+  mirtk = callPackage ../development/libraries/science/biology/mirtk {
+    boost = boost16x;
+  };
+
+  muscle = callPackage ../applications/science/biology/muscle { };
+
+  n3 = callPackage ../applications/science/biology/N3 { };
+
+  neuron = callPackage ../applications/science/biology/neuron { python = null; };
+
+  neuron-mpi = neuron.override {useMpi = true; };
+
+  neuron-full = neuron-mpi.override { python = python2; };
+
+  mrbayes = callPackage ../applications/science/biology/mrbayes { };
+
+  mrtrix = callPackage ../applications/science/biology/mrtrix { python = python3; };
+
+  megahit = callPackage ../applications/science/biology/megahit { };
+
+  messer-slim = callPackage ../applications/science/biology/messer-slim { };
+
+  minc_tools = callPackage ../applications/science/biology/minc-tools {
+    inherit (perlPackages) perl TextFormat;
+  };
+
+  minc_widgets = callPackage ../applications/science/biology/minc-widgets { };
+
+  mni_autoreg = callPackage ../applications/science/biology/mni_autoreg { };
+
+  minimap2 = callPackage ../applications/science/biology/minimap2 { };
+
+  mosdepth = callPackage ../applications/science/biology/mosdepth { };
+
+  ncbi_tools = callPackage ../applications/science/biology/ncbi-tools { };
+
+  niftyreg = callPackage ../applications/science/biology/niftyreg { };
+
+  niftyseg = callPackage ../applications/science/biology/niftyseg { };
+
+  manta = callPackage ../applications/science/biology/manta { };
+
+  obitools3 = callPackage ../applications/science/biology/obitools/obitools3.nix { };
+
+  octopus-caller = callPackage ../applications/science/biology/octopus { };
+
+  paml = callPackage ../applications/science/biology/paml { };
+
+  picard-tools = callPackage ../applications/science/biology/picard-tools { };
+
+  platypus = callPackage ../applications/science/biology/platypus { };
+
+  plink-ng = callPackage ../applications/science/biology/plink-ng { };
+
+  prodigal = callPackage ../applications/science/biology/prodigal { };
+
+  quast = callPackage ../applications/science/biology/quast { };
+
+  raxml = callPackage ../applications/science/biology/raxml { };
+
+  raxml-mpi = raxml.override { useMpi = true; };
+
+  sambamba = callPackage ../applications/science/biology/sambamba { };
+
+  samblaster = callPackage ../applications/science/biology/samblaster { };
+
+  samtools = callPackage ../applications/science/biology/samtools { };
+  samtools_0_1_19 = callPackage ../applications/science/biology/samtools/samtools_0_1_19.nix {
+    stdenv = gccStdenv;
+  };
+
+  snpeff = callPackage ../applications/science/biology/snpeff { };
+
+  somafm-cli = callPackage ../tools/misc/somafm-cli { };
+
+  somatic-sniper = callPackage ../applications/science/biology/somatic-sniper { };
+
+  sortmerna = callPackage ../applications/science/biology/sortmerna { };
+
+  stacks = callPackage ../applications/science/biology/stacks { };
+
+  star = callPackage ../applications/science/biology/star { };
+
+  strelka = callPackage ../applications/science/biology/strelka { };
+
+  inherit (callPackages ../applications/science/biology/sumatools {})
+      sumalibs
+      sumaclust
+      sumatra;
+
+  seaview = callPackage ../applications/science/biology/seaview { };
+
+  SPAdes = callPackage ../applications/science/biology/spades { };
+
+  svaba = callPackage ../applications/science/biology/svaba { };
+
+  tebreak = callPackage ../applications/science/biology/tebreak { };
+
+  trimal = callPackage ../applications/science/biology/trimal { };
+
+  truvari = callPackage ../applications/science/biology/truvari { };
+
+  varscan = callPackage ../applications/science/biology/varscan { };
+
+  whisper = callPackage ../applications/science/biology/whisper { };
+
+  xenomapper = callPackage ../applications/science/biology/xenomapper { };
+
+  hmmer = callPackage ../applications/science/biology/hmmer { };
+
+  bwa = callPackage ../applications/science/biology/bwa { };
+
+  ### SCIENCE/MACHINE LEARNING
+
+  nengo-gui = callPackage ../applications/science/machine-learning/nengo-gui { };
+
+  sc2-headless = callPackage ../applications/science/machine-learning/sc2-headless { };
+
+  ### SCIENCE/MATH
+
+  _4ti2  = callPackage ../applications/science/math/4ti2 { };
+
+  almonds = callPackage ../applications/science/math/almonds { };
+
+  amd-blis = callPackage ../development/libraries/science/math/amd-blis { };
+
+  amd-libflame = callPackage ../development/libraries/science/math/amd-libflame { };
+
+  arpack = callPackage ../development/libraries/science/math/arpack { };
+
+  blas = callPackage ../build-support/alternatives/blas { };
+
+  blas-reference = callPackage ../development/libraries/science/math/blas { };
+
+  bonmin = callPackage ../development/libraries/science/math/bonmin { };
+
+  brial = callPackage ../development/libraries/science/math/brial { };
+
+  clblas = callPackage ../development/libraries/science/math/clblas {
+    inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo OpenCL;
+  };
+
+  cliquer = callPackage ../development/libraries/science/math/cliquer { };
+
+  ecos = callPackage ../development/libraries/science/math/ecos { };
+
+  flintqs = callPackage ../development/libraries/science/math/flintqs { };
+
+  getdp = callPackage ../applications/science/math/getdp { };
+
+  gurobi = callPackage ../applications/science/math/gurobi { };
+
+  jags = callPackage ../applications/science/math/jags { };
+
+  lapack = callPackage ../build-support/alternatives/lapack { };
+
+  lapack-reference = callPackage ../development/libraries/science/math/liblapack { };
+  liblapack = lapack-reference;
+
+  libamplsolver = callPackage ../development/libraries/science/math/libamplsolver { };
+
+  libbraiding = callPackage ../development/libraries/science/math/libbraiding { };
+
+  libhomfly = callPackage ../development/libraries/science/math/libhomfly { };
+
+  liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { };
+
+  lrs = callPackage ../development/libraries/science/math/lrs { };
+
+  m4ri = callPackage ../development/libraries/science/math/m4ri { };
+
+  m4rie = callPackage ../development/libraries/science/math/m4rie { };
+
+  mkl = callPackage ../development/libraries/science/math/mkl { };
+
+  nasc = callPackage ../applications/science/math/nasc { };
+
+  nota = haskellPackages.callPackage ../applications/science/math/nota { };
+
+  notus-scanner = with python3Packages; toPythonApplication notus-scanner;
+
+  openblas = callPackage ../development/libraries/science/math/openblas { };
+
+  # A version of OpenBLAS using 32-bit integers on all platforms for compatibility with
+  # standard BLAS and LAPACK.
+  openblasCompat = openblas.override { blas64 = false; };
+
+  openlibm = callPackage ../development/libraries/science/math/openlibm {};
+
+  openspecfun = callPackage ../development/libraries/science/math/openspecfun {};
+
+  planarity = callPackage ../development/libraries/science/math/planarity { };
+
+  scalapack = callPackage ../development/libraries/science/math/scalapack { };
+
+  rankwidth = callPackage ../development/libraries/science/math/rankwidth { };
+
+  lcalc = callPackage ../development/libraries/science/math/lcalc { };
+
+  lrcalc = callPackage ../applications/science/math/lrcalc { };
+
+  lie = callPackage ../applications/science/math/LiE { };
+
+  magma = callPackage ../development/libraries/science/math/magma { };
+  clmagma = callPackage ../development/libraries/science/math/clmagma { };
+
+  mathematica = callPackage ../applications/science/math/mathematica { };
+  mathematica9 = callPackage ../applications/science/math/mathematica/9.nix { };
+  mathematica10 = callPackage ../applications/science/math/mathematica/10.nix { };
+  mathematica11 = callPackage ../applications/science/math/mathematica/11.nix { };
+
+  metis = callPackage ../development/libraries/science/math/metis {};
+
+  nauty = callPackage ../applications/science/math/nauty {};
+
+  osi = callPackage ../development/libraries/science/math/osi { };
+
+  or-tools = callPackage ../development/libraries/science/math/or-tools {
+    python = python3;
+    # or-tools builds with -std=c++17, so abseil-cpp must
+    # also be built that way
+    abseil-cpp = abseil-cpp.override {
+      static = true;
+      cxxStandard = "17";
+    };
+  };
+
+  rubiks = callPackage ../development/libraries/science/math/rubiks { };
+
+  p4est-sc = callPackage ../development/libraries/science/math/p4est-sc {
+    p4est-sc-debugEnable = false;
+  };
+
+  p4est-sc-dbg = callPackage ../development/libraries/science/math/p4est-sc { };
+
+  p4est = callPackage ../development/libraries/science/math/p4est { };
+
+  p4est-dbg = callPackage ../development/libraries/science/math/p4est {
+    p4est-sc = p4est-sc-dbg;
+  };
+
+  petsc = callPackage ../development/libraries/science/math/petsc { };
+
+  parmetis = callPackage ../development/libraries/science/math/parmetis { };
+
+  QuadProgpp = callPackage ../development/libraries/science/math/QuadProgpp { };
+
+  scs = callPackage ../development/libraries/science/math/scs { };
+
+  sage = callPackage ../applications/science/math/sage { };
+  sageWithDoc = sage.override { withDoc = true; };
+
+  sagetex = callPackage ../misc/sagetex { };
+
+  subread = callPackage ../applications/science/biology/subread { };
+
+  suitesparse_4_2 = callPackage ../development/libraries/science/math/suitesparse/4.2.nix { };
+  suitesparse_4_4 = callPackage ../development/libraries/science/math/suitesparse/4.4.nix {};
+  suitesparse_5_3 = callPackage ../development/libraries/science/math/suitesparse {};
+  suitesparse = suitesparse_5_3;
+
+  suitesparse-graphblas = callPackage ../development/libraries/science/math/suitesparse-graphblas {};
+
+  superlu = callPackage ../development/libraries/science/math/superlu {};
+
+  symmetrica = callPackage ../applications/science/math/symmetrica {};
+
+  sympow = callPackage ../development/libraries/science/math/sympow { };
+
+  trilinos = callPackage ../development/libraries/science/math/trilinos {};
+
+  trilinos-mpi = callPackage ../development/libraries/science/math/trilinos { withMPI = true; };
+
+  ipopt = callPackage ../development/libraries/science/math/ipopt { };
+
+  gmsh = callPackage ../applications/science/math/gmsh { };
+
+  zn_poly = callPackage ../development/libraries/science/math/zn_poly { };
+
+  ### SCIENCE/MOLECULAR-DYNAMICS
+
+  dl-poly-classic-mpi = callPackage ../applications/science/molecular-dynamics/dl-poly-classic { };
+
+  lammps = callPackage ../applications/science/molecular-dynamics/lammps {
+    fftw = fftw;
+  };
+
+  lammps-mpi = lowPrio (lammps.override { withMPI = true; });
+
+  gromacs = callPackage ../applications/science/molecular-dynamics/gromacs {
+    singlePrec = true;
+    fftw = fftwSinglePrec;
+  };
+
+  gromacsMpi = lowPrio (gromacs.override {
+    singlePrec = true;
+    enableMpi = true;
+    fftw = fftwSinglePrec;
+  });
+
+  gromacsDouble = lowPrio (gromacs.override {
+    singlePrec = false;
+    fftw = fftw;
+  });
+
+  gromacsDoubleMpi = lowPrio (gromacs.override {
+    singlePrec = false;
+    enableMpi = true;
+    fftw = fftw;
+  });
+
+  gromacsCudaMpi = lowPrio (gromacs.override {
+    singlePrec = true;
+    enableMpi = true;
+    enableCuda = true;
+    cudatoolkit = cudatoolkit_11;
+    fftw = fftwSinglePrec;
+  });
+
+  zegrapher = libsForQt5.callPackage ../applications/science/math/zegrapher { };
+
+  ### SCIENCE/MEDICINE
+
+  aliza = callPackage ../applications/science/medicine/aliza { };
+
+  dcmtk = callPackage ../applications/science/medicine/dcmtk { };
+
+  xmedcon = callPackage ../applications/science/medicine/xmedcon { };
+
+  ### SCIENCE/PHYSICS
+
+  elmerfem = callPackage ../applications/science/physics/elmerfem {};
+
+  mcfm = callPackage ../applications/science/physics/MCFM {
+    stdenv = gccStdenv;
+    lhapdf = lhapdf.override { stdenv = gccStdenv; };
+  };
+
+  professor = callPackage ../applications/science/physics/professor { };
+
+  sacrifice = callPackage ../applications/science/physics/sacrifice {};
+
+  sherpa = callPackage ../applications/science/physics/sherpa {};
+
+  shtns = callPackage ../applications/science/physics/shtns { };
+
+  xfitter = callPackage ../applications/science/physics/xfitter {};
+
+  xflr5 = libsForQt5.callPackage ../applications/science/physics/xflr5 { };
+
+  ### SCIENCE/PROGRAMMING
+
+  dafny = dotnetPackages.Dafny;
+
+  groove = callPackage ../applications/science/programming/groove { };
+
+  plm = callPackage ../applications/science/programming/plm { };
+
+  ### SCIENCE/LOGIC
+
+  abc-verifier = callPackage ../applications/science/logic/abc {};
+
+  abella = callPackage ../applications/science/logic/abella {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_12;
+  };
+
+  acgtk = callPackage ../applications/science/logic/acgtk {};
+
+  alt-ergo = callPackage ../applications/science/logic/alt-ergo {};
+
+  aspino = callPackage ../applications/science/logic/aspino {};
+
+  beluga = callPackage ../applications/science/logic/beluga {};
+
+  boogie = dotnetPackages.Boogie;
+
+  cadical = callPackage ../applications/science/logic/cadical {};
+
+  inherit (callPackage ./coq-packages.nix {
+    inherit (ocaml-ng) ocamlPackages_4_05 ocamlPackages_4_09 ocamlPackages_4_10 ocamlPackages_4_12;
+  }) mkCoqPackages
+    coqPackages_8_5  coq_8_5
+    coqPackages_8_6  coq_8_6
+    coqPackages_8_7  coq_8_7
+    coqPackages_8_8  coq_8_8
+    coqPackages_8_9  coq_8_9
+    coqPackages_8_10 coq_8_10
+    coqPackages_8_11 coq_8_11
+    coqPackages_8_12 coq_8_12
+    coqPackages_8_13 coq_8_13
+    coqPackages_8_14 coq_8_14
+    coqPackages_8_15 coq_8_15
+    coqPackages      coq
+  ;
+
+  coq2html = callPackage ../tools/typesetting/coq2html { };
+
+  cryptoverif = callPackage ../applications/science/logic/cryptoverif { };
+
+  crypto-org-wallet = callPackage ../applications/blockchains/crypto-org-wallet { };
+
+  caprice32 = callPackage ../applications/emulators/caprice32 { };
+
+  cubicle = callPackage ../applications/science/logic/cubicle {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_05;
+  };
+
+  cvc3 = callPackage ../applications/science/logic/cvc3 {
+    gmp = lib.overrideDerivation gmp (_: { dontDisableStatic = true; });
+    stdenv = gccStdenv;
+  };
+  cvc4 = callPackage ../applications/science/logic/cvc4 {
+    jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  drat-trim = callPackage ../applications/science/logic/drat-trim {};
+
+  ekrhyper = callPackage ../applications/science/logic/ekrhyper {
+    inherit (ocaml-ng.ocamlPackages_4_02) ocaml;
+  };
+
+  eprover = callPackage ../applications/science/logic/eprover { };
+
+  eprover-ho = callPackage ../applications/science/logic/eprover { enableHO = true; };
+
+  formula = callPackage ../applications/science/logic/formula { };
+
+  gappa = callPackage ../applications/science/logic/gappa { };
+
+  gfan = callPackage ../applications/science/math/gfan {};
+
+  giac = callPackage ../applications/science/math/giac { };
+  giac-with-xcas = giac.override { enableGUI = true; };
+
+  ginac = callPackage ../applications/science/math/ginac { };
+
+  glom = callPackage ../applications/misc/glom { };
+
+  glucose = callPackage ../applications/science/logic/glucose { };
+  glucose-syrup = callPackage ../applications/science/logic/glucose/syrup.nix { };
+
+  hol = callPackage ../applications/science/logic/hol { };
+
+  inherit (ocaml-ng.ocamlPackages_4_12) hol_light;
+
+  hologram = callPackage ../tools/security/hologram { };
+
+  honeytrap = callPackage ../tools/security/honeytrap { };
+
+  kissat = callPackage ../applications/science/logic/kissat {};
+
+  tini = callPackage ../applications/virtualization/tini {};
+
+  ifstat-legacy = callPackage ../tools/networking/ifstat-legacy { };
+
+  isabelle = callPackage ../applications/science/logic/isabelle {
+    polyml = lib.overrideDerivation polyml (_: {
+      configureFlags = [ "--enable-intinf-as-int" "--with-gmp" "--disable-shared" ];
+    });
+
+    java = openjdk17;
+    z3 = z3_4_4_0;
+  };
+
+  iprover = callPackage ../applications/science/logic/iprover { };
+
+  jonprl = callPackage ../applications/science/logic/jonprl { };
+
+  key = callPackage ../applications/science/logic/key { };
+
+  keymapviz = callPackage ../tools/misc/keymapviz { };
+
+  lean = callPackage ../applications/science/logic/lean {};
+  lean2 = callPackage ../applications/science/logic/lean2 {};
+  lean3 = lean;
+  elan = callPackage ../applications/science/logic/elan {};
+  mathlibtools = with python3Packages; toPythonApplication mathlibtools;
+
+  leo2 = callPackage ../applications/science/logic/leo2
+    { inherit (ocaml-ng.ocamlPackages_4_05) ocaml camlp4; };
+
+  leo3-bin = callPackage ../applications/science/logic/leo3/binary.nix {};
+
+  logisim = callPackage ../applications/science/logic/logisim {};
+
+  logisim-evolution = callPackage ../applications/science/logic/logisim-evolution {};
+
+  ltl2ba = callPackage ../applications/science/logic/ltl2ba {};
+
+  metis-prover = callPackage ../applications/science/logic/metis-prover { };
+
+  mcrl2 = callPackage ../applications/science/logic/mcrl2 { };
+
+  minisat = callPackage ../applications/science/logic/minisat {};
+
+  monosat = callPackage ../applications/science/logic/monosat {};
+
+  opensmt = callPackage ../applications/science/logic/opensmt { };
+
+  ott = callPackage ../applications/science/logic/ott { };
+
+  otter = callPackage ../applications/science/logic/otter {};
+
+  picosat = callPackage ../applications/science/logic/picosat {};
+
+  libpoly = callPackage ../applications/science/logic/poly {};
+
+  prooftree = callPackage  ../applications/science/logic/prooftree {
+    ocamlPackages = ocaml-ng.ocamlPackages_4_12;
+  };
+
+  prover9 = callPackage ../applications/science/logic/prover9 { };
+
+  proverif = callPackage ../applications/science/logic/proverif { };
+
+  satallax = callPackage ../applications/science/logic/satallax {
+    ocaml = ocaml-ng.ocamlPackages_4_01_0.ocaml;
+  };
+
+  saw-tools = callPackage ../applications/science/logic/saw-tools {};
+
+  spass = callPackage ../applications/science/logic/spass {
+    stdenv = gccStdenv;
+  };
+
+  statverif = callPackage ../applications/science/logic/statverif {
+    inherit (ocaml-ng.ocamlPackages_4_05) ocaml;
+  };
+
+  tptp = callPackage ../applications/science/logic/tptp {};
+
+  celf = callPackage ../applications/science/logic/celf { };
+
+  fast-downward = callPackage ../applications/science/logic/fast-downward { };
+
+  twelf = callPackage ../applications/science/logic/twelf { };
+
+  verifast = callPackage ../applications/science/logic/verifast {};
+
+  veriT = callPackage ../applications/science/logic/verit {};
+
+  why3 = callPackage ../applications/science/logic/why3 { };
+
+  workcraft = callPackage ../applications/science/logic/workcraft {};
+
+  yices = callPackage ../applications/science/logic/yices {
+    gmp-static = gmp.override { withStatic = true; };
+  };
+
+  z3 = callPackage ../applications/science/logic/z3 { python = python2; };
+  z3_4_4_0 = callPackage ../applications/science/logic/z3/4.4.0.nix {
+    python = python2;
+    stdenv = gcc49Stdenv;
+  };
+  z3-tptp = callPackage ../applications/science/logic/z3/tptp.nix {};
+
+  tlaplus = callPackage ../applications/science/logic/tlaplus {
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+  tlaps = callPackage ../applications/science/logic/tlaplus/tlaps.nix {
+    inherit (ocaml-ng.ocamlPackages_4_05) ocaml;
+  };
+  tlaplusToolbox = callPackage ../applications/science/logic/tlaplus/toolbox.nix {};
+
+  aiger = callPackage ../applications/science/logic/aiger {};
+
+  avy = callPackage ../applications/science/logic/avy {};
+
+  btor2tools = callPackage ../applications/science/logic/btor2tools {};
+
+  boolector = callPackage ../applications/science/logic/boolector {};
+
+  bitwuzla = callPackage ../applications/science/logic/bitwuzla {};
+
+  symbiyosys = callPackage ../applications/science/logic/symbiyosys {};
+
+  mcy = callPackage ../applications/science/logic/mcy {};
+
+  lingeling = callPackage ../applications/science/logic/lingeling {};
+
+  ### SCIENCE / ELECTRONICS
+
+  adms = callPackage ../applications/science/electronics/adms { };
+
+  appcsxcad = libsForQt5.callPackage ../applications/science/electronics/appcsxcad { };
+
+  # Since version 8 Eagle requires an Autodesk account and a subscription
+  # in contrast to single payment for the charged editions.
+  # This is the last version with the old model.
+  eagle7 = callPackage ../applications/science/electronics/eagle/eagle7.nix {
+    openssl = openssl_1_0_2;
+  };
+
+  eagle = libsForQt5.callPackage ../applications/science/electronics/eagle/eagle.nix { };
+
+  caneda = libsForQt5.callPackage ../applications/science/electronics/caneda { };
+
+  csxcad = callPackage ../applications/science/electronics/csxcad { };
+
+  diylc = callPackage ../applications/science/electronics/diylc { };
+
+  flatcam = callPackage ../applications/science/electronics/flatcam { };
+
+  fparser = callPackage ../applications/science/electronics/fparser { };
+
+  geda = callPackage ../applications/science/electronics/geda {
+    guile = guile_2_0;
+  };
+
+  gerbv = callPackage ../applications/science/electronics/gerbv { };
+
+  gtkwave = callPackage ../applications/science/electronics/gtkwave { };
+
+  hyp2mat = callPackage ../applications/science/electronics/hyp2mat { };
+
+  fped = callPackage ../applications/science/electronics/fped { };
+
+  gaw = callPackage ../applications/science/electronics/gaw {};
+
+  horizon-eda = callPackage ../applications/science/electronics/horizon-eda {};
+
+  # this is a wrapper for kicad.base and kicad.libraries
+  kicad = callPackage ../applications/science/electronics/kicad { };
+  kicad-small = kicad.override { pname = "kicad-small"; with3d = false; };
+  kicad-unstable = kicad.override { pname = "kicad-unstable"; stable = false; };
+  # mostly here so the kicad-unstable components (except packages3d) get built
+  kicad-unstable-small = kicad.override {
+    pname = "kicad-unstable-small";
+    stable = false;
+    with3d = false;
+  };
+
+  librepcb = libsForQt5.callPackage ../applications/science/electronics/librepcb { };
+
+  ngspice = callPackage ../applications/science/electronics/ngspice { };
+
+  openems = callPackage ../applications/science/electronics/openems {
+    qcsxcad = libsForQt5.qcsxcad;
+  };
+
+  openroad = libsForQt5.callPackage ../applications/science/electronics/openroad { };
+
+  pcb = callPackage ../applications/science/electronics/pcb { };
+
+  qucs = callPackage ../applications/science/electronics/qucs { };
+
+  qucs-s = callPackage ../applications/science/electronics/qucs-s { };
+
+  xcircuit = callPackage ../applications/science/electronics/xcircuit { };
+
+  xoscope = callPackage ../applications/science/electronics/xoscope { };
+
+  xschem = callPackage ../applications/science/electronics/xschem { };
+
+  xyce = callPackage ../applications/science/electronics/xyce { };
+
+  xyce-parallel = callPackage ../applications/science/electronics/xyce {
+    withMPI = true;
+    trilinos = trilinos-mpi;
+  };
+
+  ### SCIENCE / MATH
+
+  caffe = callPackage ../applications/science/math/caffe ({
+    opencv3 = opencv3WithoutCuda; # Used only for image loading.
+    blas = openblas;
+    inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
+  } // (config.caffe or {}));
+
+  caffe2 = callPackage ../development/libraries/science/math/caffe2 (rec {
+    inherit (python3Packages) python future six numpy pydot;
+    protobuf = protobuf3_1;
+    python-protobuf = python3Packages.protobuf.override { inherit protobuf; };
+    opencv3 = opencv3WithoutCuda; # Used only for image loading.
+  });
+
+  caffeine-ng = callPackage ../tools/X11/caffeine-ng {};
+
+  cntk = callPackage ../applications/science/math/cntk {
+    stdenv = gcc7Stdenv;
+    inherit (linuxPackages) nvidia_x11;
+    opencv3 = opencv3WithoutCuda; # Used only for image loading.
+    cudaSupport = config.cudaSupport or false;
+  };
+
+  dap = callPackage ../applications/science/math/dap { };
+
+  ecm = callPackage ../applications/science/math/ecm { };
+
+  eukleides = callPackage ../applications/science/math/eukleides { };
+
+  form = callPackage ../applications/science/math/form { };
+
+  fricas = callPackage ../applications/science/math/fricas { };
+
+  gap = callPackage ../applications/science/math/gap { };
+
+  gap-minimal = lowPrio (gap.override { packageSet = "minimal"; });
+
+  gap-full = lowPrio (gap.override { packageSet = "full"; });
+
+  geogebra = callPackage ../applications/science/math/geogebra { };
+  geogebra6 = callPackage ../applications/science/math/geogebra/geogebra6.nix {
+    electron = electron_14;
+   };
+
+  maxima = callPackage ../applications/science/math/maxima {
+    lisp-compiler = sbcl;
+  };
+  maxima-ecl = maxima.override {
+    lisp-compiler = ecl;
+  };
+
+  mxnet = callPackage ../applications/science/math/mxnet {
+    inherit (linuxPackages) nvidia_x11;
+  };
+
+  wxmaxima = callPackage ../applications/science/math/wxmaxima { wxGTK = wxGTK30; };
+
+  pari = callPackage ../applications/science/math/pari { tex = texlive.combined.scheme-basic; };
+  gp2c = callPackage ../applications/science/math/pari/gp2c.nix { };
+
+  palp = callPackage ../applications/science/math/palp { };
+
+  ratpoints = callPackage ../applications/science/math/ratpoints {};
+
+  calc = callPackage ../applications/science/math/calc { };
+
+  pcalc = callPackage ../applications/science/math/pcalc { };
+
+  programmer-calculator = callPackage ../applications/science/math/programmer-calculator { };
+
+  bcal = callPackage ../applications/science/math/bcal { };
+
+  pspp = callPackage ../applications/science/math/pspp { };
+
+  ssw = callPackage ../applications/misc/ssw { };
+
+  pynac = callPackage ../applications/science/math/pynac { };
+
+  singular = callPackage ../applications/science/math/singular { };
+
+  scilab = callPackage ../applications/science/math/scilab { };
+
+  scilab-bin = callPackage ../applications/science/math/scilab-bin {};
+
+  scilla = callPackage ../tools/security/scilla { };
+
+  scotch = callPackage ../applications/science/math/scotch { };
+
+  mininet = callPackage ../tools/virtualization/mininet { };
+
+  msieve = callPackage ../applications/science/math/msieve { };
+
+  weka = callPackage ../applications/science/math/weka { };
+
+  yad = callPackage ../tools/misc/yad { };
+
+  yacas = libsForQt5.callPackage ../applications/science/math/yacas { };
+
+  yacas-gui = yacas.override {
+    enableGui = true;
+    enableJupyter = false;
+  };
+
+  speedcrunch = libsForQt5.callPackage ../applications/science/math/speedcrunch { };
+
+  ### SCIENCE / MISC
+
+  boinc = callPackage ../applications/science/misc/boinc { };
+
+  celestia = callPackage ../applications/science/astronomy/celestia {
+    autoreconfHook = buildPackages.autoreconfHook269;
+    inherit (gnome2) gtkglext;
+  };
+
+  convertall = qt5.callPackage ../applications/science/misc/convertall { };
+
+  cytoscape = callPackage ../applications/science/misc/cytoscape {
+    jre = openjdk11;
+  };
+
+  fityk = callPackage ../applications/science/misc/fityk { };
+
+  galario = callPackage ../development/libraries/galario { };
+
+  gildas = callPackage ../applications/science/astronomy/gildas { };
+
+  gplates = libsForQt5.callPackage ../applications/science/misc/gplates {
+    boost = boost175;
+  };
+
+  gravit = callPackage ../applications/science/astronomy/gravit { };
+
+  golly = callPackage ../applications/science/misc/golly { wxGTK = wxGTK30; };
+  golly-beta = callPackage ../applications/science/misc/golly/beta.nix { wxGTK = wxGTK30; };
+
+  megam = callPackage ../applications/science/misc/megam {
+    inherit (ocaml-ng.ocamlPackages_4_07) ocaml;
+  };
+
+  netlogo = callPackage ../applications/science/misc/netlogo { };
+
+  nextinspace = python3Packages.callPackage ../applications/science/misc/nextinspace { };
+
+  ns-3 = callPackage ../development/libraries/science/networking/ns-3 { python = python3; };
+
+  root = callPackage ../applications/science/misc/root {
+    python = python3;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreSymbolication OpenGL;
+  };
+
+  root5 = lowPrio (callPackage ../applications/science/misc/root/5.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL;
+    stdenv = if stdenv.cc.isClang then llvmPackages_5.stdenv else stdenv;
+  });
+
+  rink = callPackage ../applications/science/misc/rink {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  simgrid = callPackage ../applications/science/misc/simgrid { };
+
+  sumo = callPackage ../applications/science/networking/sumo { };
+
+  spyder = with python3.pkgs; toPythonApplication spyder;
+
+  spyre = callPackage ../tools/security/spyre { };
+
+  openspace = callPackage ../applications/science/astronomy/openspace { };
+
+  stellarium = libsForQt5.callPackage ../applications/science/astronomy/stellarium { };
+
+  stellarsolver = libsForQt5.callPackage ../development/libraries/science/astronomy/stellarsolver { };
+
+  astrolabe-generator = callPackage ../applications/science/astronomy/astrolabe-generator { };
+
+  tulip = libsForQt5.callPackage ../applications/science/misc/tulip { };
+
+  vite = callPackage ../applications/science/misc/vite { };
+
+  xearth = callPackage ../applications/science/astronomy/xearth { };
+  xplanet = callPackage ../applications/science/astronomy/xplanet { };
+
+  ### SCIENCE / PHYSICS
+
+  apfelgrid = callPackage ../development/libraries/physics/apfelgrid { };
+
+  apfel = callPackage ../development/libraries/physics/apfel { };
+
+  applgrid = callPackage ../development/libraries/physics/applgrid { };
+
+  hoppet = callPackage ../development/libraries/physics/hoppet { };
+
+  fastjet = callPackage ../development/libraries/physics/fastjet { };
+
+  fastjet-contrib = callPackage ../development/libraries/physics/fastjet-contrib { };
+
+  fastnlo_toolkit = callPackage ../development/libraries/physics/fastnlo_toolkit { };
+
+  geant4 = libsForQt5.callPackage ../development/libraries/physics/geant4 { };
+
+  cernlib = callPackage ../development/libraries/physics/cernlib { };
+
+  hepmc2 = callPackage ../development/libraries/physics/hepmc2 { };
+
+  hepmc3 = callPackage ../development/libraries/physics/hepmc3 {
+    python = null;
+  };
+
+  herwig = callPackage ../development/libraries/physics/herwig { };
+
+  lhapdf = callPackage ../development/libraries/physics/lhapdf {
+    python = python3;
+  };
+
+  mela = callPackage ../development/libraries/physics/mela { };
+
+  nlojet = callPackage ../development/libraries/physics/nlojet { };
+
+  pythia = callPackage ../development/libraries/physics/pythia {
+    hepmc = hepmc2;
+  };
+
+  rivet = callPackage ../development/libraries/physics/rivet {
+    hepmc = hepmc2;
+    imagemagick = graphicsmagick-imagemagick-compat;
+  };
+
+  thepeg = callPackage ../development/libraries/physics/thepeg { };
+
+  yoda = callPackage ../development/libraries/physics/yoda {
+    python = python3;
+  };
+  yoda-with-root = lowPrio (yoda.override {
+    withRootSupport = true;
+  });
+
+  qcdnum = callPackage ../development/libraries/physics/qcdnum { };
+
+  ### SCIENCE/ROBOTICS
+
+  apmplanner2 = libsForQt514.callPackage ../applications/science/robotics/apmplanner2 { };
+
+  betaflight-configurator = callPackage ../applications/science/robotics/betaflight-configurator { };
+
+  emuflight-configurator = callPackage ../applications/science/robotics/emuflight-configurator { };
+
+  inav-configurator = callPackage ../applications/science/robotics/inav-configurator { };
+
+  mission-planner = callPackage ../applications/science/robotics/mission-planner { };
+
+  ### MISC
+
+  acpilight = callPackage ../misc/acpilight { };
+
+  android-file-transfer = libsForQt5.callPackage ../tools/filesystems/android-file-transfer { };
+
+  antimicrox = libsForQt5.callPackage ../tools/misc/antimicrox { };
+
+  ares = callPackage ../applications/emulators/ares { };
+
+  atari800 = callPackage ../applications/emulators/atari800 { };
+
+  ataripp = callPackage ../applications/emulators/atari++ { };
+
+  atlantis = callPackage ../applications/networking/cluster/atlantis { };
+
+  fn-cli = callPackage ../applications/networking/cluster/fn-cli { };
+
+  auctex = callPackage ../tools/typesetting/tex/auctex { };
+
+  areca = callPackage ../applications/backup/areca {
+    jdk = jdk8;
+    jre = jre8;
+    swt = swt_jdk8;
+  };
+
+  attract-mode = callPackage ../applications/emulators/attract-mode { };
+
+  autotiling = python3Packages.callPackage ../misc/autotiling { };
+
+  avell-unofficial-control-center = python3Packages.callPackage ../applications/misc/avell-unofficial-control-center { };
+
+  beep = callPackage ../misc/beep { };
+
+  bees = callPackage ../tools/filesystems/bees { };
+
+  bootil = callPackage ../development/libraries/bootil { };
+
+  brgenml1lpr = pkgsi686Linux.callPackage ../misc/cups/drivers/brgenml1lpr {};
+
+  brgenml1cupswrapper = callPackage ../misc/cups/drivers/brgenml1cupswrapper {};
+
+  brightnessctl = callPackage ../misc/brightnessctl { };
+
+  cached-nix-shell = callPackage ../tools/nix/cached-nix-shell {};
+
+  calaos_installer = libsForQt5.callPackage ../misc/calaos/installer {};
+
+  ccemux = callPackage ../applications/emulators/ccemux { };
+
+  click = callPackage ../applications/networking/cluster/click { };
+
+  clinfo = callPackage ../tools/system/clinfo {
+    inherit (darwin.apple_sdk.frameworks) OpenCL;
+  };
+
+  clpeak = callPackage ../tools/misc/clpeak { };
+
+  cups = callPackage ../misc/cups { };
+
+  cups-filters = callPackage ../misc/cups/filters.nix { };
+
+  cups-pk-helper = callPackage ../misc/cups/cups-pk-helper.nix { };
+
+  cups-kyocera = callPackage ../misc/cups/drivers/kyocera {};
+
+  cups-kyocera-ecosys-m2x35-40-p2x35-40dnw = callPackage ../misc/cups/drivers/kyocera-ecosys-m2x35-40-p2x35-40dnw {};
+
+  cups-kyocera-ecosys-m552x-p502x = callPackage ../misc/cups/drivers/kyocera-ecosys-m552x-p502x {};
+
+  cups-kyodialog3 = callPackage ../misc/cups/drivers/kyodialog3 {};
+
+  cups-dymo = callPackage ../misc/cups/drivers/dymo {};
+
+  cups-toshiba-estudio = callPackage ../misc/cups/drivers/estudio {};
+
+  cups-zj-58 =  callPackage ../misc/cups/drivers/zj-58 { };
+
+  colort = callPackage ../applications/misc/colort { };
+
+  terminal-parrot = callPackage ../applications/misc/terminal-parrot { };
+
+  epson-alc1100 = callPackage ../misc/drivers/epson-alc1100 { };
+
+  epson-escpr = callPackage ../misc/drivers/epson-escpr { };
+  epson-escpr2 = callPackage ../misc/drivers/epson-escpr2 { };
+
+  epson_201207w = callPackage ../misc/drivers/epson_201207w { };
+
+  epson-201401w = callPackage ../misc/drivers/epson-201401w { };
+
+  epson-201106w = callPackage ../misc/drivers/epson-201106w { };
+
+  epson-workforce-635-nx625-series = callPackage ../misc/drivers/epson-workforce-635-nx625-series { };
+
+  gutenprint = callPackage ../misc/drivers/gutenprint { };
+
+  gutenprintBin = callPackage ../misc/drivers/gutenprint/bin.nix { };
+
+  carps-cups = callPackage ../misc/cups/drivers/carps-cups { };
+
+  cups-bjnp = callPackage ../misc/cups/drivers/cups-bjnp { };
+
+  dcp9020cdwlpr = (pkgsi686Linux.callPackage ../misc/cups/drivers/brother/dcp9020cdw { }).driver;
+
+  dcp9020cdw-cupswrapper = (callPackage ../misc/cups/drivers/brother/dcp9020cdw { }).cupswrapper;
+
+  cups-brother-hl1110 = pkgsi686Linux.callPackage ../misc/cups/drivers/hl1110 { };
+
+  cups-brother-hl1210w = pkgsi686Linux.callPackage ../misc/cups/drivers/hl1210w { };
+
+  cups-brother-hl3140cw = pkgsi686Linux.callPackage ../misc/cups/drivers/hl3140cw { };
+
+  cups-brother-hll2340dw = pkgsi686Linux.callPackage  ../misc/cups/drivers/hll2340dw { };
+
+  cups-brother-hll2350dw = callPackage  ../misc/cups/drivers/hll2350dw { };
+
+  cups-drv-rastertosag-gdi = callPackage ../misc/cups/drivers/cups-drv-rastertosag-gdi { };
+
+  # this driver ships with pre-compiled 32-bit binary libraries
+  cnijfilter_2_80 = pkgsi686Linux.callPackage ../misc/cups/drivers/cnijfilter_2_80 { };
+
+  cnijfilter_4_00 = callPackage ../misc/cups/drivers/cnijfilter_4_00 { };
+
+  cnijfilter2 = callPackage ../misc/cups/drivers/cnijfilter2 { };
+
+  darcnes = callPackage ../applications/emulators/darcnes { };
+
+  darling-dmg = callPackage ../tools/filesystems/darling-dmg { };
+
+  depotdownloader = callPackage ../tools/misc/depotdownloader { };
+
+  desmume = callPackage ../applications/emulators/desmume { };
+
+  dbacl = callPackage ../tools/misc/dbacl { };
+
+  dblatex = callPackage ../tools/typesetting/tex/dblatex { };
+
+  dblatexFull = dblatex.override { enableAllFeatures = true; };
+
+  dbus-map = callPackage ../tools/misc/dbus-map { };
+
+  dell-530cdn = callPackage ../misc/drivers/dell-530cdn {};
+
+  dockutil = callPackage ../os-specific/darwin/dockutil { };
+
+  dosbox = callPackage ../applications/emulators/dosbox { };
+
+  dosbox-staging = callPackage ../applications/emulators/dosbox-staging { };
+
+  emu2 = callPackage ../applications/emulators/emu2 { };
+
+  apt = callPackage ../tools/package-management/apt { };
+
+  dpkg = callPackage ../tools/package-management/dpkg { };
+
+  dumb = callPackage ../misc/dumb { };
+
+  dump = callPackage ../tools/backup/dump { };
+
+  dxvk = callPackage ../misc/dxvk { };
+
+  ecdsatool = callPackage ../tools/security/ecdsatool { };
+
+  emulationstation = callPackage ../applications/emulators/emulationstation { };
+
+  electricsheep = callPackage ../misc/screensavers/electricsheep { };
+
+  aaphoto = callPackage ../tools/graphics/aaphoto {};
+
+  flam3 = callPackage ../tools/graphics/flam3 { };
+
+  glee = callPackage ../tools/graphics/glee { };
+
+  fakenes = callPackage ../applications/emulators/fakenes { };
+
+  faust = res.faust2;
+
+  faust1 = callPackage ../applications/audio/faust/faust1.nix { };
+
+  faust2 = callPackage ../applications/audio/faust/faust2.nix {
+    llvm = llvm_10;
+  };
+
+  faust2alqt = callPackage ../applications/audio/faust/faust2alqt.nix { };
+
+  faust2alsa = callPackage ../applications/audio/faust/faust2alsa.nix { };
+
+  faust2csound = callPackage ../applications/audio/faust/faust2csound.nix { };
+
+  faust2firefox = callPackage ../applications/audio/faust/faust2firefox.nix { };
+
+  faust2jack = callPackage ../applications/audio/faust/faust2jack.nix { };
+
+  faust2jackrust = callPackage ../applications/audio/faust/faust2jackrust.nix { };
+
+  faust2jaqt = callPackage ../applications/audio/faust/faust2jaqt.nix { };
+
+  faust2ladspa = callPackage ../applications/audio/faust/faust2ladspa.nix { };
+
+  faust2lv2 = callPackage ../applications/audio/faust/faust2lv2.nix { };
+
+  faustlive = callPackage ../applications/audio/faust/faustlive.nix { };
+
+  faustPhysicalModeling = callPackage ../applications/audio/faustPhysicalModeling  { };
+
+  faustStk = callPackage ../applications/audio/faustStk  { };
+
+  fceux = libsForQt5.callPackage ../applications/emulators/fceux { };
+
+  flockit = callPackage ../tools/backup/flockit { };
+
+  fahclient = callPackage ../applications/science/misc/foldingathome/client.nix {};
+  fahcontrol = callPackage ../applications/science/misc/foldingathome/control.nix {};
+  fahviewer = callPackage ../applications/science/misc/foldingathome/viewer.nix {};
+
+  fbmark = callPackage ../tools/misc/fbmark { };
+
+  foma = callPackage ../tools/misc/foma { };
+
+  foo2zjs = callPackage ../misc/drivers/foo2zjs {};
+
+  foomatic-filters = callPackage ../misc/drivers/foomatic-filters {};
+
+  fuse-emulator = callPackage ../applications/emulators/fuse-emulator {};
+
+  gajim = callPackage ../applications/networking/instant-messengers/gajim {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-libav;
+    gst-plugins-good = gst_all_1.gst-plugins-good.override { gtkSupport = true; };
+  };
+
+  gammu = callPackage ../applications/misc/gammu { };
+
+  gensgs = pkgsi686Linux.callPackage ../applications/emulators/gens-gs { };
+
+  ghostscript = callPackage ../misc/ghostscript { };
+
+  ghostscriptX = appendToName "with-X" (ghostscript.override {
+    cupsSupport = true;
+    x11Support = true;
+  });
+
+  glava = callPackage ../applications/misc/glava {};
+
+  gnuk = callPackage ../misc/gnuk {
+    gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc;
+    binutils-arm-embedded = pkgsCross.arm-embedded.buildPackages.binutils;
+  };
+
+  go365 = callPackage ../tools/security/go365 { };
+
+  gobuster = callPackage ../tools/security/gobuster { };
+
+  gotestwaf = callPackage ../tools/security/gotestwaf { };
+
+  guetzli = callPackage ../applications/graphics/guetzli { };
+
+  gummi = callPackage ../applications/misc/gummi { };
+
+  gxemul = callPackage ../applications/emulators/gxemul { };
+
+  hatari = callPackage ../applications/emulators/hatari { };
+
+  hck = callPackage ../tools/text/hck {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  helm = callPackage ../applications/audio/helm { };
+
+  helmfile = callPackage ../applications/networking/cluster/helmfile { };
+
+  helmsman = callPackage ../applications/networking/cluster/helmsman { };
+
+  velero = callPackage ../applications/networking/cluster/velero { };
+
+  HentaiAtHome = callPackage ../applications/misc/HentaiAtHome { };
+
+  hplip = callPackage ../misc/drivers/hplip { };
+
+  hplipWithPlugin = hplip.override { withPlugin = true; };
+
+  hyperfine = callPackage ../tools/misc/hyperfine {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  webcat = callPackage ../tools/misc/webcat { };
+
+  websocat = callPackage ../tools/misc/websocat {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  vector = callPackage ../tools/misc/vector {
+    inherit (darwin.apple_sdk.frameworks) Security CoreServices;
+  };
+
+  hjson = with python3Packages; toPythonApplication hjson;
+
+  hjson-go = callPackage ../development/tools/hjson-go { };
+
+  epkowa = callPackage ../misc/drivers/epkowa { };
+
+  utsushi = callPackage ../misc/drivers/utsushi { };
+
+  utsushi-networkscan = callPackage ../misc/drivers/utsushi/networkscan.nix { };
+
+  idsk = callPackage ../tools/filesystems/idsk { };
+
+  colima = callPackage ../applications/virtualization/colima { };
+
+  lima = callPackage ../applications/virtualization/lima { };
+
+  logtop = callPackage ../tools/misc/logtop { };
+
+  igraph = callPackage ../development/libraries/igraph { };
+
+  igprof = callPackage ../development/tools/misc/igprof { };
+
+  illum = callPackage ../tools/system/illum { };
+
+  image_optim = callPackage ../applications/graphics/image_optim { inherit (nodePackages) svgo; };
+
+  infnoise = callPackage ../misc/drivers/infnoise { };
+
+  # using the new configuration style proposal which is unstable
+  jack1 = callPackage ../misc/jackaudio/jack1.nix { };
+
+  jack2 = callPackage ../misc/jackaudio {
+    libopus = libopus.override { withCustomModes = true; };
+    inherit (darwin.apple_sdk.frameworks) AudioUnit CoreAudio Accelerate;
+    inherit (darwin) libobjc;
+  };
+
+  libjack2 = jack2.override { prefix = "lib"; };
+
+  j2cli = with python3Packages; toPythonApplication j2cli;
+
+  jquake = callPackage ../applications/misc/jquake { };
+
+  jstest-gtk = callPackage ../tools/misc/jstest-gtk { };
+
+  k40-whisperer = callPackage ../applications/misc/k40-whisperer { };
+
+  keynav = callPackage ../tools/X11/keynav { };
+
+  kgx = callPackage ../applications/terminal-emulators/kgx { };
+
+  kmon = callPackage ../tools/system/kmon { };
+
+  kompose = callPackage ../applications/networking/cluster/kompose { };
+
+  kontemplate = callPackage ../applications/networking/cluster/kontemplate { };
+
+  # In general we only want keep the last three minor versions around that
+  # correspond to the last three supported kubernetes versions:
+  # https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions
+  # Exceptions are versions that we need to keep to allow upgrades from older NixOS releases
+  inherit (callPackage ../applications/networking/cluster/kops {})
+    mkKops
+    kops_1_20
+    kops_1_21
+    kops_1_22
+    ;
+  kops = kops_1_22;
+
+  lguf-brightness = callPackage ../misc/lguf-brightness { };
+
+  lilypond = callPackage ../misc/lilypond { guile = guile_1_8; };
+
+  lilypond-with-fonts = callPackage ../misc/lilypond/with-fonts.nix { };
+
+  openlilylib-fonts = callPackage ../misc/lilypond/fonts.nix { };
+
+  loop = callPackage ../tools/misc/loop { };
+
+  maiko = callPackage ../applications/emulators/maiko { inherit (xorg) libX11; };
+
+  mailcore2 = callPackage ../development/libraries/mailcore2 {
+    icu = icu58;
+  };
+
+  mamba = callPackage ../applications/audio/mamba { };
+
+  mame = libsForQt514.callPackage ../applications/emulators/mame {
+    inherit (darwin.apple_sdk.frameworks) CoreAudioKit ForceFeedback;
+  };
+
+  martyr = callPackage ../development/libraries/martyr { };
+
+  mas = callPackage ../os-specific/darwin/mas { };
+
+  micromamba = callPackage ../tools/package-management/micromamba { };
+
+  moltengamepad = callPackage ../misc/drivers/moltengamepad { };
+
+  openzwave = callPackage ../development/libraries/openzwave { };
+
+  mongoc = callPackage ../development/libraries/mongoc { };
+
+  mongoose = callPackage ../development/libraries/science/math/mongoose {};
+
+  morph = callPackage ../tools/package-management/morph { };
+
+  mupen64plus = callPackage ../applications/emulators/mupen64plus { };
+
+  muse = libsForQt5.callPackage ../applications/audio/muse { };
+
+  musly = callPackage ../applications/audio/musly { };
+
+  mynewt-newt = callPackage ../tools/package-management/mynewt-newt { };
+
+  mysides = callPackage ../os-specific/darwin/mysides { };
+
+  nar-serve = callPackage ../tools/nix/nar-serve { };
+
+  neo = callPackage ../applications/misc/neo { };
+
+  nixVersions = recurseIntoAttrs (callPackage ../tools/package-management/nix {
+    storeDir = config.nix.storeDir or "/nix/store";
+    stateDir = config.nix.stateDir or "/nix/var";
+    inherit (darwin.apple_sdk.frameworks) Security;
+  });
+
+  nix = nixVersions.stable;
+
+  nixStatic = pkgsStatic.nix;
+
+  nixops = callPackage ../tools/package-management/nixops { };
+
+  nixops_unstable = lowPrio (callPackage ../applications/networking/cluster/nixops { });
+
+  nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { };
+
+  /*
+    Evaluate a NixOS configuration using this evaluation of Nixpkgs.
+
+    With this function you can write, for example, a package that
+    depends on a custom virtual machine image.
+
+    Parameter:  A module, path or list of those that represent the
+                configuration of the NixOS system to be constructed.
+
+    Result: An attribute set containing packages produced by this
+            evaluation of NixOS, such as toplevel, kernel and
+            initialRamdisk.
+            The result can be extended in the modules by defining
+            extra attributes in system.build.
+            Alternatively, you may use the result's config and
+            options attributes to query any option.
+
+    Example:
+
+        let
+          myOS = pkgs.nixos ({ lib, pkgs, config, ... }: {
+
+            config.services.nginx = {
+              enable = true;
+              # ...
+            };
+
+            # Use config.system.build to exports relevant parts of a
+            # configuration. The runner attribute should not be
+            # considered a fully general replacement for systemd
+            # functionality.
+            config.system.build.run-nginx = config.systemd.services.nginx.runner;
+          });
+        in
+          myOS.run-nginx
+
+    Unlike in plain NixOS, the nixpkgs.config and
+    nixpkgs.system options will be ignored by default. Instead,
+    nixpkgs.pkgs will have the default value of pkgs as it was
+    constructed right after invoking the nixpkgs function (e.g. the
+    value of import <nixpkgs> { overlays = [./my-overlay.nix]; }
+    but not the value of (import <nixpkgs> {} // { extra = ...; }).
+
+    If you do want to use the config.nixpkgs options, you are
+    probably better off by calling nixos/lib/eval-config.nix
+    directly, even though it is possible to set config.nixpkgs.pkgs.
+
+    For more information about writing NixOS modules, see
+    https://nixos.org/nixos/manual/index.html#sec-writing-modules
+
+    Note that you will need to have called Nixpkgs with the system
+    parameter set to the right value for your deployment target.
+  */
+  nixos =
+    configuration:
+      let
+        c = import (path + "/nixos/lib/eval-config.nix") {
+              inherit (stdenv.hostPlatform) system;
+              modules =
+                [(
+                  { lib, ... }: {
+                    config.nixpkgs.pkgs = lib.mkDefault pkgs;
+                  }
+                )] ++ (
+                  if builtins.isList configuration
+                  then configuration
+                  else [configuration]
+                );
+            };
+      in
+        c.config.system.build // c;
+
+  /*
+    A NixOS/home-manager/arion/... module that sets the `pkgs` module argument.
+   */
+  pkgsModule = { lib, options, ... }: {
+    config =
+      if options?nixpkgs.pkgs then {
+        # legacy / nixpkgs.nix style
+        nixpkgs.pkgs = pkgs;
+      }
+      else {
+        # minimal
+        _module.args.pkgs = pkgs;
+      };
+  };
+
+  /*
+   * Run a NixOS VM network test using this evaluation of Nixpkgs.
+   *
+   * It is mostly equivalent to `import ./make-test-python.nix` from the
+   * NixOS manual[1], except that your `pkgs` will be used instead of
+   * letting NixOS invoke Nixpkgs again. If a test machine needs to
+   * set NixOS options under `nixpkgs`, it must set only the
+   * `nixpkgs.pkgs` option. For the details, see the Nixpkgs
+   * `pkgs.nixos` documentation.
+   *
+   * Parameter:
+   *   A NixOS VM test network, or path to it. Example:
+   *
+   *      { lib, ... }:
+   *      { name = "my-test";
+   *        nodes = {
+   *          machine-1 = someNixOSConfiguration;
+   *          machine-2 = ...;
+   *        }
+   *      }
+   *
+   * Result:
+   *   A derivation that runs the VM test.
+   *
+   * [1]: For writing NixOS tests, see
+   *      https://nixos.org/nixos/manual/index.html#sec-nixos-tests
+   */
+  nixosTest =
+    let
+      /* The nixos/lib/testing-python.nix module, preapplied with arguments that
+       * make sense for this evaluation of Nixpkgs.
+       */
+      nixosTesting =
+        (import ../../nixos/lib/testing-python.nix {
+          inherit (stdenv.hostPlatform) system;
+          inherit pkgs;
+          extraConfigurations = [(
+            { lib, ... }: {
+              config.nixpkgs.pkgs = lib.mkDefault pkgs;
+            }
+          )];
+        });
+    in
+      test:
+        let
+          loadedTest = if builtins.typeOf test == "path"
+            then import test
+            else test;
+          calledTest = if lib.isFunction loadedTest
+            then callPackage loadedTest {}
+            else loadedTest;
+        in
+          nixosTesting.makeTest calledTest;
+
+  nixosOptionsDoc = attrs:
+    (import ../../nixos/lib/make-options-doc)
+    ({ inherit pkgs lib; } // attrs);
+
+  nixos-install-tools = callPackage ../tools/nix/nixos-install-tools { };
+
+  nixui = callPackage ../tools/package-management/nixui { node_webkit = nwjs_0_12; };
+
+  nixdoc = callPackage ../tools/nix/nixdoc {};
+
+  dnadd = callPackage ../tools/nix/dnadd { };
+
+  nix-eval-jobs = callPackage ../tools/package-management/nix-eval-jobs { };
+
+  nix-doc = callPackage ../tools/package-management/nix-doc { nix = nixVersions.nix_2_5; };
+
+  nix-bundle = callPackage ../tools/package-management/nix-bundle { };
+
+  nix-delegate = haskell.lib.compose.justStaticExecutables haskellPackages.nix-delegate;
+  nix-deploy = haskell.lib.compose.justStaticExecutables haskellPackages.nix-deploy;
+  nix-diff = haskell.lib.compose.justStaticExecutables haskellPackages.nix-diff;
+
+  nix-du = callPackage ../tools/package-management/nix-du {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  nix-info = callPackage ../tools/nix/info { };
+  nix-info-tested = nix-info.override { doCheck = true; };
+
+  nix-index-unwrapped = callPackage ../tools/package-management/nix-index {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+  nix-index = callPackage ../tools/package-management/nix-index/wrapper.nix { };
+
+  nix-linter = haskell.lib.compose.justStaticExecutables (haskellPackages.nix-linter);
+
+  nixos-option = callPackage ../tools/nix/nixos-option { nix = nixVersions.nix_2_3; };
+
+  nix-pin = callPackage ../tools/package-management/nix-pin { };
+
+  nix-prefetch = callPackage ../tools/package-management/nix-prefetch { };
+
+  nix-prefetch-github = with python3Packages;
+    toPythonApplication nix-prefetch-github;
+
+  inherit (callPackages ../tools/package-management/nix-prefetch-scripts { })
+    nix-prefetch-bzr
+    nix-prefetch-cvs
+    nix-prefetch-git
+    nix-prefetch-hg
+    nix-prefetch-svn
+    nix-prefetch-scripts;
+
+  nix-query-tree-viewer = callPackage ../tools/nix/nix-query-tree-viewer { };
+
+  nix-update = python3Packages.callPackage ../tools/package-management/nix-update { };
+
+  nix-update-source = callPackage ../tools/package-management/nix-update-source {};
+
+  nix-script = callPackage ../tools/nix/nix-script {};
+
+  nix-template-rpm = callPackage ../build-support/templaterpm { inherit (python2Packages) python toposort; };
+
+  nix-top = callPackage ../tools/package-management/nix-top { };
+
+  nix-tree = haskell.lib.compose.justStaticExecutables (haskellPackages.nix-tree);
+
+  nix-universal-prefetch = callPackage ../tools/package-management/nix-universal-prefetch { };
+
+  nix-repl = throw (
+    "nix-repl has been removed because it's not maintained anymore, " +
+    (lib.optionalString (!lib.versionAtLeast "2" (lib.versions.major builtins.nixVersion)) "ugrade your Nix installation to a newer version and ") +
+    "use `nix repl` instead. Also see https://github.com/NixOS/nixpkgs/pull/44903"
+  );
+
+  nixpkgs-review = callPackage ../tools/package-management/nixpkgs-review { };
+
+  nix-serve = callPackage ../tools/package-management/nix-serve { };
+
+  nix-simple-deploy = callPackage ../tools/package-management/nix-simple-deploy { };
+
+  alejandra = callPackage ../tools/nix/alejandra { };
+
+  nixfmt = haskell.lib.compose.justStaticExecutables haskellPackages.nixfmt;
+
+  nixpkgs-fmt = callPackage ../tools/nix/nixpkgs-fmt { };
+
+  rnix-hashes = callPackage ../tools/nix/rnix-hashes { };
+
+  nixos-artwork = callPackage ../data/misc/nixos-artwork { };
+  nixos-icons = callPackage ../data/misc/nixos-artwork/icons.nix { };
+  nixos-grub2-theme = callPackage ../data/misc/nixos-artwork/grub2-theme.nix { };
+
+  nixos-container = callPackage ../tools/virtualization/nixos-container { };
+
+  nixos-generators = callPackage ../tools/nix/nixos-generators { };
+
+  nixos-rebuild = callPackage ../os-specific/linux/nixos-rebuild { };
+
+  extra-container = callPackage ../tools/virtualization/extra-container { };
+
+  norwester-font = callPackage ../data/fonts/norwester  {};
+
+  nut = callPackage ../applications/misc/nut { };
+
+  nhentai = callPackage ../applications/misc/nhentai { };
+
+  nvd = callPackage ../tools/package-management/nvd { };
+
+  solfege = python3Packages.callPackage ../misc/solfege { };
+
+  disnix = callPackage ../tools/package-management/disnix { };
+
+  dysnomia = callPackage ../tools/package-management/disnix/dysnomia (config.disnix or {
+    inherit (python2Packages) supervisor;
+  });
+
+  dydisnix = callPackage ../tools/package-management/disnix/dydisnix { };
+
+  disnixos = callPackage ../tools/package-management/disnix/disnixos { };
+
+  DisnixWebService = callPackage ../tools/package-management/disnix/DisnixWebService { };
+
+  i3a = callPackage ../misc/i3a { };
+
+  lkproof = callPackage ../tools/typesetting/tex/lkproof { };
+
+  lice = python3Packages.callPackage ../tools/misc/lice {};
+
+  m33-linux = callPackage ../misc/drivers/m33-linux { };
+
+  mnemonicode = callPackage ../misc/mnemonicode { };
+
+  mysql-workbench = callPackage ../applications/misc/mysql-workbench (let mysql = mysql57; in {
+    gdal = gdal.override {
+      libmysqlclient = mysql // {
+        lib = { dev = mysql; }
+      ;}
+    ;};
+    mysql = mysql;
+    pcre = pcre-cpp;
+    jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  });
+
+  r128gain = callPackage ../applications/audio/r128gain { };
+
+  redis-desktop-manager = libsForQt5.callPackage ../applications/misc/redis-desktop-manager { };
+
+  robin-map = callPackage ../development/libraries/robin-map { };
+
+  robo3t = callPackage ../applications/misc/robo3t { };
+
+  rucksack = callPackage ../development/tools/rucksack { };
+
+  sam-ba = callPackage ../tools/misc/sam-ba { };
+
+  sndio = callPackage ../misc/sndio { };
+
+  stork = callPackage ../applications/misc/stork { };
+
+  oclgrind = callPackage ../development/tools/analysis/oclgrind { };
+
+  opkg = callPackage ../tools/package-management/opkg { };
+
+  opkg-utils = callPackage ../tools/package-management/opkg-utils { };
+
+  OSCAR = qt5.callPackage ../applications/misc/OSCAR { };
+
+  pcem = callPackage ../applications/emulators/pcem { };
+
+  pgmanage = callPackage ../applications/misc/pgmanage { };
+
+  pgadmin4 = callPackage ../tools/admin/pgadmin { };
+
+  pgadmin3 = callPackage ../tools/admin/pgadmin/3.nix {
+    openssl = openssl_1_0_2;
+  };
+
+  pgmodeler = libsForQt5.callPackage ../applications/misc/pgmodeler { };
+
+  pgf = pgf2;
+
+  # Keep the old PGF since some documents don't render properly with
+  # the new one.
+  pgf1 = callPackage ../tools/typesetting/tex/pgf/1.x.nix { };
+
+  pgf2 = callPackage ../tools/typesetting/tex/pgf/2.x.nix { };
+
+  pgf3 = callPackage ../tools/typesetting/tex/pgf/3.x.nix { };
+
+  pgfplots = callPackage ../tools/typesetting/tex/pgfplots { };
+
+  physlock = callPackage ../misc/screensavers/physlock { };
+
+  pjsip = callPackage ../applications/networking/pjsip {
+    inherit (darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  pounce = callPackage ../servers/pounce { };
+
+  ppsspp = libsForQt5.callPackage ../applications/emulators/ppsspp { };
+
+  pt = callPackage ../applications/misc/pt { };
+
+  protocol = python3Packages.callPackage ../applications/networking/protocol { };
+
+  punes = libsForQt5.callPackage ../applications/emulators/punes { };
+
+  pykms = callPackage ../tools/networking/pykms { };
+
+  pyupgrade = with python3Packages; toPythonApplication pyupgrade;
+
+  pwncat = python3Packages.callPackage ../tools/security/pwncat { };
+
+  pwntools = with python3Packages; toPythonApplication pwntools;
+
+  uae = callPackage ../applications/emulators/uae { };
+
+  fsuae = callPackage ../applications/emulators/fs-uae { };
+
+  fsuae-launcher = callPackage ../applications/emulators/fs-uae/launcher.nix { };
+
+  putty = callPackage ../applications/networking/remote/putty {
+    gtk2 = gtk2-x11;
+  };
+
+  qMasterPassword = libsForQt5.callPackage ../applications/misc/qMasterPassword { };
+
+  qtrvsim = libsForQt5.callPackage ../applications/science/computer-architecture/qtrvsim { };
+
+  py-wmi-client = callPackage ../tools/networking/py-wmi-client { };
+
+  qdl = callPackage ../tools/misc/qdl { };
+
+  rates = callPackage ../tools/misc/rates {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  rargs = callPackage ../tools/misc/rargs { };
+
+  rancher = callPackage ../applications/networking/cluster/rancher { };
+
+  rauc = callPackage ../tools/misc/rauc { };
+
+  redprl = callPackage ../applications/science/logic/redprl { };
+
+  renderizer = callPackage ../development/tools/renderizer {};
+
+  retroarchBare = callPackage ../applications/emulators/retroarch {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) AppKit Foundation;
+  };
+
+  wrapRetroArch = { retroarch }: callPackage ../applications/emulators/retroarch/wrapper.nix {
+    inherit retroarch;
+  };
+
+  retroarch = wrapRetroArch { retroarch = retroarchBare; };
+
+  retroarchFull = retroarch.override {
+    cores = builtins.filter
+      # Remove cores not supported on platform
+      (c: c ? libretroCore && (lib.meta.availableOn stdenv.hostPlatform c))
+      (builtins.attrValues libretro);
+  };
+
+  libretro = recurseIntoAttrs (callPackage ../applications/emulators/retroarch/cores.nix {
+    retroarch = retroarchBare;
+  });
+
+  retrofe = callPackage ../applications/emulators/retrofe { };
+
+  rfc-bibtex = python3Packages.callPackage ../development/python-modules/rfc-bibtex { };
+
+  pick-colour-picker = python3Packages.callPackage ../applications/graphics/pick-colour-picker {
+    inherit glib gtk3 gobject-introspection wrapGAppsHook;
+  };
+
+  rpl = callPackage ../tools/text/rpl { };
+
+  ricty = callPackage ../data/fonts/ricty { };
+
+  rmfakecloud = callPackage ../servers/rmfakecloud { };
+
+  rmfuse = callPackage ../tools/filesystems/rmfuse {};
+
+  rmount = callPackage ../tools/filesystems/rmount {};
+
+  romdirfs = callPackage ../tools/filesystems/romdirfs {
+    stdenv = gccStdenv;
+  };
+
+  rss-glx = callPackage ../misc/screensavers/rss-glx { };
+
+  run-scaled = callPackage ../tools/X11/run-scaled { };
+
+  runiq = callPackage ../tools/text/runiq { };
+
+  runit = callPackage ../tools/system/runit { };
+
+  refind = callPackage ../tools/bootloaders/refind { };
+
+  spectrojack = callPackage ../applications/audio/spectrojack { };
+
+  sift = callPackage ../tools/text/sift { };
+
+  xdragon = lowPrio (callPackage ../applications/misc/xdragon { });
+
+  xlockmore = callPackage ../misc/screensavers/xlockmore { };
+
+  xtrlock-pam = callPackage ../misc/screensavers/xtrlock-pam { };
+
+  sailsd = callPackage ../misc/sailsd { };
+
+  shc = callPackage ../tools/security/shc { };
+
+  shellz = callPackage ../tools/security/shellz { };
+
+  canon-cups-ufr2 = callPackage ../misc/cups/drivers/canon { };
+
+  hll2390dw-cups = callPackage ../misc/cups/drivers/hll2390dw-cups { };
+
+  mfcj470dw-cupswrapper = callPackage ../misc/cups/drivers/mfcj470dwcupswrapper { };
+  mfcj470dwlpr = pkgsi686Linux.callPackage ../misc/cups/drivers/mfcj470dwlpr { };
+
+  mfcj6510dw-cupswrapper = callPackage ../misc/cups/drivers/mfcj6510dwcupswrapper { };
+  mfcj6510dwlpr = pkgsi686Linux.callPackage ../misc/cups/drivers/mfcj6510dwlpr { };
+
+  mfcl2700dncupswrapper = callPackage ../misc/cups/drivers/mfcl2700dncupswrapper { };
+  mfcl2700dnlpr = pkgsi686Linux.callPackage ../misc/cups/drivers/mfcl2700dnlpr { };
+
+  mfcl2720dwcupswrapper = callPackage ../misc/cups/drivers/mfcl2720dwcupswrapper { };
+  mfcl2720dwlpr = callPackage ../misc/cups/drivers/mfcl2720dwlpr { };
+
+  mfcl2740dwcupswrapper = callPackage ../misc/cups/drivers/mfcl2740dwcupswrapper { };
+  mfcl2740dwlpr = callPackage ../misc/cups/drivers/mfcl2740dwlpr { };
+
+  # This driver is only available as a 32 bit proprietary binary driver
+  mfcl3770cdwlpr = (callPackage ../misc/cups/drivers/brother/mfcl3770cdw { }).driver;
+  mfcl3770cdwcupswrapper = (callPackage ../misc/cups/drivers/brother/mfcl3770cdw { }).cupswrapper;
+
+  mfcl8690cdwcupswrapper = callPackage ../misc/cups/drivers/mfcl8690cdwcupswrapper { };
+  mfcl8690cdwlpr = callPackage ../misc/cups/drivers/mfcl8690cdwlpr { };
+
+  mfc9140cdncupswrapper = callPackage ../misc/cups/drivers/mfc9140cdncupswrapper { };
+  mfc9140cdnlpr = callPackage ../misc/cups/drivers/mfc9140cdnlpr { };
+
+  samsung-unified-linux-driver_1_00_36 = callPackage ../misc/cups/drivers/samsung/1.00.36 { };
+  samsung-unified-linux-driver_1_00_37 = callPackage ../misc/cups/drivers/samsung/1.00.37.nix { };
+  samsung-unified-linux-driver_4_00_39 = callPackage ../misc/cups/drivers/samsung/4.00.39 { };
+  samsung-unified-linux-driver_4_01_17 = callPackage ../misc/cups/drivers/samsung/4.01.17.nix { };
+  samsung-unified-linux-driver = res.samsung-unified-linux-driver_4_01_17;
+
+  sane-backends = callPackage ../applications/graphics/sane/backends (config.sane or {});
+
+  sane-drivers = callPackage ../applications/graphics/sane/drivers.nix {};
+
+  senv = callPackage ../applications/misc/senv { };
+
+  brlaser = callPackage ../misc/cups/drivers/brlaser { };
+
+  fxlinuxprint = callPackage ../misc/cups/drivers/fxlinuxprint { };
+
+  brscan4 = callPackage ../applications/graphics/sane/backends/brscan4 { };
+
+  brscan5 = callPackage ../applications/graphics/sane/backends/brscan5 { };
+
+  dsseries = callPackage ../applications/graphics/sane/backends/dsseries { };
+
+  sane-airscan = callPackage ../applications/graphics/sane/backends/airscan { };
+
+  mkSaneConfig = callPackage ../applications/graphics/sane/config.nix { };
+
+  sane-frontends = callPackage ../applications/graphics/sane/frontends.nix { };
+
+  sanoid = callPackage ../tools/backup/sanoid { };
+
+  satysfi = callPackage ../tools/typesetting/satysfi { };
+
+  sc-controller = python3Packages.callPackage ../misc/drivers/sc-controller {
+    inherit libusb1; # Shadow python.pkgs.libusb1.
+  };
+
+  sct = callPackage ../tools/X11/sct {};
+
+  scylladb = callPackage ../servers/scylladb {
+    thrift = thrift-0_10;
+  };
+
+  seafile-server = callPackage ../servers/seafile-server { };
+
+  seafile-shared = callPackage ../misc/seafile-shared { };
+
+  ser2net = callPackage ../servers/ser2net {};
+
+  serviio = callPackage ../servers/serviio {};
+  selinux-python = callPackage ../os-specific/linux/selinux-python { };
+
+  slock = callPackage ../misc/screensavers/slock {
+    conf = config.slock.conf or null;
+  };
+
+  smokeping = callPackage ../tools/networking/smokeping { };
+
+  snapraid = callPackage ../tools/filesystems/snapraid { };
+
+  snscrape = with python3Packages; toPythonApplication snscrape;
+
+  soundmodem = callPackage ../applications/radio/soundmodem {};
+
+  soundOfSorting = callPackage ../misc/sound-of-sorting { };
+
+  sourceAndTags = callPackage ../misc/source-and-tags {
+    hasktags = haskellPackages.hasktags;
+  };
+
+  spacenavd = callPackage ../misc/drivers/spacenavd {
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
+  spacenav-cube-example = callPackage ../applications/misc/spacenav-cube-example { };
+
+  spnavcfg = callPackage ../applications/misc/spnavcfg { };
+
+  splix = callPackage ../misc/cups/drivers/splix { };
+
+  steamcontroller = callPackage ../misc/drivers/steamcontroller { };
+
+  stern = callPackage ../applications/networking/cluster/stern { };
+
+  streamripper = callPackage ../applications/audio/streamripper { };
+
+  sqsh = callPackage ../development/tools/sqsh { };
+
+  sumneko-lua-language-server = callPackage ../development/tools/sumneko-lua-language-server { };
+
+  sysz = callPackage  ../tools/misc/sysz { };
+
+  go-swag = callPackage ../development/tools/go-swag { };
+
+  go-swagger = callPackage ../development/tools/go-swagger { };
+
+  jx = callPackage ../applications/networking/cluster/jx {};
+
+  prow = callPackage ../applications/networking/cluster/prow { };
+
+  tagref = callPackage ../tools/misc/tagref { };
+
+  tellico = libsForQt5.callPackage ../applications/misc/tellico { };
+
+  termpdfpy = python3Packages.callPackage ../applications/misc/termpdf.py {};
+
+  inherit (callPackage ../applications/networking/cluster/terraform { })
+    mkTerraform
+    terraform_0_13
+    terraform_0_14
+    terraform_0_15
+    terraform_1
+    terraform_plugins_test
+    ;
+
+  terraform = terraform_1;
+  # deprecated
+  terraform-full = terraform.full;
+
+  terraform-providers = recurseIntoAttrs (
+    callPackage ../applications/networking/cluster/terraform-providers { }
+  );
+
+  terraforming = callPackage ../applications/networking/cluster/terraforming { };
+
+  terraform-compliance = python3Packages.callPackage ../applications/networking/cluster/terraform-compliance {};
+
+  terraform-docs = callPackage ../applications/networking/cluster/terraform-docs {};
+
+  terraform-inventory = callPackage ../applications/networking/cluster/terraform-inventory {};
+
+  terraform-landscape = callPackage ../applications/networking/cluster/terraform-landscape {};
+
+  terragrunt = callPackage ../applications/networking/cluster/terragrunt {};
+
+  terranix = callPackage ../applications/networking/cluster/terranix {};
+
+  tfswitch = callPackage ../applications/networking/cluster/tfswitch {};
+
+  tgswitch = callPackage ../applications/networking/cluster/tgswitch {};
+
+  tilt = callPackage ../applications/networking/cluster/tilt { };
+
+  timeular = callPackage ../applications/office/timeular {};
+
+  tetex = callPackage ../tools/typesetting/tex/tetex { libpng = libpng12; };
+
+  tewi-font = callPackage ../data/fonts/tewi
+    { inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
+
+  texFunctions = callPackage ../tools/typesetting/tex/nix pkgs;
+
+  # TeX Live; see https://nixos.org/nixpkgs/manual/#sec-language-texlive
+  texlive = recurseIntoAttrs
+    (callPackage ../tools/typesetting/tex/texlive { });
+
+  ib-tws = callPackage ../applications/office/ib/tws { jdk=oraclejdk8; };
+
+  ib-controller = callPackage ../applications/office/ib/controller { jdk=oraclejdk8; };
+
+  vcluster = callPackage ../applications/networking/cluster/vcluster {};
+
+  vnote = libsForQt5.callPackage ../applications/office/vnote { };
+
+  sshportal = callPackage ../servers/sshportal { };
+
+  ssh-audit = callPackage ../tools/security/ssh-audit { };
+
+  ssh-tools = callPackage ../applications/misc/ssh-tools { };
+
+  auto-cpufreq = callPackage ../tools/system/auto-cpufreq {  };
+
+  thermald = callPackage ../tools/system/thermald { };
+
+  throttled = callPackage ../tools/system/throttled { };
+
+  thinkfan = callPackage ../tools/system/thinkfan { };
+
+  tp-auto-kbbl = callPackage ../tools/system/tp-auto-kbbl { };
+
+  tup = callPackage ../development/tools/build-managers/tup { };
+
+  tusk = callPackage ../applications/office/tusk { };
+
+  trufflehog = callPackage ../tools/security/trufflehog { };
+
+  tvbrowser-bin = callPackage ../applications/misc/tvbrowser/bin.nix { };
+
+  tvheadend = callPackage ../servers/tvheadend { };
+
+  ums = callPackage ../servers/ums { };
+
+  unity3d = callPackage ../development/tools/unity3d {
+    stdenv = stdenv_32bit;
+    gcc_32bit = pkgsi686Linux.gcc;
+    inherit (gnome2) GConf;
+  };
+
+  unityhub = callPackage ../development/tools/unityhub { };
+
+  urbit = callPackage ../misc/urbit { };
+
+  usb-reset = callPackage ../applications/misc/usb-reset { };
+
+  usql = callPackage ../applications/misc/usql { };
+
+  utf8cpp = callPackage ../development/libraries/utf8cpp { };
+
+  utf8proc = callPackage ../development/libraries/utf8proc { };
+
+  unicode-paracode = callPackage ../tools/misc/unicode { };
+
+  unixcw = libsForQt5.callPackage ../applications/radio/unixcw { };
+
+  vault = callPackage ../tools/security/vault { };
+
+  vault-bin = callPackage ../tools/security/vault/vault-bin.nix { };
+
+  vaultenv = haskell.lib.justStaticExecutables haskellPackages.vaultenv;
+
+  vazir-code-font = callPackage ../data/fonts/vazir-code-font { };
+
+  vaultwarden = callPackage ../tools/security/vaultwarden {
+    inherit (darwin.apple_sdk.frameworks) Security CoreServices;
+  };
+  vaultwarden-sqlite = vaultwarden;
+  vaultwarden-mysql = vaultwarden.override { dbBackend = "mysql"; };
+  vaultwarden-postgresql = vaultwarden.override { dbBackend = "postgresql"; };
+
+  vaultwarden-vault = callPackage ../tools/security/vaultwarden/vault.nix { };
+
+  vazir-fonts = callPackage ../data/fonts/vazir-fonts { };
+
+  vbam = callPackage ../applications/emulators/vbam { };
+
+  vgmstream = callPackage ../applications/audio/vgmstream { };
+
+  vice = callPackage ../applications/emulators/vice { };
+
+  viddy = callPackage ../tools/misc/viddy { };
+
+  ViennaRNA = callPackage ../applications/science/molecular-dynamics/viennarna { };
+
+  viewnior = callPackage ../applications/graphics/viewnior { };
+
+  vimUtils = callPackage ../applications/editors/vim/plugins/vim-utils.nix {
+    inherit (lua51Packages) hasLuaModule;
+  };
+
+  vimPlugins = recurseIntoAttrs (callPackage ../applications/editors/vim/plugins {
+    llvmPackages = llvmPackages_6;
+    luaPackages = lua51Packages;
+  });
+
+  vimb-unwrapped = callPackage ../applications/networking/browsers/vimb { };
+  vimb = wrapFirefox vimb-unwrapped { };
+
+  vikunja-api = callPackage ../servers/web-apps/vikunja/api.nix { };
+  vikunja-frontend = callPackage ../servers/web-apps/vikunja/frontend.nix { };
+
+  vips = callPackage ../tools/graphics/vips {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices Foundation;
+  };
+  nip2 = callPackage ../tools/graphics/nip2 { };
+
+  virglrenderer = callPackage ../development/libraries/virglrenderer { };
+
+  vivid = callPackage ../tools/misc/vivid { };
+
+  vokoscreen = libsForQt5.callPackage ../applications/video/vokoscreen { };
+
+  vokoscreen-ng = libsForQt5.callPackage ../applications/video/vokoscreen-ng {
+    inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly;
+  };
+
+  vsh = callPackage ../tools/misc/vsh { };
+
+  vttest = callPackage ../tools/misc/vttest { };
+
+  wacomtablet = libsForQt5.callPackage ../tools/misc/wacomtablet { };
+
+  wasmer = callPackage ../development/interpreters/wasmer { };
+
+  yabasic = callPackage ../development/interpreters/yabasic { };
+
+  wasm-pack = callPackage ../development/tools/wasm-pack {
+    inherit (darwin.apple_sdk.frameworks) Security;
+    libressl = libressl_3_2;
+  };
+
+  wavegain = callPackage ../applications/audio/wavegain { };
+
+  wcalc = callPackage ../applications/misc/wcalc { };
+
+  webfs = callPackage ../servers/http/webfs { };
+
+  webkit2-sharp = callPackage ../development/libraries/webkit2-sharp {  };
+
+  websocketd = callPackage ../applications/networking/websocketd { };
+
+  wike = callPackage ../applications/misc/wike { };
+
+  wikicurses = callPackage ../applications/misc/wikicurses {
+    pythonPackages = python3Packages;
+  };
+
+  wiki-js = callPackage ../servers/web-apps/wiki-js { };
+
+  wiki-tui = callPackage ../misc/wiki-tui {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  winePackagesFor = wineBuild: lib.makeExtensible (self: with self; {
+    callPackage = newScope self;
+
+    inherit wineBuild;
+
+    inherit (callPackage ./wine-packages.nix {})
+      minimal base full stable stableFull unstable unstableFull staging stagingFull wayland waylandFull fonts;
+  });
+
+  winePackages = recurseIntoAttrs (winePackagesFor (config.wine.build or "wine32"));
+  wine64Packages = recurseIntoAttrs (winePackagesFor "wine64");
+  wineWowPackages = recurseIntoAttrs (winePackagesFor "wineWow");
+
+  wine = winePackages.full;
+  wine64 = wine64Packages.full;
+
+  wine-staging = lowPrio (winePackages.full.override {
+    wineRelease = "staging";
+  });
+
+  wine-wayland = lowPrio (winePackages.full.override {
+    wineRelease = "wayland";
+  });
+
+  winetricks = callPackage ../applications/emulators/wine/winetricks.nix {
+    inherit (gnome) zenity;
+  };
+
+  wishbone-tool = callPackage ../development/tools/misc/wishbone-tool { };
+
+  with-shell = callPackage ../applications/misc/with-shell { };
+
+  wmutils-core = callPackage ../tools/X11/wmutils-core { };
+
+  wmutils-libwm = callPackage ../tools/X11/wmutils-libwm { };
+
+  wmutils-opt = callPackage ../tools/X11/wmutils-opt { };
+
+  wordpress = callPackage ../servers/web-apps/wordpress { };
+
+  wprecon = callPackage ../tools/security/wprecon { };
+
+  wraith = callPackage ../applications/networking/irc/wraith { };
+
+  wxsqlite3 = callPackage ../development/libraries/wxsqlite3 {
+    wxGTK = wxGTK30;
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+    inherit (darwin.stubs) setfile rez derez;
+  };
+
+  wxsqliteplus = callPackage ../development/libraries/wxsqliteplus {
+    wxGTK = wxGTK30;
+  };
+
+  x11idle = callPackage ../tools/misc/x11idle {};
+
+  x11docker = callPackage ../applications/virtualization/x11docker { };
+
+  x2x = callPackage ../tools/X11/x2x { };
+
+  xboxdrv = callPackage ../misc/drivers/xboxdrv { };
+
+  xortool = python3Packages.callPackage ../tools/security/xortool { };
+
+  xorex = callPackage ../tools/security/xorex { };
+
+  xow = callPackage ../misc/drivers/xow { };
+
+  xbps = callPackage ../tools/package-management/xbps { };
+
+  xcftools = callPackage ../tools/graphics/xcftools { };
+
+  xhyve = callPackage ../applications/virtualization/xhyve {
+    inherit (darwin.apple_sdk.frameworks) Hypervisor vmnet;
+    inherit (darwin.apple_sdk.libs) xpc;
+    inherit (darwin) libobjc;
+  };
+
+  xinput_calibrator = callPackage ../tools/X11/xinput_calibrator { };
+
+  xlayoutdisplay = callPackage ../tools/X11/xlayoutdisplay { };
+
+  xlog = callPackage ../applications/radio/xlog { };
+
+  xmagnify = callPackage ../tools/X11/xmagnify { };
+
+  xosd = callPackage ../misc/xosd { };
+
+  xosview2 = callPackage ../tools/X11/xosview2 { };
+
+  xow_dongle-firmware = callPackage ../os-specific/linux/firmware/xow_dongle-firmware { };
+
+  xpad = callPackage ../applications/misc/xpad { };
+
+  xsane = callPackage ../applications/graphics/sane/xsane.nix {
+    libpng = libpng12;
+    sane-backends = sane-backends.override { libpng = libpng12; };
+  };
+
+  xsw = callPackage ../applications/misc/xsw {
+    # Enable the next line to use this in terminal.
+    # Note that it requires sixel capable terminals such as mlterm
+    # or xterm -ti 340
+    SDL = SDL_sixel;
+  };
+
+  xteddy = callPackage ../applications/misc/xteddy { };
+
+  xva-img = callPackage ../tools/virtualization/xva-img { };
+
+  xwiimote = callPackage ../misc/drivers/xwiimote { };
+
+  xzoom = callPackage ../tools/X11/xzoom {};
+
+  yabai = callPackage ../os-specific/darwin/yabai { };
+
+  yabause = libsForQt5.callPackage ../applications/emulators/yabause {
+    freeglut = null;
+    openal = null;
+  };
+
+  yacreader = libsForQt5.callPackage ../applications/graphics/yacreader { };
+
+  yadm = callPackage ../applications/version-management/yadm { };
+
+  yamale = with python3Packages; toPythonApplication yamale;
+
+  yamdi = callPackage ../tools/video/yamdi { };
+
+  yandex-browser = callPackage ../applications/networking/browsers/yandex-browser { };
+
+  yandex-disk = callPackage ../tools/filesystems/yandex-disk { };
+
+  yara = callPackage ../tools/security/yara { };
+
+  yarGen = callPackage ../tools/security/yarGen { };
+
+  yaxg = callPackage ../tools/graphics/yaxg {};
+
+  yuzu-mainline = import ../applications/emulators/yuzu {
+    branch = "mainline";
+    inherit libsForQt5 fetchFromGitHub;
+  };
+  yuzu-ea = import ../applications/emulators/yuzu {
+    branch = "early-access";
+    inherit libsForQt5 fetchFromGitHub;
+  };
+
+  zap = callPackage ../tools/networking/zap { };
+
+  zigbee2mqtt = callPackage ../servers/zigbee2mqtt { };
+
+  zopfli = callPackage ../tools/compression/zopfli { };
+
+  myEnvFun = callPackage ../misc/my-env {
+    inherit (stdenv) mkDerivation;
+  };
+
+  znc = callPackage ../applications/networking/znc { };
+
+  zncModules = recurseIntoAttrs (
+    callPackage ../applications/networking/znc/modules.nix { }
+  );
+
+  zoneminder = callPackage ../servers/zoneminder { };
+
+  zsnes = pkgsi686Linux.callPackage ../applications/emulators/zsnes { };
+
+  xcp = callPackage ../tools/misc/xcp { };
+
+  xcpc = callPackage ../applications/emulators/xcpc { };
+
+  zxcvbn-c = callPackage ../development/libraries/zxcvbn-c { };
+
+  zxing-cpp = callPackage ../development/libraries/zxing-cpp { };
+
+  snes9x-gtk = callPackage ../applications/emulators/snes9x-gtk { };
+
+  openmsx = callPackage ../applications/emulators/openmsx {
+    python = python3;
+  };
+
+  higan = callPackage ../applications/emulators/higan { };
+
+  bsnes-hd = callPackage ../applications/emulators/bsnes-hd {
+    inherit (gnome2) gtksourceview;
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenAL;
+  };
+
+  yapesdl = callPackage ../applications/emulators/yapesdl { };
+
+  x16-emulator = callPackage ../applications/emulators/commanderx16/emulator.nix { };
+  x16-rom = callPackage ../applications/emulators/commanderx16/rom.nix { };
+  x16-run = (callPackage ../applications/emulators/commanderx16/run.nix { }) {
+    emulator = x16-emulator;
+    rom = x16-rom;
+  };
+
+  bullet = callPackage ../development/libraries/bullet {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL;
+  };
+
+  bullet-roboschool = callPackage ../development/libraries/bullet/roboschool-fork.nix {
+    inherit (darwin.apple_sdk.frameworks) Cocoa OpenGL;
+  };
+
+  inherit (callPackages ../development/libraries/spdlog { })
+    spdlog_0 spdlog_1;
+
+  spdlog = spdlog_1;
+
+  dart = callPackage ../development/interpreters/dart { };
+
+  httrack = callPackage ../tools/backup/httrack { };
+
+  httraqt = libsForQt5.callPackage ../tools/backup/httrack/qt.nix { };
+
+  mg = callPackage ../applications/editors/mg { };
+
+  mpvc = callPackage ../applications/misc/mpvc { };
+
+  discord = import ../applications/networking/instant-messengers/discord {
+    branch = "stable";
+    inherit pkgs lib stdenv;
+  };
+
+  discord-ptb = import ../applications/networking/instant-messengers/discord {
+    branch = "ptb";
+    inherit pkgs lib stdenv;
+  };
+
+  discord-canary = import ../applications/networking/instant-messengers/discord {
+    branch = "canary";
+    inherit pkgs lib stdenv;
+  };
+
+  golden-cheetah = libsForQt514.callPackage ../applications/misc/golden-cheetah {};
+
+  linkchecker = callPackage ../tools/networking/linkchecker { };
+
+  tomb = callPackage ../os-specific/linux/tomb {};
+
+  imatix_gsl = callPackage ../development/tools/imatix_gsl {};
+
+  sccache = callPackage ../development/tools/misc/sccache {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  sequeler = callPackage ../applications/misc/sequeler { };
+
+  sequelpro = callPackage ../applications/misc/sequelpro {};
+
+  snowsql = callPackage ../applications/misc/snowsql {};
+
+  snowmachine = python3Packages.callPackage ../applications/misc/snowmachine {};
+
+  sidequest = callPackage ../applications/misc/sidequest {};
+
+  maphosts = callPackage ../tools/networking/maphosts {};
+
+  zimg = callPackage ../development/libraries/zimg { };
+
+  wtf = callPackage ../applications/misc/wtf { };
+
+  zk-shell = callPackage ../applications/misc/zk-shell { };
+
+  tora = libsForQt5.callPackage ../development/tools/tora {};
+
+  xulrunner = firefox-unwrapped;
+
+  xrq = callPackage ../applications/misc/xrq { };
+
+  pynitrokey = callPackage ../tools/security/pynitrokey { };
+
+  nitrokey-app = libsForQt5.callPackage ../tools/security/nitrokey-app { };
+  nitrokey-udev-rules = callPackage ../tools/security/nitrokey-app/udev-rules.nix { };
+
+  fpm2 = callPackage ../tools/security/fpm2 { };
+
+  simplenote = callPackage ../applications/misc/simplenote { };
+
+  hy = callPackage ../development/interpreters/hy {};
+
+  wmic-bin = callPackage ../servers/monitoring/plugins/wmic-bin.nix { };
+
+  check-uptime = callPackage ../servers/monitoring/plugins/uptime.nix { };
+
+  ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { inherit (darwin) cctools; };
+
+  vdr = callPackage ../applications/video/vdr { };
+  vdrPlugins = recurseIntoAttrs (callPackage ../applications/video/vdr/plugins.nix { });
+  wrapVdr = callPackage ../applications/video/vdr/wrapper.nix {};
+
+  chrome-export = callPackage ../tools/misc/chrome-export {};
+
+  chrome-gnome-shell = callPackage  ../desktops/gnome/extensions/chrome-gnome-shell {};
+
+  chrome-token-signing = libsForQt5.callPackage ../tools/security/chrome-token-signing {};
+
+  NSPlist = callPackage ../development/libraries/NSPlist {};
+
+  PlistCpp = callPackage ../development/libraries/PlistCpp {
+    boost = boost172;
+  };
+
+  xib2nib = callPackage ../development/tools/xib2nib {};
+
+  linode-cli = python3Packages.callPackage ../tools/virtualization/linode-cli {};
+
+  hss = callPackage ../tools/networking/hss {};
+
+  undaemonize = callPackage ../tools/system/undaemonize {};
+
+  houdini = callPackage ../applications/misc/houdini {};
+
+  openfst = callPackage ../development/libraries/openfst {};
+
+  opengrm-ngram = callPackage ../development/libraries/opengrm-ngram {};
+
+  openring = callPackage ../applications/misc/openring { };
+
+  openvino = callPackage ../development/libraries/openvino {
+    python = python3;
+  };
+
+  phonetisaurus = callPackage ../development/libraries/phonetisaurus {
+    # https://github.com/AdolfVonKleist/Phonetisaurus/issues/70
+    openfst = openfst.overrideAttrs (_: rec {
+      version = "1.7.9";
+      src = fetchurl {
+        url = "http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-${version}.tar.gz";
+        sha256 = "1pmx1yhn2gknj0an0zwqmzgwjaycapi896244np50a8y3nrsw6ck";
+      };
+    });
+  };
+
+  duti = callPackage ../os-specific/darwin/duti {
+    inherit (darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  dnstake = callPackage ../tools/networking/dnstake {};
+
+  dnstracer = callPackage ../tools/networking/dnstracer {
+    inherit (darwin) libresolv;
+  };
+
+  dnstwist = callPackage ../tools/networking/dnstwist {};
+
+  dsniff = callPackage ../tools/networking/dsniff {};
+
+  wal-g = callPackage ../tools/backup/wal-g { };
+
+  tlwg = callPackage ../data/fonts/tlwg { };
+
+  tt2020 = callPackage ../data/fonts/tt2020 { };
+
+  simplehttp2server = callPackage ../servers/simplehttp2server { };
+
+  simple-http-server = callPackage ../servers/simple-http-server {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  diceware = with python3Packages; toPythonApplication diceware;
+
+  xml2rfc = with python3Packages; toPythonApplication xml2rfc;
+
+  mmark = callPackage ../tools/typesetting/mmark { };
+
+  wire-desktop = callPackage ../applications/networking/instant-messengers/wire-desktop { };
+
+  teseq = callPackage ../applications/misc/teseq {  };
+
+  ape = callPackage ../applications/misc/ape { };
+  attemptoClex = callPackage ../applications/misc/ape/clex.nix { };
+  apeClex = callPackage ../applications/misc/ape/apeclex.nix { };
+
+  # Unix tools
+  unixtools = recurseIntoAttrs (callPackages ./unixtools.nix { });
+  inherit (unixtools) hexdump ps logger eject umount
+                      mount wall hostname more sysctl getconf
+                      getent locale killall xxd watch;
+
+  fts = if stdenv.hostPlatform.isMusl then netbsd.fts else null;
+
+  bsdSetupHook = makeSetupHook {
+    name = "bsd-setup-hook";
+  } ../os-specific/bsd/setup-hook.sh;
+
+  netbsd = callPackage ../os-specific/bsd/netbsd {};
+  netbsdCross = callPackage ../os-specific/bsd/netbsd {
+    stdenv = crossLibcStdenv;
+  };
+
+  yrd = callPackage ../tools/networking/yrd { };
+
+  powershell = callPackage ../shells/powershell { };
+
+  doing = callPackage ../applications/misc/doing  { };
+
+  undervolt = callPackage ../os-specific/linux/undervolt { };
+
+  alibuild = callPackage ../development/tools/build-managers/alibuild {
+    python = python3;
+  };
+
+  tsukae = callPackage ../applications/misc/tsukae { };
+
+  tsung = callPackage ../applications/networking/tsung {};
+
+  bcompare = libsForQt5.callPackage ../applications/version-management/bcompare {};
+
+  pentablet-driver = libsForQt5.callPackage ../misc/drivers/pentablet-driver { };
+
+  new-session-manager = callPackage ../applications/audio/new-session-manager { };
+
+  newlib = callPackage ../development/misc/newlib { };
+  newlibCross = callPackage ../development/misc/newlib {
+    stdenv = crossLibcStdenv;
+  };
+
+  newlib-nano = callPackage ../development/misc/newlib {
+    nanoizeNewlib = true;
+  };
+  newlib-nanoCross = callPackage ../development/misc/newlib {
+    nanoizeNewlib = true;
+    stdenv = crossLibcStdenv;
+  };
+
+  omnisharp-roslyn = callPackage ../development/tools/omnisharp-roslyn { };
+
+  wasmtime = callPackage ../development/interpreters/wasmtime {};
+
+  wfuzz = with python3Packages; toPythonApplication wfuzz;
+
+  bemenu = callPackage ../applications/misc/bemenu { };
+
+  _9menu = callPackage ../applications/misc/9menu { };
+
+  dapper = callPackage ../development/tools/dapper { };
+
+  kube3d =  callPackage ../applications/networking/cluster/kube3d {};
+
+  zfs-prune-snapshots = callPackage ../tools/backup/zfs-prune-snapshots {};
+
+  zfs-replicate = python3Packages.callPackage ../tools/backup/zfs-replicate { };
+
+  zrepl = callPackage ../tools/backup/zrepl { };
+
+  uhubctl = callPackage ../tools/misc/uhubctl {};
+
+  kodelife = callPackage ../applications/graphics/kodelife {};
+
+  bunnyfetch = callPackage ../tools/misc/bunnyfetch {};
+
+  _3proxy = callPackage ../applications/networking/3proxy {};
+
+  pigeon = callPackage ../development/tools/pigeon {};
+
+  verifpal = callPackage ../tools/security/verifpal {};
+
+  nix-store-gcs-proxy = callPackage ../tools/nix/nix-store-gcs-proxy {};
+
+  webwormhole = callPackage ../tools/networking/webwormhole { };
+
+  werf = callPackage ../applications/networking/cluster/werf { };
+
+  wifi-password = callPackage ../os-specific/darwin/wifi-password {};
+
+  qubes-core-vchan-xen = callPackage ../applications/qubes/qubes-core-vchan-xen {};
+
+  coz = callPackage ../development/tools/analysis/coz {};
+
+  keycard-cli = callPackage ../tools/security/keycard-cli {};
+
+  sieveshell = with python3.pkgs; toPythonApplication managesieve;
+
+  gortr = callPackage ../servers/gortr {};
+
+  stayrtr = callPackage ../servers/stayrtr {};
+
+  sentencepiece = callPackage ../development/libraries/sentencepiece {};
+
+  kcli = callPackage ../development/tools/kcli { };
+
+  pxlib = callPackage ../development/libraries/pxlib {};
+
+  pxview = callPackage ../development/tools/pxview {};
+
+  unstick = callPackage ../os-specific/linux/unstick {};
+
+  quartus-prime-lite = callPackage ../applications/editors/quartus-prime {};
+
+  usb-blaster-udev-rules = callPackage ../os-specific/linux/usb-blaster-udev-rules {};
+
+  go-license-detector = callPackage ../development/tools/misc/go-license-detector { };
+
+  hashdeep = callPackage ../tools/security/hashdeep { };
+
+  pdf-parser = callPackage ../tools/misc/pdf-parser {};
+
+  fluxboxlauncher = callPackage ../applications/misc/fluxboxlauncher {};
+
+  btcdeb = callPackage ../applications/blockchains/btcdeb { };
+
+  inherit (callPackage ../applications/networking/instant-messengers/jami {
+    # TODO: remove once `udev` is `systemdMinimal` everywhere.
+    udev = systemdMinimal;
+    jack = libjack2;
+  })
+    jami-daemon jami-libclient jami-client-gnome jami-client-qt;
+
+  jitsi-meet-electron = callPackage ../applications/networking/instant-messengers/jitsi-meet-electron {
+    electron = electron_16;
+  };
+
+  zenstates = callPackage ../os-specific/linux/zenstates {};
+
+  ryzenadj = callPackage ../os-specific/linux/ryzenadj {};
+
+  vpsfree-client = callPackage ../tools/virtualization/vpsfree-client {};
+
+  gpio-utils = callPackage ../os-specific/linux/kernel/gpio-utils.nix { };
+
+  navidrome = callPackage ../servers/misc/navidrome {};
+
+  zalgo = callPackage ../tools/misc/zalgo { };
+
+  zettlr = callPackage ../applications/misc/zettlr {
+    texlive = texlive.combined.scheme-medium;
+  };
+
+  unifi-poller = callPackage ../servers/monitoring/unifi-poller {};
+
+  fac-build = callPackage ../development/tools/build-managers/fac {};
+
+  treefmt = callPackage ../development/tools/treefmt { };
+
+  bottom = callPackage ../tools/system/bottom {
+    inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation IOKit;
+  };
+
+  cagebreak = callPackage ../applications/window-managers/cagebreak {
+    wlroots = wlroots_0_14;
+  };
+
+  psftools = callPackage ../os-specific/linux/psftools {};
+
+  lc3tools = callPackage ../development/tools/lc3tools {};
+
+  xcolor = callPackage ../tools/graphics/xcolor { };
+
+  xcfun = callPackage ../development/libraries/science/chemistry/xcfun { };
+
+  xsos = callPackage ../os-specific/linux/xsos { };
+
+  zesarux = callPackage ../applications/emulators/zesarux { };
+
+  zk = callPackage ../applications/office/zk {};
+
+  zktree = callPackage ../applications/misc/zktree {};
+
+  zrythm = callPackage ../applications/audio/zrythm {
+    inherit (plasma5Packages) breeze-icons;
+  };
+
+  zthrottle = callPackage ../tools/misc/zthrottle { };
+
+  honeymarker = callPackage ../servers/tracing/honeycomb/honeymarker { };
+
+  honeytail = callPackage ../servers/tracing/honeycomb/honeytail { };
+
+  honeyvent = callPackage ../servers/tracing/honeycomb/honeyvent { };
+}
diff --git a/nixpkgs/pkgs/top-level/beam-packages.nix b/nixpkgs/pkgs/top-level/beam-packages.nix
new file mode 100644
index 000000000000..828545ff7fa0
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/beam-packages.nix
@@ -0,0 +1,114 @@
+{ beam, callPackage, wxGTK30, buildPackages, stdenv
+, wxSupport ? true
+, systemdSupport ? stdenv.isLinux
+}:
+
+with beam; {
+  lib = callPackage ../development/beam-modules/lib.nix { };
+
+  # R24 is the default version.
+  # The main switch to change default Erlang version.
+  defaultVersion = "erlangR24";
+
+  # Each
+  interpreters = with beam.interpreters; {
+
+    erlang = beam.interpreters.${defaultVersion};
+    erlang_odbc = beam.interpreters."${defaultVersion}_odbc";
+    erlang_javac = beam.interpreters."${defaultVersion}_javac";
+    erlang_odbc_javac = beam.interpreters."${defaultVersion}_odbc_javac";
+
+    # Standard Erlang versions, using the generic builder.
+
+    # R24
+    erlangR24 = lib.callErlang ../development/interpreters/erlang/R24.nix {
+      wxGTK = wxGTK30;
+      # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
+      parallelBuild = true;
+      autoconf = buildPackages.autoconf269;
+      inherit wxSupport systemdSupport;
+    };
+    erlangR24_odbc = erlangR24.override { odbcSupport = true; };
+    erlangR24_javac = erlangR24.override { javacSupport = true; };
+    erlangR24_odbc_javac = erlangR24.override {
+      javacSupport = true;
+      odbcSupport = true;
+    };
+
+    # R23
+    erlangR23 = lib.callErlang ../development/interpreters/erlang/R23.nix {
+      wxGTK = wxGTK30;
+      # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
+      parallelBuild = true;
+      autoconf = buildPackages.autoconf269;
+      inherit wxSupport systemdSupport;
+    };
+    erlangR23_odbc = erlangR23.override { odbcSupport = true; };
+    erlangR23_javac = erlangR23.override { javacSupport = true; };
+    erlangR23_odbc_javac = erlangR23.override {
+      javacSupport = true;
+      odbcSupport = true;
+    };
+
+    # R22
+    erlangR22 = lib.callErlang ../development/interpreters/erlang/R22.nix {
+      wxGTK = wxGTK30;
+      # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
+      parallelBuild = true;
+      autoconf = buildPackages.autoconf269;
+      inherit wxSupport systemdSupport;
+    };
+    erlangR22_odbc = erlangR22.override { odbcSupport = true; };
+    erlangR22_javac = erlangR22.override { javacSupport = true; };
+    erlangR22_odbc_javac = erlangR22.override {
+      javacSupport = true;
+      odbcSupport = true;
+    };
+
+    # R21
+    erlangR21 = lib.callErlang ../development/interpreters/erlang/R21.nix {
+      wxGTK = wxGTK30;
+      autoconf = buildPackages.autoconf269;
+      inherit wxSupport systemdSupport;
+    };
+    erlangR21_odbc = erlangR21.override { odbcSupport = true; };
+    erlangR21_javac = erlangR21.override { javacSupport = true; };
+    erlangR21_odbc_javac = erlangR21.override {
+      javacSupport = true;
+      odbcSupport = true;
+    };
+
+    # Basho fork, using custom builder.
+    erlang_basho_R16B02 =
+      lib.callErlang ../development/interpreters/erlang/R16B02-basho.nix {
+        autoconf = buildPackages.autoconf269;
+        inherit wxSupport;
+      };
+    erlang_basho_R16B02_odbc =
+      erlang_basho_R16B02.override { odbcSupport = true; };
+
+    # Other Beam languages. These are built with `beam.interpreters.erlang`. To
+    # access for example elixir built with different version of Erlang, use
+    # `beam.packages.erlangR24.elixir`.
+    inherit (packages.erlang)
+      elixir elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir_1_9 elixir_ls;
+
+    inherit (packages.erlang) lfe lfe_1_3;
+  };
+
+  # Helper function to generate package set with a specific Erlang version.
+  packagesWith = erlang:
+    callPackage ../development/beam-modules { inherit erlang; };
+
+  # Each field in this tuple represents all Beam packages in nixpkgs built with
+  # appropriate Erlang/OTP version.
+  packages = {
+    # Packages built with default Erlang version.
+    erlang = packages.${defaultVersion};
+
+    erlangR24 = packagesWith interpreters.erlangR24;
+    erlangR23 = packagesWith interpreters.erlangR23;
+    erlangR22 = packagesWith interpreters.erlangR22;
+    erlangR21 = packagesWith interpreters.erlangR21;
+  };
+}
diff --git a/nixpkgs/pkgs/top-level/config.nix b/nixpkgs/pkgs/top-level/config.nix
new file mode 100644
index 000000000000..7a5b4bdd1798
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/config.nix
@@ -0,0 +1,41 @@
+# This file defines the structure of the `config` nixpkgs option.
+
+{ lib, ... }:
+
+with lib;
+
+let
+
+  mkMassRebuild = args: mkOption (builtins.removeAttrs args [ "feature" ] // {
+    type = args.type or (types.uniq types.bool);
+    default = args.default or false;
+    description = (args.description or ''
+      Whether to ${args.feature} while building nixpkgs packages.
+    '') + ''
+      Changing the default may cause a mass rebuild.
+    '';
+  });
+
+  options = {
+
+    /* Internal stuff */
+
+    warnings = mkOption {
+      type = types.listOf types.str;
+      default = [];
+      internal = true;
+    };
+
+    /* Config options */
+
+    doCheckByDefault = mkMassRebuild {
+      feature = "run <literal>checkPhase</literal> by default";
+    };
+
+  };
+
+in {
+
+  inherit options;
+
+}
diff --git a/nixpkgs/pkgs/top-level/coq-packages.nix b/nixpkgs/pkgs/top-level/coq-packages.nix
new file mode 100644
index 000000000000..b5b7158de647
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/coq-packages.nix
@@ -0,0 +1,163 @@
+{ lib, stdenv, callPackage, newScope, recurseIntoAttrs, ocamlPackages_4_05, ocamlPackages_4_09
+, ocamlPackages_4_10, ocamlPackages_4_12, fetchpatch, makeWrapper, coq2html
+}@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 lib;
+      coqPackages = self;
+
+      mkCoqDerivation = callPackage ../build-support/coq {};
+
+      contribs = recurseIntoAttrs
+        (callPackage ../development/coq-modules/contribs {});
+
+      aac-tactics = callPackage ../development/coq-modules/aac-tactics {};
+      addition-chains = callPackage ../development/coq-modules/addition-chains {};
+      autosubst = callPackage ../development/coq-modules/autosubst {};
+      bignums = if lib.versionAtLeast coq.coq-version "8.6"
+        then callPackage ../development/coq-modules/bignums {}
+        else null;
+      category-theory = callPackage ../development/coq-modules/category-theory { };
+      ceres = callPackage ../development/coq-modules/ceres {};
+      Cheerios = callPackage ../development/coq-modules/Cheerios {};
+      CoLoR = callPackage ../development/coq-modules/CoLoR {};
+      compcert = callPackage ../development/coq-modules/compcert {
+        inherit fetchpatch makeWrapper coq2html lib stdenv;
+      };
+      coq-bits = callPackage ../development/coq-modules/coq-bits {};
+      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 { };
+      coq-record-update = callPackage ../development/coq-modules/coq-record-update { };
+      coqeal = callPackage ../development/coq-modules/coqeal {};
+      coqhammer = callPackage ../development/coq-modules/coqhammer {};
+      coqprime = callPackage ../development/coq-modules/coqprime {};
+      coqtail-math = callPackage ../development/coq-modules/coqtail-math {};
+      coquelicot = callPackage ../development/coq-modules/coquelicot {};
+      corn = callPackage ../development/coq-modules/corn {};
+      deriving = callPackage ../development/coq-modules/deriving {};
+      dpdgraph = callPackage ../development/coq-modules/dpdgraph {};
+      equations = callPackage ../development/coq-modules/equations { };
+      extructures = callPackage ../development/coq-modules/extructures { };
+      fiat_HEAD = callPackage ../development/coq-modules/fiat/HEAD.nix {};
+      flocq = callPackage ../development/coq-modules/flocq {};
+      fourcolor = callPackage ../development/coq-modules/fourcolor {};
+      gaia = callPackage ../development/coq-modules/gaia {};
+      gaia-hydras = callPackage ../development/coq-modules/gaia-hydras {};
+      gappalib = callPackage ../development/coq-modules/gappalib {};
+      goedel = callPackage ../development/coq-modules/goedel {};
+      graph-theory = callPackage ../development/coq-modules/graph-theory {};
+      heq = callPackage ../development/coq-modules/heq {};
+      hierarchy-builder = callPackage ../development/coq-modules/hierarchy-builder {};
+      HoTT = callPackage ../development/coq-modules/HoTT {};
+      hydra-battles = callPackage ../development/coq-modules/hydra-battles {};
+      interval = callPackage ../development/coq-modules/interval {};
+      InfSeqExt = callPackage ../development/coq-modules/InfSeqExt {};
+      iris = callPackage ../development/coq-modules/iris {};
+      itauto = callPackage ../development/coq-modules/itauto { };
+      ITree = callPackage ../development/coq-modules/ITree { };
+      LibHyps = callPackage ../development/coq-modules/LibHyps {};
+      ltac2 = callPackage ../development/coq-modules/ltac2 {};
+      math-classes = callPackage ../development/coq-modules/math-classes { };
+      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-abel = callPackage ../development/coq-modules/mathcomp-abel {};
+      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 {};
+      mathcomp-word = callPackage ../development/coq-modules/mathcomp-word {};
+      mathcomp-zify = callPackage ../development/coq-modules/mathcomp-zify {};
+      mathcomp-tarjan = callPackage ../development/coq-modules/mathcomp-tarjan {};
+      metalib = callPackage ../development/coq-modules/metalib { };
+      multinomials = callPackage ../development/coq-modules/multinomials {};
+      odd-order = callPackage ../development/coq-modules/odd-order { };
+      paco = callPackage ../development/coq-modules/paco {};
+      paramcoq = callPackage ../development/coq-modules/paramcoq {};
+      parsec = callPackage ../development/coq-modules/parsec {};
+      pocklington = callPackage ../development/coq-modules/pocklington {};
+      QuickChick = callPackage ../development/coq-modules/QuickChick {};
+      reglang = callPackage ../development/coq-modules/reglang {};
+      relation-algebra = callPackage ../development/coq-modules/relation-algebra {};
+      semantics = callPackage ../development/coq-modules/semantics {};
+      serapi = callPackage ../development/coq-modules/serapi {};
+      simple-io = callPackage ../development/coq-modules/simple-io { };
+      smpl = callPackage ../development/coq-modules/smpl { };
+      stdpp = callPackage ../development/coq-modules/stdpp { };
+      StructTact = callPackage ../development/coq-modules/StructTact {};
+      tlc = callPackage ../development/coq-modules/tlc {};
+      topology = callPackage ../development/coq-modules/topology {};
+      Velisarios = callPackage ../development/coq-modules/Velisarios {};
+      Verdi = callPackage ../development/coq-modules/Verdi {};
+      VST = callPackage ../development/coq-modules/VST {};
+      zorns-lemma = callPackage ../development/coq-modules/zorns-lemma {};
+      filterPackages = doesFilter: if doesFilter then filterCoqPackages self else self;
+    };
+
+  filterCoqPackages = set:
+    lib.listToAttrs (
+      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
+      ocamlPackages_4_12
+    ;
+  };
+in rec {
+
+  /* The function `mkCoqPackages` takes as input a derivation for Coq and produces
+   * a set of libraries built with that specific Coq. More libraries are known to
+   * this function than what is compatible with that version of Coq. Therefore,
+   * libraries that are not known to be compatible are removed (filtered out) from
+   * the resulting set. For meta-programming purposes (inpecting the derivations
+   * rather than building the libraries) this filtering can be disabled by setting
+   * a `dontFilter` attribute into the Coq derivation.
+   */
+  mkCoqPackages = coq:
+    let self = lib.makeScope newScope (lib.flip mkCoqPackages' coq); in
+    self.filterPackages (! coq.dontFilter or false);
+
+  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";
+  coq_8_14 = mkCoq "8.14";
+  coq_8_15 = mkCoq "8.15";
+
+  coqPackages_8_5 = mkCoqPackages coq_8_5;
+  coqPackages_8_6 = mkCoqPackages coq_8_6;
+  coqPackages_8_7 = mkCoqPackages coq_8_7;
+  coqPackages_8_8 = mkCoqPackages coq_8_8;
+  coqPackages_8_9 = mkCoqPackages coq_8_9;
+  coqPackages_8_10 = mkCoqPackages coq_8_10;
+  coqPackages_8_11 = mkCoqPackages coq_8_11;
+  coqPackages_8_12 = mkCoqPackages coq_8_12;
+  coqPackages_8_13 = mkCoqPackages coq_8_13;
+  coqPackages_8_14 = mkCoqPackages coq_8_14;
+  coqPackages_8_15 = mkCoqPackages coq_8_15;
+  coqPackages = recurseIntoAttrs coqPackages_8_13;
+  coq = coqPackages.coq;
+
+}
diff --git a/nixpkgs/pkgs/top-level/cubocore-packages.nix b/nixpkgs/pkgs/top-level/cubocore-packages.nix
new file mode 100644
index 000000000000..3c6ed65e9286
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/cubocore-packages.nix
@@ -0,0 +1,94 @@
+{ newScope, lxqt, lib, libsForQt5 }:
+
+let
+  packages = self: with self; {
+
+    # Libs
+    libcprime = libsForQt5.callPackage ../applications/misc/cubocore-packages/libcprime { };
+
+    libcsys = libsForQt5.callPackage ../applications/misc/cubocore-packages/libcsys { };
+
+    # Apps
+    coreaction = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreaction {
+      inherit libcprime libcsys;
+    };
+
+    corearchiver = libsForQt5.callPackage ../applications/misc/cubocore-packages/corearchiver {
+      inherit libcprime libcsys;
+    };
+
+    corefm = libsForQt5.callPackage ../applications/misc/cubocore-packages/corefm {
+      inherit libcprime libcsys;
+    };
+
+    coregarage = libsForQt5.callPackage ../applications/misc/cubocore-packages/coregarage {
+      inherit libcprime libcsys;
+    };
+
+    corehunt = libsForQt5.callPackage ../applications/misc/cubocore-packages/corehunt {
+      inherit libcprime libcsys;
+    };
+
+    coreimage = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreimage {
+      inherit libcprime libcsys;
+    };
+
+    coreinfo = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreinfo {
+      inherit libcprime libcsys;
+    };
+
+    corekeyboard = libsForQt5.callPackage ../applications/misc/cubocore-packages/corekeyboard {
+      inherit libcprime libcsys;
+    };
+
+    corepad = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepad {
+      inherit libcprime libcsys;
+    };
+
+    corepaint = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepaint {
+      inherit libcprime libcsys;
+    };
+
+    corepdf = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepdf {
+      inherit libcprime libcsys;
+    };
+
+    corepins = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepins {
+      inherit libcprime libcsys;
+    };
+
+    corerenamer = libsForQt5.callPackage ../applications/misc/cubocore-packages/corerenamer {
+      inherit libcprime libcsys;
+    };
+
+    coreshot = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreshot {
+      inherit libcprime libcsys;
+    };
+
+    corestats = libsForQt5.callPackage ../applications/misc/cubocore-packages/corestats {
+      inherit libcprime libcsys;
+    };
+
+    corestuff = libsForQt5.callPackage ../applications/misc/cubocore-packages/corestuff {
+      inherit libcprime libcsys;
+    };
+
+    coreterminal = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreterminal {
+      inherit (lxqt) qtermwidget;
+      inherit libcprime libcsys;
+    };
+
+    coretime = libsForQt5.callPackage ../applications/misc/cubocore-packages/coretime {
+      inherit libcprime libcsys;
+    };
+
+    coretoppings = libsForQt5.callPackage ../applications/misc/cubocore-packages/coretoppings {
+      inherit libcprime libcsys;
+    };
+
+    coreuniverse = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreuniverse {
+      inherit libcprime libcsys;
+    };
+  };
+in
+lib.makeScope newScope packages
diff --git a/nixpkgs/pkgs/top-level/darwin-packages.nix b/nixpkgs/pkgs/top-level/darwin-packages.nix
new file mode 100644
index 000000000000..d6ee88bc4f5e
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/darwin-packages.nix
@@ -0,0 +1,202 @@
+{ lib
+, buildPackages, pkgs, targetPackages
+, pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget, pkgsHostHost, pkgsTargetTarget
+, stdenv, splicePackages, newScope
+, preLibcCrossHeaders
+}:
+
+let
+  otherSplices = {
+    selfBuildBuild = pkgsBuildBuild.darwin;
+    selfBuildHost = pkgsBuildHost.darwin;
+    selfBuildTarget = pkgsBuildTarget.darwin;
+    selfHostHost = pkgsHostHost.darwin;
+    selfTargetTarget = pkgsTargetTarget.darwin or {}; # might be missing
+  };
+
+  # Prefix for binaries. Customarily ends with a dash separator.
+  #
+  # TODO(@Ericson2314) Make unconditional, or optional but always true by
+  # default.
+  targetPrefix = lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
+                                        (stdenv.targetPlatform.config + "-");
+in
+
+lib.makeScopeWithSplicing splicePackages newScope otherSplices (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
+  inherit (self) mkDerivation callPackage;
+
+  # Must use pkgs.callPackage to avoid infinite recursion.
+
+  # Open source packages that are built from source
+  appleSourcePackages = pkgs.callPackage ../os-specific/darwin/apple-source-releases { } self;
+
+  impure-cmds = pkgs.callPackage ../os-specific/darwin/impure-cmds { };
+
+  # macOS 10.12 SDK
+  apple_sdk_10_12 = pkgs.callPackage ../os-specific/darwin/apple-sdk {
+    inherit (buildPackages.darwin) print-reexports;
+    inherit (self) darwin-stubs;
+  };
+
+  # macOS 11.0 SDK
+  apple_sdk_11_0 = pkgs.callPackage ../os-specific/darwin/apple-sdk-11.0 { };
+
+  # Pick an SDK
+  apple_sdk = if stdenv.hostPlatform.isAarch64 then apple_sdk_11_0 else apple_sdk_10_12;
+
+  # Pick the source of libraries: either Apple's open source releases, or the
+  # SDK.
+  useAppleSDKLibs = stdenv.hostPlatform.isAarch64;
+
+  selectAttrs = attrs: names:
+    lib.listToAttrs (lib.concatMap (n: if attrs ? "${n}" then [(lib.nameValuePair n attrs."${n}")] else []) names);
+
+  chooseLibs = (
+    # There are differences in which libraries are exported. Avoid evaluation
+    # errors when a package is not provided.
+    selectAttrs (
+      if useAppleSDKLibs
+        then apple_sdk
+        else appleSourcePackages
+    ) ["Libsystem" "LibsystemCross" "libcharset" "libunwind" "objc4" "configd" "IOKit"]
+  ) // {
+    inherit (
+      if useAppleSDKLibs
+        then apple_sdk.frameworks
+        else appleSourcePackages
+    ) Security;
+  };
+in
+
+impure-cmds // appleSourcePackages // chooseLibs // {
+
+  inherit apple_sdk;
+
+  stdenvNoCF = stdenv.override {
+    extraBuildInputs = [];
+  };
+
+  binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
+    inherit (pkgs) binutils-unwrapped;
+    inherit (pkgs.llvmPackages) llvm clang-unwrapped;
+  };
+
+  binutils = pkgs.wrapBintoolsWith {
+    libc =
+      if stdenv.targetPlatform != stdenv.hostPlatform
+      then pkgs.libcCross
+      else pkgs.stdenv.cc.libc;
+    bintools = self.binutils-unwrapped;
+  };
+
+  binutilsNoLibc = pkgs.wrapBintoolsWith {
+    libc = preLibcCrossHeaders;
+    bintools = self.binutils-unwrapped;
+  };
+
+  cctools = callPackage ../os-specific/darwin/cctools/port.nix {
+    stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
+  };
+
+  # TODO: remove alias.
+  cf-private = self.apple_sdk.frameworks.CoreFoundation;
+
+  DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
+
+  darwin-stubs = callPackage ../os-specific/darwin/darwin-stubs { };
+
+  print-reexports = callPackage ../os-specific/darwin/print-reexports { };
+
+  rewrite-tbd = callPackage ../os-specific/darwin/rewrite-tbd { };
+
+  checkReexportsHook = pkgs.makeSetupHook {
+    deps = [ pkgs.darwin.print-reexports ];
+  } ../os-specific/darwin/print-reexports/setup-hook.sh;
+
+  sigtool = callPackage ../os-specific/darwin/sigtool { };
+
+  postLinkSignHook = pkgs.writeTextFile {
+    name = "post-link-sign-hook";
+    executable = true;
+
+    text = ''
+      CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \
+        ${self.sigtool}/bin/codesign -f -s - "$linkerOutput"
+    '';
+  };
+
+  signingUtils = callPackage ../os-specific/darwin/signing-utils { };
+
+  autoSignDarwinBinariesHook = pkgs.makeSetupHook {
+    deps = [ self.signingUtils ];
+  } ../os-specific/darwin/signing-utils/auto-sign-hook.sh;
+
+  maloader = callPackage ../os-specific/darwin/maloader {
+  };
+
+  insert_dylib = callPackage ../os-specific/darwin/insert_dylib { };
+
+  iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix {
+    buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
+    targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
+    inherit (pkgs.llvmPackages) clang-unwrapped;
+  };
+
+  iproute2mac = callPackage ../os-specific/darwin/iproute2mac { };
+
+  libobjc = self.objc4;
+
+  lsusb = callPackage ../os-specific/darwin/lsusb { };
+
+  moltenvk = callPackage ../os-specific/darwin/moltenvk { };
+
+  opencflite = callPackage ../os-specific/darwin/opencflite { };
+
+  stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
+
+  trash = callPackage ../os-specific/darwin/trash { };
+
+  xattr = pkgs.python3Packages.callPackage ../os-specific/darwin/xattr { };
+
+  inherit (pkgs.callPackages ../os-specific/darwin/xcode { })
+    xcode_8_1 xcode_8_2
+    xcode_9_1 xcode_9_2 xcode_9_4 xcode_9_4_1
+    xcode_10_2 xcode_10_2_1 xcode_10_3
+    xcode_11
+    xcode;
+
+  CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
+
+  # TODO: make swift-corefoundation build with apple_sdk_11_0.Libsystem
+  CF = if useAppleSDKLibs
+    then
+      # This attribute (CF) is included in extraBuildInputs in the stdenv. This
+      # is typically the open source project. When a project refers to
+      # "CoreFoundation" it has an extra setup hook to force impure system
+      # CoreFoundation into the link step.
+      #
+      # In this branch, we only have a single "CoreFoundation" to choose from.
+      # To be compatible with the existing convention, we define
+      # CoreFoundation with the setup hook, and CF as the same package but
+      # with the setup hook removed.
+      #
+      # This may seem unimportant, but without it packages (e.g., bacula) will
+      # fail with linker errors referring ___CFConstantStringClassReference.
+      # It's not clear to me why some packages need this extra setup.
+      lib.overrideDerivation apple_sdk.frameworks.CoreFoundation (drv: {
+        setupHook = null;
+      })
+    else callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { };
+
+  # As the name says, this is broken, but I don't want to lose it since it's a direction we want to go in
+  # libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { };
+
+  darling = callPackage ../os-specific/darwin/darling/default.nix { };
+
+  libtapi = callPackage ../os-specific/darwin/libtapi {};
+
+  ios-deploy = callPackage ../os-specific/darwin/ios-deploy {};
+
+  discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
+
+})
diff --git a/nixpkgs/pkgs/top-level/default.nix b/nixpkgs/pkgs/top-level/default.nix
new file mode 100644
index 000000000000..e95a0db78c3c
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/default.nix
@@ -0,0 +1,133 @@
+/* This function composes the Nix Packages collection. It:
+
+     1. Elaborates `localSystem` and `crossSystem` with defaults as needed.
+
+     2. Applies the final stage to the given `config` if it is a function
+
+     3. Defaults to no non-standard config and no cross-compilation target
+
+     4. Uses the above to infer the default standard environment's (stdenv's)
+        stages if no stdenv's are provided
+
+     5. Folds the stages to yield the final fully booted package set for the
+        chosen stdenv
+
+   Use `impure.nix` to also infer the `system` based on the one on which
+   evaluation is taking place, and the configuration from environment variables
+   or dot-files. */
+
+{ # The system packages will be built on. See the manual for the
+  # subtle division of labor between these two `*System`s and the three
+  # `*Platform`s.
+  localSystem
+
+, # The system packages will ultimately be run on.
+  crossSystem ? localSystem
+
+, # Allow a configuration attribute set to be passed in as an argument.
+  config ? {}
+
+, # List of overlays layers used to extend Nixpkgs.
+  overlays ? []
+
+, # List of overlays to apply to target packages only.
+  crossOverlays ? []
+
+, # A function booting the final package set for a specific standard
+  # environment. See below for the arguments given to that function, the type of
+  # list it returns.
+  stdenvStages ? import ../stdenv
+
+, # Ignore unexpected args.
+  ...
+} @ args:
+
+let # Rename the function arguments
+  config0 = config;
+  crossSystem0 = crossSystem;
+
+in let
+  lib = import ../../lib;
+
+  inherit (lib) throwIfNot;
+
+  checked =
+    throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list."
+    lib.foldr (x: throwIfNot (lib.isFunction x) "All overlays passed to nixpkgs must be functions.") (r: r) overlays
+    throwIfNot (lib.isList crossOverlays) "The crossOverlays argument to nixpkgs must be a list."
+    lib.foldr (x: throwIfNot (lib.isFunction x) "All crossOverlays passed to nixpkgs must be functions.") (r: r) crossOverlays
+    ;
+
+  localSystem = lib.systems.elaborate args.localSystem;
+
+  # Condition preserves sharing which in turn affects equality.
+  crossSystem =
+    if crossSystem0 == null || crossSystem0 == args.localSystem
+    then localSystem
+    else lib.systems.elaborate crossSystem0;
+
+  # Allow both:
+  # { /* the config */ } and
+  # { pkgs, ... } : { /* the config */ }
+  config1 =
+    if lib.isFunction config0
+    then config0 { inherit pkgs; }
+    else config0;
+
+  configEval = lib.evalModules {
+    modules = [
+      ./config.nix
+      ({ options, ... }: {
+        _file = "nixpkgs.config";
+        # filter-out known options, FIXME: remove this eventually
+        config = builtins.intersectAttrs options config1;
+      })
+    ];
+  };
+
+  # take all the rest as-is
+  config = lib.showWarnings configEval.config.warnings
+    (config1 // builtins.removeAttrs configEval.config [ "_module" ]);
+
+  # A few packages make a new package set to draw their dependencies from.
+  # (Currently to get a cross tool chain, or forced-i686 package.) Rather than
+  # give `all-packages.nix` all the arguments to this function, even ones that
+  # don't concern it, we give it this function to "re-call" nixpkgs, inheriting
+  # whatever arguments it doesn't explicitly provide. This way,
+  # `all-packages.nix` doesn't know more than it needs too.
+  #
+  # It's OK that `args` doesn't include default arguments from this file:
+  # they'll be deterministically inferred. In fact we must *not* include them,
+  # because it's important that if some parameter which affects the default is
+  # substituted with a different argument, the default is re-inferred.
+  #
+  # To put this in concrete terms, this function is basically just used today to
+  # use package for a different platform for the current platform (namely cross
+  # compiling toolchains and 32-bit packages on x86_64). In both those cases we
+  # want the provided non-native `localSystem` argument to affect the stdenv
+  # chosen.
+  #
+  # NB!!! This thing gets its `config` argument from `args`, i.e. it's actually
+  # `config0`. It is important to keep it to `config0` format (as opposed to the
+  # result of `evalModules`, i.e. the `config` variable above) throughout all
+  # nixpkgs evaluations since the above function `config0 -> config` implemented
+  # via `evalModules` is not idempotent. In other words, if you add `config` to
+  # `newArgs`, expect strange very hard to debug errors! (Yes, I'm speaking from
+  # experience here.)
+  nixpkgsFun = newArgs: import ./. (args // newArgs);
+
+  # Partially apply some arguments for building bootstraping stage pkgs
+  # sets. Only apply arguments which no stdenv would want to override.
+  allPackages = newArgs: import ./stage.nix ({
+    inherit lib nixpkgsFun;
+  } // newArgs);
+
+  boot = import ../stdenv/booter.nix { inherit lib allPackages; };
+
+  stages = stdenvStages {
+    inherit lib localSystem crossSystem config overlays crossOverlays;
+  };
+
+  pkgs = boot stages;
+
+in checked pkgs
diff --git a/nixpkgs/pkgs/top-level/dhall-packages.nix b/nixpkgs/pkgs/top-level/dhall-packages.nix
new file mode 100644
index 000000000000..646f2b7e9d39
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/dhall-packages.nix
@@ -0,0 +1,49 @@
+{ lib
+, newScope
+, overrides ? (self: super: {})
+}:
+
+let
+  packages = self:
+    let
+      callPackage = newScope self;
+
+      buildDhallPackage =
+        callPackage ../development/interpreters/dhall/build-dhall-package.nix { };
+
+      buildDhallGitHubPackage =
+        callPackage ../development/interpreters/dhall/build-dhall-github-package.nix { };
+
+      buildDhallDirectoryPackage =
+        callPackage ../development/interpreters/dhall/build-dhall-directory-package.nix { };
+
+      buildDhallUrl =
+        callPackage ../development/interpreters/dhall/build-dhall-url.nix { };
+
+      generateDhallDirectoryPackage =
+        callPackage ../development/interpreters/dhall/generate-dhall-directory-package.nix { };
+
+    in
+      { inherit
+          callPackage
+          buildDhallPackage
+          buildDhallGitHubPackage
+          buildDhallDirectoryPackage
+          buildDhallUrl
+          generateDhallDirectoryPackage
+        ;
+
+        lib = import ../development/dhall-modules/lib.nix { inherit lib; };
+
+        dhall-grafana =
+          callPackage ../development/dhall-modules/dhall-grafana.nix { };
+
+        dhall-kubernetes =
+          callPackage ../development/dhall-modules/dhall-kubernetes.nix { };
+
+        Prelude =
+          callPackage ../development/dhall-modules/Prelude.nix { };
+      };
+
+in
+  lib.fix' (lib.extends overrides packages)
diff --git a/nixpkgs/pkgs/top-level/dotnet-packages.nix b/nixpkgs/pkgs/top-level/dotnet-packages.nix
new file mode 100644
index 000000000000..10188cee9148
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/dotnet-packages.nix
@@ -0,0 +1,315 @@
+{ stdenv
+, lib
+, pkgs
+, buildDotnetPackage
+, fetchurl
+, fetchFromGitHub
+, fetchNuGet
+, glib
+, mono
+, overrides ? {}
+}:
+
+let self = dotnetPackages // overrides; dotnetPackages = with self; {
+
+  # BINARY PACKAGES
+
+  NUnit3 = fetchNuGet {
+    pname = "NUnit";
+    version = "3.0.1";
+    sha256 = "1g3j3kvg9vrapb1vjgq65nvn1vg7bzm66w7yjnaip1iww1yn1b0p";
+    outputFiles = [ "lib/*" ];
+  };
+
+  NUnit2 = fetchNuGet {
+    pname = "NUnit";
+    version = "2.6.4";
+    sha256 = "1acwsm7p93b1hzfb83ia33145x0w6fvdsfjm9xflsisljxpdx35y";
+    outputFiles = [ "lib/*" ];
+  };
+
+  NUnit = NUnit2;
+
+  NUnitConsole = fetchNuGet {
+    pname = "NUnit.Console";
+    version = "3.0.1";
+    sha256 = "154bqwm2n95syv8nwd67qh8qsv0b0h5zap60sk64z3kd3a9ffi5p";
+    outputFiles = [ "tools/*" ];
+  };
+
+  MaxMindDb = fetchNuGet {
+    pname = "MaxMind.Db";
+    version = "1.1.0.0";
+    sha256 = "0lixl76f7k3ldiqzg94zh13gn82w5mm5dx72y97fcqvp8g6nj3ds";
+    outputFiles = [ "lib/*" ];
+  };
+
+  MaxMindGeoIP2 = fetchNuGet {
+    pname = "MaxMind.GeoIP2";
+    version = "2.3.1";
+    sha256 = "1s44dvjnmj1aimbrgkmpj6h5dn1w6acgqjch1axc76yz6hwknqgf";
+    outputFiles = [ "lib/*" ];
+  };
+
+  SharpZipLib = fetchNuGet {
+    pname = "SharpZipLib";
+    version = "0.86.0";
+    sha256 = "01w2038gckfnq31pncrlgm7d0c939pwr1x4jj5450vcqpd4c41jr";
+    outputFiles = [ "lib/*" ];
+  };
+
+  StyleCopMSBuild = fetchNuGet {
+    pname = "StyleCop.MSBuild";
+    version = "4.7.49.0";
+    sha256 = "0rpfyvcggm881ynvgr17kbx5hvj7ivlms0bmskmb2zyjlpddx036";
+    outputFiles = [ "tools/*" ];
+  };
+
+  StyleCopPlusMSBuild = fetchNuGet {
+    pname = "StyleCopPlus.MSBuild";
+    version = "4.7.49.5";
+    sha256 = "1hv4lfxw72aql8siyqc4n954vzdz8p6jx9f2wrgzz0jy1k98x2mr";
+    outputFiles = [ "tools/*" ];
+  };
+
+  RestSharp = fetchNuGet {
+    pname = "RestSharp";
+    version = "105.2.3";
+    sha256 = "1br48124ppz80x92m84sfyil1gn23hxg2ml9i9hsd0lp86vlaa1m";
+    outputFiles = [ "lib/*" ];
+  };
+
+  SharpFont = fetchNuGet {
+    pname = "SharpFont";
+    version = "4.0.1";
+    sha256 = "1yd3cm4ww0hw2k3aymf792hp6skyg8qn491m2a3fhkzvsl8z7vs8";
+    outputFiles = [ "lib/*" "config/*" ];
+  };
+
+  SmartIrc4net = fetchNuGet {
+    pname = "SmartIrc4net";
+    version = "0.4.5.1";
+    sha256 = "1d531sj39fvwmj2wgplqfify301y3cwp7kwr9ai5hgrq81jmjn2b";
+    outputFiles = [ "lib/*" ];
+  };
+
+  FuzzyLogicLibrary = fetchNuGet {
+    pname = "FuzzyLogicLibrary";
+    version = "1.2.0";
+    sha256 = "0x518i8d3rw9n51xwawa4sywvqd722adj7kpcgcm63r66s950r5l";
+    outputFiles = [ "bin/*" ];
+  };
+
+  OpenNAT = fetchNuGet {
+    pname = "Open.NAT";
+    version = "2.1.0";
+    sha256 = "1jyd30fwycdwx5ck96zhp2xf20yz0sp7g3pjbqhmay4kd322mfwk";
+    outputFiles = [ "lib/*" ];
+  };
+
+  MonoNat = fetchNuGet {
+    pname = "Mono.Nat";
+    version = "1.2.24";
+    sha256 = "0vfkach11kkcd9rcqz3s38m70d5spyb21gl99iqnkljxj5555wjs";
+    outputFiles = [ "lib/*" ];
+  };
+
+  NUnitRunners = fetchNuGet {
+    pname = "NUnit.Runners";
+    version = "2.6.4";
+    sha256 = "11nmi7vikn9idz8qcad9z7f73arsh5rw18fc1sri9ywz77mpm1s4";
+    outputFiles = [ "tools/*" ];
+    preInstall = "mv -v tools/lib/* tools && rmdir -v tools/lib";
+  };
+
+  # SOURCE PACKAGES
+
+  Boogie = buildDotnetPackage rec {
+    pname = "Boogie";
+    version = "2.4.1";
+
+    src = fetchFromGitHub {
+      owner = "boogie-org";
+      repo = "boogie";
+      rev = "v${version}";
+      sha256 = "13f6ifkh6gpy4bvx5zhgwmk3wd5rfxzl9wxwfhcj1c90fdrhwh1b";
+    };
+
+    # emulate `nuget restore Source/Boogie.sln`
+    # which installs in $srcdir/Source/packages
+    preBuild = ''
+      mkdir -p Source/packages/NUnit.2.6.3
+      ln -sn ${dotnetPackages.NUnit}/lib/dotnet/NUnit Source/packages/NUnit.2.6.3/lib
+    '';
+
+    buildInputs = [
+      dotnetPackages.NUnit
+      dotnetPackages.NUnitRunners
+    ];
+
+    xBuildFiles = [ "Source/Boogie.sln" ];
+
+    outputFiles = [ "Binaries/*" ];
+
+    postInstall = ''
+        mkdir -pv "$out/lib/dotnet/${pname}"
+        ln -sv "${pkgs.z3}/bin/z3" "$out/lib/dotnet/${pname}/z3.exe"
+
+        # so that this derivation can be used as a vim plugin to install syntax highlighting
+        vimdir=$out/share/vim-plugins/boogie
+        install -Dt $vimdir/syntax/ Util/vim/syntax/boogie.vim
+        mkdir $vimdir/ftdetect
+        echo 'au BufRead,BufNewFile *.bpl set filetype=boogie' > $vimdir/ftdetect/bpl.vim
+    '';
+
+    meta = with lib; {
+      description = "An intermediate verification language";
+      homepage = "https://github.com/boogie-org/boogie";
+      longDescription = ''
+        Boogie is an intermediate verification language (IVL), intended as a
+        layer on which to build program verifiers for other languages.
+
+        This derivation may be used as a vim plugin to provide syntax highlighting.
+      '';
+      license = licenses.mspl;
+      maintainers = [ maintainers.taktoa ];
+      platforms = with platforms; (linux ++ darwin);
+    };
+  };
+
+  Dafny = let
+    z3 = pkgs.z3.overrideAttrs (oldAttrs: rec {
+      version = "4.8.4";
+      name = "z3-${version}";
+
+      src = fetchFromGitHub {
+        owner = "Z3Prover";
+        repo = "z3";
+        rev = "z3-${version}";
+        sha256 = "014igqm5vwswz0yhz0cdxsj3a6dh7i79hvhgc3jmmmz3z0xm1gyn";
+      };
+    });
+    self' = pkgs.dotnetPackages.override ({
+      pkgs = pkgs // { inherit z3; };
+    });
+    Boogie = assert self'.Boogie.version == "2.4.1"; self'.Boogie;
+  in buildDotnetPackage rec {
+    pname = "Dafny";
+    version = "2.3.0";
+
+    src = fetchurl {
+      url = "https://github.com/Microsoft/dafny/archive/v${version}.tar.gz";
+      sha256 = "0s6ihx32kda7400lvdrq60l46c11nki8b6kalir2g4ic508f6ypa";
+    };
+
+    postPatch = ''
+      sed -i \
+        -e 's/ Visible="False"//' \
+        -e "s/Exists(\$(CodeContractsInstallDir))/Exists('\$(CodeContractsInstallDir)')/" \
+        Source/*/*.csproj
+    '';
+
+    preBuild = ''
+      ln -s ${z3} Binaries/z3
+    '';
+
+    buildInputs = [ Boogie ];
+
+    xBuildFiles = [ "Source/Dafny.sln" ];
+    xBuildFlags = [ "/p:Configuration=Checked" "/p:Platform=Any CPU" "/t:Rebuild" ];
+
+    outputFiles = [ "Binaries/*" ];
+
+    # Do not wrap the z3 executable, only dafny-related ones.
+    exeFiles = [ "Dafny*.exe" ];
+
+    # Dafny needs mono in its path.
+    makeWrapperArgs = "--set PATH ${mono}/bin";
+
+    # Boogie as an input is not enough. Boogie libraries need to be at the same
+    # place as Dafny ones. Same for "*.dll.mdb". No idea why or how to fix.
+    postFixup = ''
+      for lib in ${Boogie}/lib/dotnet/${Boogie.pname}/*.dll{,.mdb}; do
+        ln -s $lib $out/lib/dotnet/${pname}/
+      done
+      # We generate our own executable scripts
+      rm -f $out/lib/dotnet/${pname}/dafny{,-server}
+    '';
+
+    meta = with lib; {
+      description = "A programming language with built-in specification constructs";
+      homepage = "https://research.microsoft.com/dafny";
+      maintainers = with maintainers; [ layus ];
+      license = licenses.mit;
+      platforms = with platforms; (linux ++ darwin);
+    };
+  };
+
+  MonoAddins = buildDotnetPackage rec {
+    pname = "Mono.Addins";
+    version = "1.2";
+
+    xBuildFiles = [
+      "Mono.Addins/Mono.Addins.csproj"
+      "Mono.Addins.Setup/Mono.Addins.Setup.csproj"
+      "Mono.Addins.Gui/Mono.Addins.Gui.csproj"
+      "Mono.Addins.CecilReflector/Mono.Addins.CecilReflector.csproj"
+    ];
+    outputFiles = [ "bin/*" ];
+
+    src = fetchFromGitHub {
+      owner = "mono";
+      repo = "mono-addins";
+      rev = "mono-addins-${version}";
+      sha256 = "1hnn0a2qsjcjprsxas424bzvhsdwy0yc2jj5xbp698c0m9kfk24y";
+    };
+
+    buildInputs = [ pkgs.gtk-sharp-2_0 ];
+
+    meta = {
+      description = "A generic framework for creating extensible applications";
+      homepage = "https://www.mono-project.com/Mono.Addins";
+      longDescription = ''
+        A generic framework for creating extensible applications,
+        and for creating libraries which extend those applications.
+      '';
+      license = lib.licenses.mit;
+    };
+  };
+
+  NewtonsoftJson = fetchNuGet {
+    pname = "Newtonsoft.Json";
+    version = "11.0.2";
+    sha256 = "07na27n4mlw77f3hg5jpayzxll7f4gyna6x7k9cybmxpbs6l77k7";
+    outputFiles = [ "*" ];
+  };
+
+  Nuget = buildDotnetPackage rec {
+    pname = "Nuget";
+    version = "5.6.0.6489";
+
+    src = fetchFromGitHub {
+      owner = "mono";
+      repo = "linux-packaging-nuget";
+      rev = "upstream/${version}.bin";
+      sha256 = "sha256-71vjM7a+F0DNTY+dML3UBSkrVyXv/k5rdl7iXBKSpNM=";
+    };
+
+    # configurePhase breaks the binary and results in
+    # `File does not contain a valid CIL image.`
+    dontConfigure = true;
+    dontBuild = true;
+    dontPlacateNuget = true;
+
+    outputFiles = [ "*" ];
+    exeFiles = [ "nuget.exe" ];
+  };
+
+  Paket = fetchNuGet {
+    pname = "Paket";
+    version = "5.179.1";
+    sha256 = "11rzna03i145qj08hwrynya548fwk8xzxmg65swyaf19jd7gzg82";
+    outputFiles = [ "*" ];
+  };
+
+}; in self
diff --git a/nixpkgs/pkgs/top-level/emacs-packages.nix b/nixpkgs/pkgs/top-level/emacs-packages.nix
new file mode 100644
index 000000000000..0ac3ae8b4339
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/emacs-packages.nix
@@ -0,0 +1,101 @@
+# package.el-based emacs packages
+
+## FOR USERS
+#
+# Recommended: simply use `emacsWithPackages` with the packages you want.
+#
+# Alternative: use `emacs`, install everything to a system or user profile
+# and then add this at the start your `init.el`:
+/*
+  (require 'package)
+
+  ;; optional. makes unpure packages archives unavailable
+  (setq package-archives nil)
+
+  ;; optional. use this if you install emacs packages to the system profile
+  (add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa")
+
+  ;; optional. use this if you install emacs packages to user profiles (with nix-env)
+  (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa")
+
+  (package-initialize)
+*/
+
+{ pkgs'
+, emacs'
+, makeScope
+, makeOverridable
+, dontRecurseIntoAttrs
+}:
+
+let
+
+  mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-packages.nix {
+    inherit (pkgs) stdenv texinfo writeText gcc pkgs buildPackages;
+    inherit lib;
+  };
+
+  mkNongnuPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/nongnu-packages.nix {
+    inherit (pkgs) buildPackages;
+    inherit lib;
+  };
+
+  # Contains both melpa stable & unstable
+  melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/melpa-packages.nix {
+    inherit lib pkgs;
+  };
+
+  mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/manual-packages.nix {
+    inherit lib pkgs;
+  };
+
+  emacsWithPackages = { pkgs, lib }: import ../build-support/emacs/wrapper.nix {
+    inherit (pkgs) makeWrapper runCommand gcc;
+    inherit (pkgs.xorg) lndir;
+    inherit lib;
+  };
+
+in makeScope pkgs'.newScope (self: makeOverridable ({
+  pkgs ? pkgs'
+  , lib ? pkgs.lib
+  , elpaPackages ? mkElpaPackages { inherit pkgs lib; } self
+  , nongnuPackages ? mkNongnuPackages { inherit pkgs lib; } self
+  , melpaStablePackages ? melpaGeneric { inherit pkgs lib; } "stable" self
+  , melpaPackages ? melpaGeneric { inherit pkgs lib; } "unstable" self
+  , manualPackages ? mkManualPackages { inherit pkgs lib; } self
+}: ({}
+  // elpaPackages // { inherit elpaPackages; }
+  // nongnuPackages // { inherit nongnuPackages; }
+  // melpaStablePackages // { inherit melpaStablePackages; }
+  // melpaPackages // { inherit melpaPackages; }
+  // manualPackages // { inherit manualPackages; }
+  // {
+
+    # Propagate overriden scope
+    emacs = emacs'.overrideAttrs(old: {
+      passthru = (old.passthru or {}) // {
+        pkgs = dontRecurseIntoAttrs self;
+      };
+    });
+
+    trivialBuild = pkgs.callPackage ../build-support/emacs/trivial.nix {
+      inherit (self) emacs;
+    };
+
+    melpaBuild = pkgs.callPackage ../build-support/emacs/melpa.nix {
+      inherit (self) emacs;
+    };
+
+    emacsWithPackages = emacsWithPackages { inherit pkgs lib; } self;
+    withPackages = emacsWithPackages { inherit pkgs lib; } self;
+
+  } // {
+
+    # Package specific priority overrides goes here
+
+    # Telega uploads packages incompatible with stable tdlib to melpa
+    # Prefer the one from melpa stable
+    inherit (melpaStablePackages) telega;
+
+  })
+) {})
diff --git a/nixpkgs/pkgs/top-level/emscripten-packages.nix b/nixpkgs/pkgs/top-level/emscripten-packages.nix
new file mode 100644
index 000000000000..bc91b9e26a4f
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/emscripten-packages.nix
@@ -0,0 +1,187 @@
+{ pkgs }:
+
+with pkgs;
+
+# emscripten toolchain abstraction for nix
+# https://github.com/NixOS/nixpkgs/pull/16208
+
+rec {
+  json_c = (pkgs.json_c.override {
+    stdenv = pkgs.emscriptenStdenv;
+  }).overrideDerivation
+    (old: {
+      nativeBuildInputs = [ pkg-config cmake ];
+      propagatedBuildInputs = [ zlib ];
+      configurePhase = ''
+        HOME=$TMPDIR
+        emcmake cmake . $cmakeFlags -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_INSTALL_INCLUDEDIR=$dev/include
+      '';
+      checkPhase = ''
+        echo "================= testing json_c using node ================="
+
+        echo "Compiling a custom test"
+        set -x
+        emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 tests/test1.c \
+          `pkg-config zlib --cflags` \
+          `pkg-config zlib --libs` \
+          -I . \
+          libjson-c.a \
+          -o ./test1.js
+
+        echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
+        ${pkgs.nodejs}/bin/node ./test1.js
+
+        set +x
+        if [ $? -ne 0 ]; then
+          echo "test1.js execution failed -> unit test failed, please fix"
+          exit 1;
+        else
+          echo "test1.js execution seems to work! very good."
+        fi
+        echo "================= /testing json_c using node ================="
+      '';
+    });
+
+  libxml2 = (pkgs.libxml2.override {
+    stdenv = emscriptenStdenv;
+    pythonSupport = false;
+  }).overrideDerivation
+    (old: {
+      propagatedBuildInputs = [ zlib ];
+      buildInputs = old.buildInputs ++ [ pkg-config ];
+
+      # just override it with nothing so it does not fail
+      autoreconfPhase = "echo autoreconfPhase not used...";
+      configurePhase = ''
+        HOME=$TMPDIR
+        emconfigure ./configure --prefix=$out --without-python
+      '';
+      checkPhase = ''
+        echo "================= testing libxml2 using node ================="
+
+        echo "Compiling a custom test"
+        set -x
+        emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 xmllint.o \
+        ./.libs/libxml2.a `pkg-config zlib --cflags` `pkg-config zlib --libs` -o ./xmllint.test.js \
+        --embed-file ./test/xmlid/id_err1.xml
+
+        echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
+        ${pkgs.nodejs}/bin/node ./xmllint.test.js --noout test/xmlid/id_err1.xml 2>&1 | grep 0bar
+
+        set +x
+        if [ $? -ne 0 ]; then
+          echo "xmllint unit test failed, please fix this package"
+          exit 1;
+        else
+          echo "since there is no stupid text containing 'foo xml:id' it seems to work! very good."
+        fi
+        echo "================= /testing libxml2 using node ================="
+      '';
+    });
+
+  xmlmirror = pkgs.buildEmscriptenPackage rec {
+    pname = "xmlmirror";
+    version = "unstable-2016-06-05";
+
+    buildInputs = [ pkg-config autoconf automake libtool gnumake libxml2 nodejs openjdk json_c ];
+    nativeBuildInputs = [ pkg-config zlib ];
+
+    src = pkgs.fetchgit {
+      url = "https://gitlab.com/odfplugfest/xmlmirror.git";
+      rev = "4fd7e86f7c9526b8f4c1733e5c8b45175860a8fd";
+      sha256 = "1jasdqnbdnb83wbcnyrp32f36w3xwhwp0wq8lwwmhqagxrij1r4b";
+    };
+
+    configurePhase = ''
+      rm -f fastXmlLint.js*
+      # a fix for ERROR:root:For asm.js, TOTAL_MEMORY must be a multiple of 16MB, was 234217728
+      # https://gitlab.com/odfplugfest/xmlmirror/issues/8
+      sed -e "s/TOTAL_MEMORY=234217728/TOTAL_MEMORY=268435456/g" -i Makefile.emEnv
+      # https://github.com/kripken/emscripten/issues/6344
+      # https://gitlab.com/odfplugfest/xmlmirror/issues/9
+      sed -e "s/\$(JSONC_LDFLAGS) \$(ZLIB_LDFLAGS) \$(LIBXML20_LDFLAGS)/\$(JSONC_LDFLAGS) \$(LIBXML20_LDFLAGS) \$(ZLIB_LDFLAGS) /g" -i Makefile.emEnv
+      # https://gitlab.com/odfplugfest/xmlmirror/issues/11
+      sed -e "s/-o fastXmlLint.js/-s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -o fastXmlLint.js/g" -i Makefile.emEnv
+    '';
+
+    buildPhase = ''
+      HOME=$TMPDIR
+      make -f Makefile.emEnv
+    '';
+
+    outputs = [ "out" "doc" ];
+
+    installPhase = ''
+      mkdir -p $out/share
+      mkdir -p $doc/share/${pname}
+
+      cp Demo* $out/share
+      cp -R codemirror-5.12 $out/share
+      cp fastXmlLint.js* $out/share
+      cp *.xsd $out/share
+      cp *.js $out/share
+      cp *.xhtml $out/share
+      cp *.html $out/share
+      cp *.json $out/share
+      cp *.rng $out/share
+      cp README.md $doc/share/${pname}
+    '';
+    checkPhase = ''
+    '';
+  };
+
+  zlib = (pkgs.zlib.override {
+    stdenv = pkgs.emscriptenStdenv;
+  }).overrideDerivation
+    (old: {
+      buildInputs = old.buildInputs ++ [ pkg-config ];
+      # we need to reset this setting!
+      NIX_CFLAGS_COMPILE="";
+      configurePhase = ''
+        # FIXME: Some tests require writing at $HOME
+        HOME=$TMPDIR
+        runHook preConfigure
+
+        #export EMCC_DEBUG=2
+        emconfigure ./configure --prefix=$out --shared
+
+        runHook postConfigure
+      '';
+      dontStrip = true;
+      outputs = [ "out" ];
+      buildPhase = ''
+        emmake make
+      '';
+      installPhase = ''
+        emmake make install
+      '';
+      checkPhase = ''
+        echo "================= testing zlib using node ================="
+
+        echo "Compiling a custom test"
+        set -x
+        emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 test/example.c -DZ_SOLO \
+        -L. libz.so.${old.version} -I . -o example.js
+
+        echo "Using node to execute the test"
+        ${pkgs.nodejs}/bin/node ./example.js
+
+        set +x
+        if [ $? -ne 0 ]; then
+          echo "test failed for some reason"
+          exit 1;
+        else
+          echo "it seems to work! very good."
+        fi
+        echo "================= /testing zlib using node ================="
+      '';
+
+      postPatch = pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
+        substituteInPlace configure \
+          --replace '/usr/bin/libtool' 'ar' \
+          --replace 'AR="libtool"' 'AR="ar"' \
+          --replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
+      '';
+    });
+
+}
diff --git a/nixpkgs/pkgs/top-level/gnuradio-packages.nix b/nixpkgs/pkgs/top-level/gnuradio-packages.nix
new file mode 100644
index 000000000000..1cd2c93da773
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/gnuradio-packages.nix
@@ -0,0 +1,54 @@
+{ lib
+, stdenv
+, newScope
+, gnuradio # unwrapped gnuradio
+}:
+
+lib.makeScope newScope ( self:
+
+let
+  # Modeled after qt's
+  mkDerivationWith = import ../development/gnuradio-modules/mkDerivation.nix {
+    inherit lib;
+    unwrapped = gnuradio;
+  };
+  mkDerivation = mkDerivationWith stdenv.mkDerivation;
+
+  callPackage = self.newScope ({
+    inherit (gnuradio)
+      # Packages that are potentially overriden and used as deps here.
+      boost
+      volk
+    ;
+    inherit mkDerivationWith mkDerivation;
+  } // lib.optionalAttrs (gnuradio.hasFeature "gr-uhd") {
+    inherit (gnuradio) uhd;
+  } // (if (lib.versionAtLeast gnuradio.versionAttr.major "3.10") then {
+    inherit (gnuradio) spdlog;
+  } else {
+    inherit (gnuradio) log4cpp;
+  }));
+in {
+
+  inherit callPackage mkDerivation mkDerivationWith;
+
+  ### Packages
+
+  inherit gnuradio;
+  inherit (gnuradio) python;
+
+  osmosdr = callPackage ../development/gnuradio-modules/osmosdr/default.nix { };
+
+  ais = callPackage ../development/gnuradio-modules/ais/default.nix { };
+
+  grnet = callPackage ../development/gnuradio-modules/grnet/default.nix { };
+
+  gsm = callPackage ../development/gnuradio-modules/gsm/default.nix { };
+
+  nacl = callPackage ../development/gnuradio-modules/nacl/default.nix { };
+
+  rds = callPackage ../development/gnuradio-modules/rds/default.nix { };
+
+  limesdr = callPackage ../development/gnuradio-modules/limesdr/default.nix { };
+
+})
diff --git a/nixpkgs/pkgs/top-level/haskell-packages.nix b/nixpkgs/pkgs/top-level/haskell-packages.nix
new file mode 100644
index 000000000000..378c2c4385bd
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/haskell-packages.nix
@@ -0,0 +1,273 @@
+{ buildPackages, pkgsBuildTarget, pkgs, newScope, stdenv }:
+
+let
+  # These are attributes in compiler and packages that don't support integer-simple.
+  integerSimpleExcludes = [
+    "ghc865Binary"
+    "ghc8102Binary"
+    "ghc8102BinaryMinimal"
+    "ghc8107Binary"
+    "ghc8107BinaryMinimal"
+    "ghcjs"
+    "ghcjs810"
+    "integer-simple"
+    "native-bignum"
+    "ghc902"
+    "ghc921"
+    "ghcHEAD"
+  ];
+
+  nativeBignumIncludes = [
+    "ghc902"
+    "ghc921"
+    "ghcHEAD"
+  ];
+
+  haskellLibUncomposable = import ../development/haskell-modules/lib {
+    inherit (pkgs) lib;
+    inherit pkgs;
+  };
+
+  callPackage = newScope {
+    haskellLib = haskellLibUncomposable.compose;
+    overrides = pkgs.haskell.packageOverrides;
+  };
+
+  bootstrapPackageSet = self: super: {
+    mkDerivation = drv: super.mkDerivation (drv // {
+      doCheck = false;
+      doHaddock = false;
+      enableExecutableProfiling = false;
+      enableLibraryProfiling = false;
+      enableSharedExecutables = false;
+      enableSharedLibraries = false;
+    });
+  };
+
+  # Use this rather than `rec { ... }` below for sake of overlays.
+  inherit (pkgs.haskell) compiler packages;
+
+in {
+  lib = haskellLibUncomposable;
+
+  package-list = callPackage ../development/haskell-modules/package-list.nix {};
+
+  compiler = {
+
+    ghc865Binary = callPackage ../development/compilers/ghc/8.6.5-binary.nix {
+      llvmPackages = pkgs.llvmPackages_6;
+    };
+
+    ghc8102Binary = callPackage ../development/compilers/ghc/8.10.2-binary.nix {
+      llvmPackages = pkgs.llvmPackages_9;
+    };
+
+    ghc8102BinaryMinimal = callPackage ../development/compilers/ghc/8.10.2-binary.nix {
+      llvmPackages = pkgs.llvmPackages_9;
+      minimal = true;
+    };
+
+    ghc8107Binary = callPackage ../development/compilers/ghc/8.10.7-binary.nix {
+      llvmPackages = pkgs.llvmPackages_12;
+    };
+
+    ghc8107BinaryMinimal = callPackage ../development/compilers/ghc/8.10.7-binary.nix {
+      llvmPackages = pkgs.llvmPackages_12;
+      minimal = true;
+    };
+
+    ghc884 = callPackage ../development/compilers/ghc/8.8.4.nix {
+      bootPkgs =
+        # aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
+        # Musl bindists do not exist for ghc 8.6.5, so we use 8.10.* for them
+        if stdenv.isAarch64 || stdenv.hostPlatform.isMusl then
+          packages.ghc8102BinaryMinimal
+        else
+          packages.ghc865Binary;
+      inherit (buildPackages.python3Packages) sphinx;
+      buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_7;
+      llvmPackages = pkgs.llvmPackages_7;
+    };
+    ghc8107 = callPackage ../development/compilers/ghc/8.10.7.nix {
+      bootPkgs =
+        # aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
+        # the oldest ghc with aarch64-darwin support is 8.10.5
+        # Musl bindists do not exist for ghc 8.6.5, so we use 8.10.* for them
+        if stdenv.isAarch64 || stdenv.isAarch32 then
+          packages.ghc8107BinaryMinimal
+        else
+          packages.ghc8107Binary;
+      inherit (buildPackages.python3Packages) sphinx;
+      # Need to use apple's patched xattr until
+      # https://github.com/xattr/xattr/issues/44 and
+      # https://github.com/xattr/xattr/issues/55 are solved.
+      inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
+      buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
+      llvmPackages = pkgs.llvmPackages_12;
+    };
+    ghc902 = callPackage ../development/compilers/ghc/9.0.2.nix {
+      bootPkgs =
+        # aarch64 ghc8107Binary exceeds max output size on hydra
+        # the oldest ghc with aarch64-darwin support is 8.10.5
+        if stdenv.isAarch64 || stdenv.isAarch32 then
+          packages.ghc8107BinaryMinimal
+        else
+          packages.ghc8107Binary;
+      inherit (buildPackages.python3Packages) sphinx;
+      inherit (buildPackages.darwin) autoSignDarwinBinariesHook xattr;
+      buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
+      llvmPackages = pkgs.llvmPackages_12;
+    };
+    ghc921 = callPackage ../development/compilers/ghc/9.2.1.nix {
+      bootPkgs =
+        # aarch64 ghc8107Binary exceeds max output size on hydra
+        if stdenv.isAarch64 || stdenv.isAarch32 then
+          packages.ghc8107BinaryMinimal
+        else
+          packages.ghc8107Binary;
+      inherit (buildPackages.python3Packages) sphinx;
+      # Need to use apple's patched xattr until
+      # https://github.com/xattr/xattr/issues/44 and
+      # https://github.com/xattr/xattr/issues/55 are solved.
+      inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
+      buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
+      llvmPackages = pkgs.llvmPackages_12;
+    };
+    ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
+      bootPkgs = packages.ghc8107Binary;
+      inherit (buildPackages.python3Packages) sphinx;
+      # Need to use apple's patched xattr until
+      # https://github.com/xattr/xattr/issues/44 and
+      # https://github.com/xattr/xattr/issues/55 are solved.
+      inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
+      buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
+      llvmPackages = pkgs.llvmPackages_12;
+      libffi = pkgs.libffi;
+    };
+
+    ghcjs = compiler.ghcjs810;
+    ghcjs810 = callPackage ../development/compilers/ghcjs/8.10 {
+      bootPkgs = packages.ghc8107;
+      ghcjsSrcJson = ../development/compilers/ghcjs/8.10/git.json;
+      stage0 = ../development/compilers/ghcjs/8.10/stage0.nix;
+    };
+
+    # The integer-simple attribute set contains all the GHC compilers
+    # build with integer-simple instead of integer-gmp.
+    integer-simple = let
+      integerSimpleGhcNames = pkgs.lib.filter
+        (name: ! builtins.elem name integerSimpleExcludes)
+        (pkgs.lib.attrNames compiler);
+    in pkgs.recurseIntoAttrs (pkgs.lib.genAttrs
+      integerSimpleGhcNames
+      (name: compiler.${name}.override { enableIntegerSimple = true; }));
+
+    # Starting from GHC 9, integer-{simple,gmp} is replaced by ghc-bignum
+    # with "native" and "gmp" backends.
+    native-bignum = let
+      nativeBignumGhcNames = pkgs.lib.filter
+        (name: builtins.elem name nativeBignumIncludes)
+        (pkgs.lib.attrNames compiler);
+    in pkgs.recurseIntoAttrs (pkgs.lib.genAttrs
+      nativeBignumGhcNames
+      (name: compiler.${name}.override { enableNativeBignum = true; }));
+  };
+
+  # Default overrides that are applied to all package sets.
+  packageOverrides = self : super : {};
+
+  # Always get compilers from `buildPackages`
+  packages = let bh = buildPackages.haskell; in {
+
+    ghc865Binary = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc865Binary;
+      ghc = bh.compiler.ghc865Binary;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { };
+      packageSetConfig = bootstrapPackageSet;
+    };
+    ghc8102Binary = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc8102Binary;
+      ghc = bh.compiler.ghc8102Binary;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+      packageSetConfig = bootstrapPackageSet;
+    };
+    ghc8102BinaryMinimal = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc8102BinaryMinimal;
+      ghc = bh.compiler.ghc8102BinaryMinimal;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+      packageSetConfig = bootstrapPackageSet;
+    };
+    ghc8107Binary = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc8107Binary;
+      ghc = bh.compiler.ghc8107Binary;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+      packageSetConfig = bootstrapPackageSet;
+    };
+    ghc8107BinaryMinimal = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc8107BinaryMinimal;
+      ghc = bh.compiler.ghc8107BinaryMinimal;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+      packageSetConfig = bootstrapPackageSet;
+    };
+    ghc884 = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc884;
+      ghc = bh.compiler.ghc884;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
+    };
+    ghc8107 = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc8107;
+      ghc = bh.compiler.ghc8107;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+    };
+    ghc902 = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc902;
+      ghc = bh.compiler.ghc902;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.0.x.nix { };
+    };
+    ghc921 = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghc921;
+      ghc = bh.compiler.ghc921;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.2.x.nix { };
+    };
+    ghcHEAD = callPackage ../development/haskell-modules {
+      buildHaskellPackages = bh.packages.ghcHEAD;
+      ghc = bh.compiler.ghcHEAD;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
+    };
+
+    ghcjs = packages.ghcjs810;
+    ghcjs810 = callPackage ../development/haskell-modules rec {
+      buildHaskellPackages = ghc.bootPkgs;
+      ghc = bh.compiler.ghcjs810;
+      compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
+      packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
+    };
+
+    # The integer-simple attribute set contains package sets for all the GHC compilers
+    # using integer-simple instead of integer-gmp.
+    integer-simple = let
+      integerSimpleGhcNames = pkgs.lib.filter
+        (name: ! builtins.elem name integerSimpleExcludes)
+        (pkgs.lib.attrNames packages);
+    in pkgs.lib.genAttrs integerSimpleGhcNames (name: packages.${name}.override {
+      ghc = bh.compiler.integer-simple.${name};
+      buildHaskellPackages = bh.packages.integer-simple.${name};
+      overrides = _self : _super : {
+        integer-simple = null;
+        integer-gmp = null;
+      };
+    });
+
+    native-bignum = let
+      nativeBignumGhcNames = pkgs.lib.filter
+        (name: builtins.elem name nativeBignumIncludes)
+        (pkgs.lib.attrNames compiler);
+    in pkgs.lib.genAttrs nativeBignumGhcNames (name: packages.${name}.override {
+      ghc = bh.compiler.native-bignum.${name};
+      buildHaskellPackages = bh.packages.native-bignum.${name};
+      overrides = _self : _super : {
+        integer-gmp = null;
+      };
+    });
+  };
+}
diff --git a/nixpkgs/pkgs/top-level/haxe-packages.nix b/nixpkgs/pkgs/top-level/haxe-packages.nix
new file mode 100644
index 000000000000..66faa6f7cdbc
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/haxe-packages.nix
@@ -0,0 +1,119 @@
+{ stdenv, lib, fetchzip, fetchFromGitHub, haxe, neko, jdk, mono }:
+
+let
+  self = haxePackages;
+  haxePackages = with self; {
+
+    withCommas = lib.replaceChars ["."] [","];
+
+    # simulate "haxelib dev $libname ."
+    simulateHaxelibDev = libname: ''
+      devrepo=$(mktemp -d)
+      mkdir -p "$devrepo/${withCommas libname}"
+      echo $(pwd) > "$devrepo/${withCommas libname}/.dev"
+      export HAXELIB_PATH="$HAXELIB_PATH:$devrepo"
+    '';
+
+    installLibHaxe = { libname, version, files ? "*" }: ''
+      mkdir -p "$out/lib/haxe/${withCommas libname}/${withCommas version}"
+      echo -n "${version}" > $out/lib/haxe/${withCommas libname}/.current
+      cp -dpR ${files} "$out/lib/haxe/${withCommas libname}/${withCommas version}/"
+    '';
+
+    buildHaxeLib = {
+      libname,
+      version,
+      sha256,
+      meta,
+      ...
+    } @ attrs:
+      stdenv.mkDerivation (attrs // {
+        name = "${libname}-${version}";
+
+        buildInputs = (attrs.buildInputs or []) ++ [ haxe neko ]; # for setup-hook.sh to work
+        src = fetchzip rec {
+          name = "${libname}-${version}";
+          url = "http://lib.haxe.org/files/3.0/${withCommas name}.zip";
+          inherit sha256;
+          stripRoot = false;
+        };
+
+        installPhase = attrs.installPhase or ''
+          runHook preInstall
+          (
+            if [ $(ls $src | wc -l) == 1 ]; then
+              cd $src/* || cd $src
+            else
+              cd $src
+            fi
+            ${installLibHaxe { inherit libname version; }}
+          )
+          runHook postInstall
+        '';
+
+        meta = {
+          homepage = "http://lib.haxe.org/p/${libname}";
+          license = lib.licenses.bsd2;
+          platforms = lib.platforms.all;
+          description = throw "please write meta.description";
+        } // attrs.meta;
+      });
+
+    hxcpp = buildHaxeLib rec {
+      libname = "hxcpp";
+      version = "4.1.15";
+      sha256 = "1ybxcvwi4655563fjjgy6xv5c78grjxzadmi3l1ghds48k1rh50p";
+      postFixup = ''
+        for f in $out/lib/haxe/${withCommas libname}/${withCommas version}/{,project/libs/nekoapi/}bin/Linux{,64}/*; do
+          chmod +w "$f"
+          patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)   "$f" || true
+          patchelf --set-rpath ${ lib.makeLibraryPath [ stdenv.cc.cc ] }  "$f" || true
+        done
+      '';
+      meta.description = "Runtime support library for the Haxe C++ backend";
+    };
+
+    hxjava = buildHaxeLib {
+      libname = "hxjava";
+      version = "3.2.0";
+      sha256 = "1vgd7qvsdxlscl3wmrrfi5ipldmr4xlsiwnj46jz7n6izff5261z";
+      meta.description = "Support library for the Java backend of the Haxe compiler";
+      propagatedBuildInputs = [ jdk ];
+    };
+
+    hxcs = buildHaxeLib {
+      libname = "hxcs";
+      version = "3.4.0";
+      sha256 = "0f5vgp2kqnpsbbkn2wdxmjf7xkl0qhk9lgl9kb8d5wdy89nac6q6";
+      meta.description = "Support library for the C# backend of the Haxe compiler";
+      propagatedBuildInputs = [ mono ];
+    };
+
+    hxnodejs_4 = buildHaxeLib {
+      libname = "hxnodejs";
+      version = "4.0.9";
+      sha256 = "0b7ck48nsxs88sy4fhhr0x1bc8h2ja732zzgdaqzxnh3nir0bajm";
+      meta.description = "Extern definitions for node.js 4.x";
+    };
+
+    hxnodejs_6 = let
+      libname = "hxnodejs";
+      version = "6.9.0";
+    in stdenv.mkDerivation {
+      name = "${libname}-${version}";
+      src = fetchFromGitHub {
+        owner = "HaxeFoundation";
+        repo = "hxnodejs";
+        rev = "cf80c6a";
+        sha256 = "0mdiacr5b2m8jrlgyd2d3vp1fha69lcfb67x4ix7l7zfi8g460gs";
+      };
+      installPhase = installLibHaxe { inherit libname version; };
+      meta = {
+        homepage = "http://lib.haxe.org/p/${libname}";
+        license = lib.licenses.bsd2;
+        platforms = lib.platforms.all;
+        description = "Extern definitions for node.js 6.9";
+      };
+    };
+  };
+in self
diff --git a/nixpkgs/pkgs/top-level/impure.nix b/nixpkgs/pkgs/top-level/impure.nix
new file mode 100644
index 000000000000..7a711af556aa
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/impure.nix
@@ -0,0 +1,84 @@
+/* Impure default args for `pkgs/top-level/default.nix`. See that file
+   for the meaning of each argument. */
+
+
+let
+
+  homeDir = builtins.getEnv "HOME";
+
+  # Return ‘x’ if it evaluates, or ‘def’ if it throws an exception.
+  try = x: def: let res = builtins.tryEval x; in if res.success then res.value else def;
+
+in
+
+{ # We put legacy `system` into `localSystem`, if `localSystem` was not passed.
+  # If neither is passed, assume we are building packages on the current
+  # (build, in GNU Autotools parlance) platform.
+  localSystem ? { system = args.system or builtins.currentSystem; }
+
+# These are needed only because nix's `--arg` command-line logic doesn't work
+# with unnamed parameters allowed by ...
+, system ? localSystem.system
+, crossSystem ? localSystem
+
+, # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or
+  # $HOME/.config/nixpkgs/config.nix.
+  config ? let
+      configFile = builtins.getEnv "NIXPKGS_CONFIG";
+      configFile2 = homeDir + "/.config/nixpkgs/config.nix";
+      configFile3 = homeDir + "/.nixpkgs/config.nix"; # obsolete
+    in
+      if configFile != "" && builtins.pathExists configFile then import configFile
+      else if homeDir != "" && builtins.pathExists configFile2 then import configFile2
+      else if homeDir != "" && builtins.pathExists configFile3 then import configFile3
+      else {}
+
+, # Overlays are used to extend Nixpkgs collection with additional
+  # collections of packages.  These collection of packages are part of the
+  # fix-point made by Nixpkgs.
+  overlays ? let
+      isDir = path: builtins.pathExists (path + "/.");
+      pathOverlays = try (toString <nixpkgs-overlays>) "";
+      homeOverlaysFile = homeDir + "/.config/nixpkgs/overlays.nix";
+      homeOverlaysDir = homeDir + "/.config/nixpkgs/overlays";
+      overlays = path:
+        # check if the path is a directory or a file
+        if isDir path then
+          # it's a directory, so the set of overlays from the directory, ordered lexicographically
+          let content = builtins.readDir path; in
+          map (n: import (path + ("/" + n)))
+            (builtins.filter (n: builtins.match ".*\\.nix" n != null || builtins.pathExists (path + ("/" + n + "/default.nix")))
+              (builtins.attrNames content))
+        else
+          # it's a file, so the result is the contents of the file itself
+          import path;
+    in (if builtins.pathExists ../../../overlays then overlays ../../../overlays else []) ++ (
+      if pathOverlays != "" && builtins.pathExists pathOverlays then overlays pathOverlays
+      else if builtins.pathExists homeOverlaysFile && builtins.pathExists homeOverlaysDir then
+        throw ''
+          Nixpkgs overlays can be specified with ${homeOverlaysFile} or ${homeOverlaysDir}, but not both.
+          Please remove one of them and try again.
+        ''
+      else if builtins.pathExists homeOverlaysFile then
+        if isDir homeOverlaysFile then
+          throw (homeOverlaysFile + " should be a file")
+        else overlays homeOverlaysFile
+      else if builtins.pathExists homeOverlaysDir then
+        if !(isDir homeOverlaysDir) then
+          throw (homeOverlaysDir + " should be a directory")
+        else overlays homeOverlaysDir
+      else [])
+
+, crossOverlays ? []
+
+, ...
+} @ args:
+
+# If `localSystem` was explicitly passed, legacy `system` should
+# not be passed, and vice-versa.
+assert args ? localSystem -> !(args ? system);
+assert args ? system -> !(args ? localSystem);
+
+import ./. (builtins.removeAttrs args [ "system" ] // {
+  inherit config overlays localSystem;
+})
diff --git a/nixpkgs/pkgs/top-level/java-packages.nix b/nixpkgs/pkgs/top-level/java-packages.nix
new file mode 100644
index 000000000000..c8d9e85fbd77
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/java-packages.nix
@@ -0,0 +1,488 @@
+{ pkgs }:
+
+with pkgs;
+
+let
+  mavenbuild = callPackage ../development/java-modules/build-maven-package.nix { };
+  fetchMaven = callPackage ../development/java-modules/m2install.nix { };
+
+  openjfx11 = callPackage ../development/compilers/openjdk/openjfx/11.nix { };
+  openjfx15 = callPackage ../development/compilers/openjdk/openjfx/15.nix { };
+  openjfx17 = callPackage ../development/compilers/openjdk/openjfx/17.nix { };
+
+in {
+  inherit mavenbuild fetchMaven openjfx11 openjfx15 openjfx17;
+
+  compiler = let
+
+    gnomeArgs = {
+      inherit (gnome2) GConf gnome_vfs;
+    };
+
+    bootstrapArgs = gnomeArgs // {
+      openjfx = openjfx11; /* need this despite next line :-( */
+      enableJavaFX = false;
+      headless = true;
+    };
+
+    mkAdoptopenjdk = path-linux: path-darwin: let
+      package-linux  = import path-linux { inherit lib; };
+      package-darwin = import path-darwin { inherit lib; };
+      package = if stdenv.isLinux
+        then package-linux
+        else package-darwin;
+    in rec {
+      inherit package-linux package-darwin;
+
+      jdk-hotspot = callPackage package.jdk-hotspot {};
+      jre-hotspot = callPackage package.jre-hotspot {};
+      jdk-openj9  = callPackage package.jdk-openj9  {};
+      jre-openj9  = callPackage package.jre-openj9  {};
+    };
+
+    mkBootstrap = adoptopenjdk: path: args:
+      /* adoptopenjdk not available for i686, so fall back to our old builds for bootstrapping */
+      if   adoptopenjdk.jdk-hotspot.meta.available
+      then adoptopenjdk.jdk-hotspot
+      else callPackage path args;
+
+    mkOpenjdk = path-linux: path-darwin: args:
+      if stdenv.isLinux
+      then mkOpenjdkLinuxOnly path-linux args
+      else let
+        openjdk = callPackage path-darwin {};
+      in openjdk // { headless = openjdk; };
+
+    mkOpenjdkLinuxOnly = path-linux: args: let
+      openjdk = callPackage path-linux  (gnomeArgs // args);
+    in openjdk // {
+      headless = openjdk.override { headless = true; };
+    };
+
+    openjdkDarwinMissing = version:
+      abort "OpenJDK ${builtins.toString version} is currently not supported on Darwin by nixpkgs.";
+
+  in rec {
+
+    adoptopenjdk-8 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk8-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk8-darwin.nix;
+
+    adoptopenjdk-11 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk11-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk11-darwin.nix;
+
+    adoptopenjdk-13 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk13-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk13-darwin.nix;
+
+    adoptopenjdk-14 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk14-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk14-darwin.nix;
+
+    adoptopenjdk-15 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk15-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk15-darwin.nix;
+
+    adoptopenjdk-16 = mkAdoptopenjdk
+      ../development/compilers/adoptopenjdk-bin/jdk16-linux.nix
+      ../development/compilers/adoptopenjdk-bin/jdk16-darwin.nix;
+
+    openjdk8-bootstrap = mkBootstrap adoptopenjdk-8
+      ../development/compilers/openjdk/bootstrap.nix
+      { version = "8"; };
+
+    openjdk11-bootstrap = mkBootstrap adoptopenjdk-11
+      ../development/compilers/openjdk/bootstrap.nix
+      { version = "10"; };
+
+    openjdk13-bootstrap = mkBootstrap adoptopenjdk-13
+      ../development/compilers/openjdk/12.nix
+      (bootstrapArgs // {
+        /* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
+        stdenv = gcc8Stdenv;
+      });
+
+    openjdk14-bootstrap = mkBootstrap adoptopenjdk-14
+      ../development/compilers/openjdk/13.nix
+      (bootstrapArgs // {
+        inherit openjdk13-bootstrap;
+      });
+
+    openjdk15-bootstrap = mkBootstrap adoptopenjdk-15
+      ../development/compilers/openjdk/14.nix
+      (bootstrapArgs // {
+        inherit openjdk14-bootstrap;
+      });
+
+    openjdk16-bootstrap = mkBootstrap adoptopenjdk-16
+      ../development/compilers/openjdk/15.nix
+      (bootstrapArgs // {
+        inherit openjdk15-bootstrap;
+      });
+
+    openjdk17-bootstrap = mkBootstrap adoptopenjdk-16
+      ../development/compilers/openjdk/16.nix
+      (bootstrapArgs // {
+        inherit openjdk16-bootstrap;
+      });
+
+    openjdk8 = mkOpenjdk
+      ../development/compilers/openjdk/8.nix
+      ../development/compilers/openjdk/darwin/8.nix
+      { };
+
+    openjdk11 = mkOpenjdk
+      ../development/compilers/openjdk/11.nix
+      ../development/compilers/openjdk/darwin/11.nix
+      { openjfx = openjfx11; };
+
+    openjdk12 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/12.nix {
+        /* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
+        stdenv = gcc8Stdenv;
+        openjfx = openjfx11;
+    };
+
+    openjdk13 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/13.nix {
+      inherit openjdk13-bootstrap;
+      openjfx = openjfx11;
+    };
+
+    openjdk14 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/14.nix {
+      inherit openjdk14-bootstrap;
+      openjfx = openjfx11;
+    };
+
+    openjdk15 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/15.nix {
+      inherit openjdk15-bootstrap;
+      openjfx = openjfx15;
+    };
+
+    openjdk16 = mkOpenjdk
+      ../development/compilers/openjdk/16.nix
+      ../development/compilers/openjdk/darwin/16.nix
+      {
+        inherit openjdk16-bootstrap;
+        openjfx = openjfx15;
+      };
+
+    openjdk17 = mkOpenjdk
+      ../development/compilers/openjdk/17.nix
+      ../development/compilers/openjdk/darwin/17.nix
+      {
+        inherit openjdk17-bootstrap;
+        openjfx = openjfx17;
+      };
+  };
+
+  mavenPlugins = recurseIntoAttrs (callPackage ../development/java-modules/mavenPlugins.nix { });
+
+  inherit (callPackage ../development/java-modules/eclipse/aether-util.nix { inherit fetchMaven; })
+    aetherUtil_0_9_0_M2;
+
+  inherit (callPackage ../development/java-modules/apache/ant.nix { inherit fetchMaven; })
+    ant_1_8_2;
+
+  inherit (callPackage ../development/java-modules/apache/ant-launcher.nix { inherit fetchMaven; })
+    antLauncher_1_8_2;
+
+  inherit (callPackage ../development/java-modules/beanshell/bsh.nix { inherit fetchMaven; })
+    bsh_2_0_b4;
+
+  inherit (callPackage ../development/java-modules/classworlds/classworlds.nix { inherit fetchMaven; })
+    classworlds_1_1_alpha2
+    classworlds_1_1;
+
+  inherit (callPackage ../development/java-modules/apache/commons-cli.nix { inherit fetchMaven; })
+    commonsCli_1_0
+    commonsCli_1_2;
+
+  inherit (callPackage ../development/java-modules/apache/commons-io.nix { inherit fetchMaven; })
+    commonsIo_2_1;
+
+  inherit (callPackage ../development/java-modules/apache/commons-lang.nix { inherit fetchMaven; })
+    commonsLang_2_1
+    commonsLang_2_3
+    commonsLang_2_6;
+
+  inherit (callPackage ../development/java-modules/apache/commons-lang3.nix { inherit fetchMaven; })
+    commonsLang3_3_1;
+
+  inherit (callPackage ../development/java-modules/apache/commons-logging-api.nix { inherit fetchMaven; })
+    commonsLoggingApi_1_1;
+
+  inherit (callPackage ../development/java-modules/findbugs/jsr305.nix { inherit fetchMaven; })
+    findbugsJsr305_2_0_1;
+
+  inherit (callPackage ../development/java-modules/google/collections.nix { inherit fetchMaven; })
+    googleCollections_1_0;
+
+  inherit (callPackage ../development/java-modules/hamcrest/all.nix { inherit fetchMaven; })
+    hamcrestAll_1_3;
+
+  inherit (callPackage ../development/java-modules/hamcrest/core.nix { inherit fetchMaven; })
+    hamcrestCore_1_3;
+
+  inherit (callPackage ../development/java-modules/junit { inherit mavenbuild fetchMaven; })
+    junit_3_8_1
+    junit_3_8_2
+    junit_4_12;
+
+  inherit (callPackage ../development/java-modules/jogl { })
+    jogl_2_3_2;
+
+  inherit (callPackage ../development/java-modules/log4j { inherit fetchMaven; })
+    log4j_1_2_12;
+
+  inherit (callPackage ../development/java-modules/maven/archiver.nix { inherit fetchMaven; })
+    mavenArchiver_2_5;
+
+  inherit (callPackage ../development/java-modules/maven/artifact.nix { inherit fetchMaven; })
+    mavenArtifact_2_0_1
+    mavenArtifact_2_0_6
+    mavenArtifact_2_0_8
+    mavenArtifact_2_0_9
+    mavenArtifact_2_2_1
+    mavenArtifact_3_0_3;
+
+  inherit (callPackage ../development/java-modules/maven/artifact-manager.nix { inherit fetchMaven; })
+    mavenArtifactManager_2_0_1
+    mavenArtifactManager_2_0_6
+    mavenArtifactManager_2_0_9
+    mavenArtifactManager_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/common-artifact-filters.nix { inherit fetchMaven; })
+    mavenCommonArtifactFilters_1_2
+    mavenCommonArtifactFilters_1_3
+    mavenCommonArtifactFilters_1_4;
+
+  inherit (callPackage ../development/java-modules/maven/compiler-plugin.nix { inherit fetchMaven; })
+    mavenCompiler_3_2;
+
+  inherit (callPackage ../development/java-modules/maven/core.nix { inherit fetchMaven; })
+    mavenCore_2_0_1
+    mavenCore_2_0_6
+    mavenCore_2_0_9
+    mavenCore_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/dependency-tree.nix { inherit fetchMaven; })
+    mavenDependencyTree_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/doxia-sink-api.nix { inherit fetchMaven; })
+    mavenDoxiaSinkApi_1_0_alpha6
+    mavenDoxiaSinkApi_1_0_alpha7
+    mavenDoxiaSinkApi_1_0_alpha10;
+
+  inherit (callPackage ../development/java-modules/maven/enforcer.nix { inherit fetchMaven; })
+    mavenEnforcerApi_1_3_1
+    mavenEnforcerRules_1_3_1;
+
+  inherit (callPackage ../development/java-modules/maven/error-diagnostics.nix { inherit fetchMaven; })
+    mavenErrorDiagnostics_2_0_1
+    mavenErrorDiagnostics_2_0_6
+    mavenErrorDiagnostics_2_0_9
+    mavenErrorDiagnostics_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/filtering.nix { inherit fetchMaven; })
+    mavenFiltering_1_1;
+
+  inherit (callPackage ../development/java-modules/maven-hello { inherit mavenbuild; })
+    mavenHello_1_0
+    mavenHello_1_1;
+
+  inherit (callPackage ../development/java-modules/maven/model.nix { inherit fetchMaven; })
+    mavenModel_2_0_1
+    mavenModel_2_0_6
+    mavenModel_2_0_9
+    mavenModel_2_2_1
+    mavenModel_3_0_3;
+
+  inherit (callPackage ../development/java-modules/maven/monitor.nix { inherit fetchMaven; })
+    mavenMonitor_2_0_1
+    mavenMonitor_2_0_6
+    mavenMonitor_2_0_9
+    mavenMonitor_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-annotations.nix { inherit fetchMaven; })
+    mavenPluginAnnotations_3_1
+    mavenPluginAnnotations_3_2;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-api.nix { inherit fetchMaven; })
+    mavenPluginApi_2_0_1
+    mavenPluginApi_2_0_6
+    mavenPluginApi_2_0_9
+    mavenPluginApi_2_2_1
+    mavenPluginApi_3_0_3;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-descriptor.nix { inherit fetchMaven; })
+    mavenPluginDescriptor_2_0_1
+    mavenPluginDescriptor_2_0_6
+    mavenPluginDescriptor_2_0_9
+    mavenPluginDescriptor_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-parameter-documenter.nix { inherit fetchMaven; })
+    mavenPluginParameterDocumenter_2_0_1
+    mavenPluginParameterDocumenter_2_0_6
+    mavenPluginParameterDocumenter_2_0_9
+    mavenPluginParameterDocumenter_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-registry.nix { inherit fetchMaven; })
+    mavenPluginRegistry_2_0_1
+    mavenPluginRegistry_2_0_6
+    mavenPluginRegistry_2_0_9
+    mavenPluginRegistry_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/plugin-testing-harness.nix { inherit fetchMaven; })
+    mavenPluginTestingHarness_1_1;
+
+  inherit (callPackage ../development/java-modules/maven/profile.nix { inherit fetchMaven; })
+    mavenProfile_2_0_1
+    mavenProfile_2_0_6
+    mavenProfile_2_0_9
+    mavenProfile_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/project.nix { inherit fetchMaven; })
+    mavenProject_2_0_1
+    mavenProject_2_0_6
+    mavenProject_2_0_8
+    mavenProject_2_0_9
+    mavenProject_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/reporting-api.nix { inherit fetchMaven; })
+    mavenReportingApi_2_0_1
+    mavenReportingApi_2_0_6
+    mavenReportingApi_2_0_9
+    mavenReportingApi_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/repository-metadata.nix { inherit fetchMaven; })
+    mavenRepositoryMetadata_2_0_1
+    mavenRepositoryMetadata_2_0_6
+    mavenRepositoryMetadata_2_0_9
+    mavenRepositoryMetadata_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/settings.nix { inherit fetchMaven; })
+    mavenSettings_2_0_1
+    mavenSettings_2_0_6
+    mavenSettings_2_0_9
+    mavenSettings_2_2_1;
+
+  inherit (callPackage ../development/java-modules/maven/shared-incremental.nix { inherit fetchMaven; })
+    mavenSharedIncremental_1_1;
+
+  inherit (callPackage ../development/java-modules/maven/shared-utils.nix { inherit fetchMaven; })
+    mavenSharedUtils_0_1;
+
+  inherit (callPackage ../development/java-modules/maven/surefire-api.nix { inherit fetchMaven; })
+    mavenSurefireApi_2_12_4
+    mavenSurefireApi_2_17;
+
+  inherit (callPackage ../development/java-modules/maven/surefire-booter.nix { inherit fetchMaven; })
+    mavenSurefireBooter_2_12_4
+    mavenSurefireBooter_2_17;
+
+  inherit (callPackage ../development/java-modules/maven/surefire-common.nix { inherit fetchMaven; })
+    mavenSurefireCommon_2_12_4
+    mavenSurefireCommon_2_17;
+
+  inherit (callPackage ../development/java-modules/maven/surefire-junit4.nix { inherit fetchMaven; })
+    mavenSurefireJunit4_2_12_4;
+
+  inherit (callPackage ../development/java-modules/maven/toolchain.nix { inherit fetchMaven; })
+    mavenToolchain_1_0
+    mavenToolchain_2_0_9
+    mavenToolchain_2_2_1;
+
+  inherit (callPackage ../development/java-modules/mojo/animal-sniffer.nix { inherit fetchMaven; })
+    mojoAnimalSniffer_1_11;
+
+  inherit (callPackage ../development/java-modules/mojo/java-boot-classpath-detector.nix { inherit fetchMaven; })
+    mojoJavaBootClasspathDetector_1_11;
+
+  inherit (callPackage ../development/java-modules/ow2/asm-all.nix { inherit fetchMaven; })
+    ow2AsmAll_4_0;
+
+  inherit (callPackage ../development/java-modules/plexus/archiver.nix { inherit fetchMaven; })
+    plexusArchiver_1_0_alpha7
+    plexusArchiver_2_1;
+
+  inherit (callPackage ../development/java-modules/plexus/build-api.nix { inherit fetchMaven; })
+    plexusBuildApi_0_0_4;
+
+  inherit (callPackage ../development/java-modules/plexus/classworlds.nix { inherit fetchMaven; })
+    plexusClassworlds_2_2_2
+    plexusClassworlds_2_4;
+
+  inherit (callPackage ../development/java-modules/plexus/compiler-api.nix { inherit fetchMaven; })
+    plexusCompilerApi_2_2
+    plexusCompilerApi_2_4;
+
+  inherit (callPackage ../development/java-modules/plexus/compiler-javac.nix { inherit fetchMaven; })
+    plexusCompilerJavac_2_2
+    plexusCompilerJavac_2_4;
+
+  inherit (callPackage ../development/java-modules/plexus/compiler-manager.nix { inherit fetchMaven; })
+    plexusCompilerManager_2_2
+    plexusCompilerManager_2_4;
+
+  inherit (callPackage ../development/java-modules/plexus/component-annotations.nix { inherit fetchMaven; })
+    plexusComponentAnnotations_1_5_5;
+
+  inherit (callPackage ../development/java-modules/plexus/container-default.nix { inherit fetchMaven; })
+    plexusContainerDefault_1_0_alpha9
+    plexusContainerDefault_1_0_alpha9_stable1
+    plexusContainerDefault_1_5_5;
+
+  inherit (callPackage ../development/java-modules/plexus/digest.nix { inherit fetchMaven; })
+    plexusDigest_1_0;
+
+  inherit (callPackage ../development/java-modules/plexus/i18n.nix { inherit fetchMaven; })
+    plexusI18n_1_0_beta6;
+
+  inherit (callPackage ../development/java-modules/plexus/interactivity-api.nix { inherit fetchMaven; })
+    plexusInteractivityApi_1_0_alpha4;
+
+  inherit (callPackage ../development/java-modules/plexus/interpolation.nix { inherit fetchMaven; })
+    plexusInterpolation_1_11
+    plexusInterpolation_1_12
+    plexusInterpolation_1_13
+    plexusInterpolation_1_15;
+
+  inherit (callPackage ../development/java-modules/plexus/io.nix { inherit fetchMaven; })
+    plexusIo_2_0_2;
+
+  inherit (callPackage ../development/java-modules/plexus/utils.nix { inherit fetchMaven; })
+    plexusUtils_1_0_4
+    plexusUtils_1_0_5
+    plexusUtils_1_1
+    plexusUtils_1_4_1
+    plexusUtils_1_4_5
+    plexusUtils_1_4_9
+    plexusUtils_1_5_1
+    plexusUtils_1_5_5
+    plexusUtils_1_5_6
+    plexusUtils_1_5_8
+    plexusUtils_1_5_15
+    plexusUtils_2_0_5
+    plexusUtils_2_0_6
+    plexusUtils_3_0
+    plexusUtils_3_0_5
+    plexusUtils_3_0_8;
+
+  inherit (callPackage ../development/java-modules/sisu/guice.nix { inherit fetchMaven; })
+    sisuGuice_2_9_4;
+
+  inherit (callPackage ../development/java-modules/sisu/inject-bean.nix { inherit fetchMaven; })
+    sisuInjectBean_2_1_1;
+
+  inherit (callPackage ../development/java-modules/sisu/inject-plexus.nix { inherit fetchMaven; })
+    sisuInjectPlexus_2_1_1;
+
+  inherit (callPackage ../development/java-modules/apache/xbean-reflect.nix { inherit fetchMaven; })
+    xbeanReflect_3_4;
+
+  inherit (callPackage ../development/java-modules/xerces/impl.nix { inherit fetchMaven; })
+    xercesImpl_2_8_0;
+
+  inherit (callPackage ../development/java-modules/xml-apis { inherit fetchMaven; })
+    xmlApis_1_3_03;
+}
diff --git a/nixpkgs/pkgs/top-level/kodi-packages.nix b/nixpkgs/pkgs/top-level/kodi-packages.nix
new file mode 100644
index 000000000000..6771ffe65b1d
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/kodi-packages.nix
@@ -0,0 +1,160 @@
+{ config, lib, newScope, kodi, libretro }:
+
+with lib;
+
+let
+  inherit (libretro) genesis-plus-gx mgba snes9x;
+in
+
+let self = rec {
+
+  addonDir = "/share/kodi/addons";
+  rel = "Matrix";
+
+  callPackage = newScope self;
+
+  inherit kodi;
+
+  # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
+  toKodiAddon = drv: drv.overrideAttrs (oldAttrs: {
+    # Use passthru in order to prevent rebuilds when possible.
+    passthru = (oldAttrs.passthru or {}) // {
+      kodiAddonFor = kodi;
+      requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs;
+    };
+  });
+
+  # Check whether a derivation provides a Kodi addon.
+  hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi;
+
+  # Get list of required Kodi addons given a list of derivations.
+  requiredKodiAddons = drvs:
+    let
+      modules = filter hasKodiAddon drvs;
+    in
+      unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
+
+  # package update scripts
+
+  addonUpdateScript = callPackage ../applications/video/kodi/addons/addon-update-script { };
+
+  # package builders
+
+  buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
+
+  buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
+
+  # regular packages
+
+  kodi-platform = callPackage ../applications/video/kodi/addons/kodi-platform { };
+
+  # addon packages
+
+  a4ksubtitles = callPackage ../applications/video/kodi/addons/a4ksubtitles { };
+
+  arteplussept = callPackage ../applications/video/kodi/addons/arteplussept { };
+
+  controller-topology-project = callPackage ../applications/video/kodi/addons/controller-topology-project { };
+
+  iagl = callPackage ../applications/video/kodi/addons/iagl { };
+
+  libretro = callPackage ../applications/video/kodi/addons/libretro { };
+
+  libretro-genplus = callPackage ../applications/video/kodi/addons/libretro-genplus { inherit genesis-plus-gx; };
+
+  libretro-mgba = callPackage ../applications/video/kodi/addons/libretro-mgba { inherit mgba; };
+
+  libretro-snes9x = callPackage ../applications/video/kodi/addons/libretro-snes9x { inherit snes9x; };
+
+  jellyfin = callPackage ../applications/video/kodi/addons/jellyfin { };
+
+  joystick = callPackage ../applications/video/kodi/addons/joystick { };
+
+  keymap = callPackage ../applications/video/kodi/addons/keymap { };
+
+  netflix = callPackage ../applications/video/kodi/addons/netflix { };
+
+  orftvthek = callPackage ../applications/video/kodi/addons/orftvthek { };
+
+  svtplay = callPackage ../applications/video/kodi/addons/svtplay { };
+
+  steam-controller = callPackage ../applications/video/kodi/addons/steam-controller { };
+
+  steam-launcher = callPackage ../applications/video/kodi/addons/steam-launcher { };
+
+  steam-library = callPackage ../applications/video/kodi/addons/steam-library { };
+
+  pdfreader = callPackage ../applications/video/kodi/addons/pdfreader { };
+
+  pvr-hts = callPackage ../applications/video/kodi/addons/pvr-hts { };
+
+  pvr-hdhomerun = callPackage ../applications/video/kodi/addons/pvr-hdhomerun { };
+
+  pvr-iptvsimple = callPackage ../applications/video/kodi/addons/pvr-iptvsimple { };
+
+  osmc-skin = callPackage ../applications/video/kodi/addons/osmc-skin { };
+
+  vfs-sftp = callPackage ../applications/video/kodi/addons/vfs-sftp { };
+
+  vfs-libarchive = callPackage ../applications/video/kodi/addons/vfs-libarchive { };
+
+  youtube = callPackage ../applications/video/kodi/addons/youtube { };
+
+  # addon packages (dependencies)
+
+  archive_tool = callPackage ../applications/video/kodi/addons/archive_tool { };
+
+  certifi = callPackage ../applications/video/kodi/addons/certifi { };
+
+  chardet = callPackage ../applications/video/kodi/addons/chardet { };
+
+  dateutil = callPackage ../applications/video/kodi/addons/dateutil { };
+
+  defusedxml = callPackage ../applications/video/kodi/addons/defusedxml { };
+
+  future = callPackage ../applications/video/kodi/addons/future { };
+
+  idna = callPackage ../applications/video/kodi/addons/idna { };
+
+  inputstream-adaptive = callPackage ../applications/video/kodi/addons/inputstream-adaptive { };
+
+  inputstream-ffmpegdirect = callPackage ../applications/video/kodi/addons/inputstream-ffmpegdirect { };
+
+  inputstream-rtmp = callPackage ../applications/video/kodi/addons/inputstream-rtmp { };
+
+  inputstreamhelper = callPackage ../applications/video/kodi/addons/inputstreamhelper { };
+
+  kodi-six = callPackage ../applications/video/kodi/addons/kodi-six { };
+
+  myconnpy = callPackage ../applications/video/kodi/addons/myconnpy { };
+
+  requests = callPackage ../applications/video/kodi/addons/requests { };
+
+  requests-cache = callPackage ../applications/video/kodi/addons/requests-cache { };
+
+  routing = callPackage ../applications/video/kodi/addons/routing { };
+
+  signals = callPackage ../applications/video/kodi/addons/signals { };
+
+  simplejson = callPackage ../applications/video/kodi/addons/simplejson { };
+
+  six = callPackage ../applications/video/kodi/addons/six { };
+
+  urllib3 = callPackage ../applications/video/kodi/addons/urllib3 { };
+
+  websocket = callPackage ../applications/video/kodi/addons/websocket { };
+
+  xbmcswift2 = callPackage ../applications/video/kodi/addons/xbmcswift2 { };
+
+  typing_extensions = callPackage ../applications/video/kodi/addons/typing_extensions { };
+
+  arrow = callPackage ../applications/video/kodi/addons/arrow { };
+
+  trakt-module = callPackage ../applications/video/kodi/addons/trakt-module { };
+
+  trakt = callPackage ../applications/video/kodi/addons/trakt { };
+}; in self // lib.optionalAttrs (config.allowAliases or true) {
+  # deprecated or renamed packages
+
+  controllers = throw "kodi.packages.controllers has been replaced with kodi.packages.controller-topology-project - a package which contains a large number of controller profiles." { };
+}
diff --git a/nixpkgs/pkgs/top-level/linux-kernels.nix b/nixpkgs/pkgs/top-level/linux-kernels.nix
new file mode 100644
index 000000000000..dedb8f015fc4
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/linux-kernels.nix
@@ -0,0 +1,573 @@
+{ pkgs
+, linuxKernel
+, config
+, buildPackages
+, callPackage
+, makeOverridable
+, recurseIntoAttrs
+, dontRecurseIntoAttrs
+, stdenv
+, stdenvNoCC
+, newScope
+, lib
+, fetchurl
+}:
+
+# When adding a kernel:
+  # - Update packageAliases.linux_latest to the latest version
+  # - Update the rev in ../os-specific/linux/kernel/linux-libre.nix to the latest one.
+  # - Update linux_latest_hardened when the patches become available
+
+with linuxKernel;
+
+let
+  deblobKernel = kernel: callPackage ../os-specific/linux/kernel/linux-libre.nix {
+    linux = kernel;
+  };
+
+  # Hardened Linux
+  hardenedKernelFor = kernel': overrides:
+    let
+      kernel = kernel'.override overrides;
+      version = kernelPatches.hardened.${kernel.meta.branch}.version;
+      major = lib.versions.major version;
+      sha256 = kernelPatches.hardened.${kernel.meta.branch}.sha256;
+      modDirVersion' = builtins.replaceStrings [ kernel.version ] [ version ] kernel.modDirVersion;
+    in kernel.override {
+      structuredExtraConfig = import ../os-specific/linux/kernel/hardened/config.nix {
+        inherit lib version;
+      };
+      argsOverride = {
+        inherit version;
+        src = fetchurl {
+          url = "mirror://kernel/linux/kernel/v${major}.x/linux-${version}.tar.xz";
+          inherit sha256;
+        };
+      };
+      kernelPatches = kernel.kernelPatches ++ [
+        kernelPatches.hardened.${kernel.meta.branch}
+      ];
+      modDirVersionArg = modDirVersion' + (kernelPatches.hardened.${kernel.meta.branch}).extra;
+      isHardened = true;
+  };
+in {
+  kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { };
+
+  kernels = recurseIntoAttrs (lib.makeExtensible (self: with self;
+    let callPackage = newScope self; in {
+
+    linux_mptcp_95 = callPackage ../os-specific/linux/kernel/linux-mptcp-95.nix {
+      kernelPatches = linux_4_19.kernelPatches;
+    };
+
+    linux_rpi1 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
+      kernelPatches = with kernelPatches; [
+        bridge_stp_helper
+        request_key_helper
+      ];
+      rpiVersion = 1;
+    };
+
+    linux_rpi2 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
+      kernelPatches = with kernelPatches; [
+        bridge_stp_helper
+        request_key_helper
+      ];
+      rpiVersion = 2;
+    };
+
+    linux_rpi3 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
+      kernelPatches = with kernelPatches; [
+        bridge_stp_helper
+        request_key_helper
+      ];
+      rpiVersion = 3;
+    };
+
+    linux_rpi4 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
+      kernelPatches = with kernelPatches; [
+        bridge_stp_helper
+        request_key_helper
+      ];
+      rpiVersion = 4;
+    };
+
+    linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream";
+
+    linux_4_9 = callPackage ../os-specific/linux/kernel/linux-4.9.nix {
+      kernelPatches =
+        [ kernelPatches.bridge_stp_helper
+          kernelPatches.request_key_helper_updated
+          kernelPatches.cpu-cgroup-v2."4.9"
+          kernelPatches.modinst_arg_list_too_long
+        ];
+    };
+
+    linux_4_14 = callPackage ../os-specific/linux/kernel/linux-4.14.nix {
+      kernelPatches =
+        [ kernelPatches.bridge_stp_helper
+          kernelPatches.request_key_helper
+          # See pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md
+          # when adding a new linux version
+          kernelPatches.cpu-cgroup-v2."4.11"
+          kernelPatches.modinst_arg_list_too_long
+        ];
+    };
+
+    linux_4_19 = callPackage ../os-specific/linux/kernel/linux-4.19.nix {
+      kernelPatches =
+        [ kernelPatches.bridge_stp_helper
+          kernelPatches.request_key_helper
+          kernelPatches.modinst_arg_list_too_long
+        ];
+    };
+
+    linux_5_4 = callPackage ../os-specific/linux/kernel/linux-5.4.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+        kernelPatches.rtl8761b_support
+      ];
+    };
+
+    linux_rt_5_4 = callPackage ../os-specific/linux/kernel/linux-rt-5.4.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_5_10 = callPackage ../os-specific/linux/kernel/linux-5.10.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_rt_5_10 = callPackage ../os-specific/linux/kernel/linux-rt-5.10.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+        kernelPatches.export-rt-sched-migrate
+      ];
+    };
+
+    linux_5_15 = callPackage ../os-specific/linux/kernel/linux-5.15.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_5_16 = callPackage ../os-specific/linux/kernel/linux-5.16.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_testing = let
+      testing = callPackage ../os-specific/linux/kernel/linux-testing.nix {
+        kernelPatches = [
+          kernelPatches.bridge_stp_helper
+          kernelPatches.request_key_helper
+        ];
+      };
+      latest = packageAliases.linux_latest.kernel;
+    in if latest.kernelAtLeast testing.baseVersion
+       then latest
+       else testing;
+
+    linux_testing_bcachefs = callPackage ../os-specific/linux/kernel/linux-testing-bcachefs.nix rec {
+      kernel = linux_5_15;
+      kernelPatches = kernel.kernelPatches;
+   };
+
+    linux_hardkernel_4_14 = callPackage ../os-specific/linux/kernel/linux-hardkernel-4.14.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+        kernelPatches.modinst_arg_list_too_long
+      ];
+    };
+
+    linux_zen = callPackage ../os-specific/linux/kernel/linux-zen.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_lqx = callPackage ../os-specific/linux/kernel/linux-lqx.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_xanmod = callPackage ../os-specific/linux/kernel/linux-xanmod.nix {
+      kernelPatches = [
+        kernelPatches.bridge_stp_helper
+        kernelPatches.request_key_helper
+      ];
+    };
+
+    linux_libre = deblobKernel packageAliases.linux_default.kernel;
+
+    linux_latest_libre = deblobKernel packageAliases.linux_latest.kernel;
+
+    linux_hardened = hardenedKernelFor packageAliases.linux_default.kernel { };
+
+    linux_4_14_hardened = hardenedKernelFor kernels.linux_4_14 { };
+    linux_4_19_hardened = hardenedKernelFor kernels.linux_4_19 { };
+    linux_5_4_hardened = hardenedKernelFor kernels.linux_5_4 { };
+    linux_5_10_hardened = hardenedKernelFor kernels.linux_5_10 { };
+    linux_5_15_hardened = hardenedKernelFor kernels.linux_5_15 { };
+
+  }));
+  /*  Linux kernel modules are inherently tied to a specific kernel.  So
+    rather than provide specific instances of those packages for a
+    specific kernel, we have a function that builds those packages
+    for a specific kernel.  This function can then be called for
+    whatever kernel you're using. */
+
+  packagesFor = kernel_: lib.makeExtensible (self: with self;
+    let callPackage = newScope self; in {
+    inherit callPackage;
+    kernel = kernel_;
+    inherit (kernel) stdenv; # in particular, use the same compiler by default
+
+    # to help determine module compatibility
+    inherit (kernel) isZen isHardened isLibre;
+    inherit (kernel) kernelOlder kernelAtLeast;
+    # Obsolete aliases (these packages do not depend on the kernel).
+    inherit (pkgs) odp-dpdk pktgen; # added 2018-05
+    inherit (pkgs) bcc bpftrace; # added 2021-12
+
+    acpi_call = callPackage ../os-specific/linux/acpi-call {};
+
+    akvcam = callPackage ../os-specific/linux/akvcam { };
+
+    amdgpu-pro = callPackage ../os-specific/linux/amdgpu-pro {
+      libffi = pkgs.libffi.overrideAttrs (orig: rec {
+        version = "3.3";
+        src = fetchurl {
+          url = "https://github.com/libffi/libffi/releases/download/v${version}/${orig.pname}-${version}.tar.gz";
+          sha256 = "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj";
+        };
+      });
+    };
+
+    anbox = callPackage ../os-specific/linux/anbox/kmod.nix { };
+
+    apfs = callPackage ../os-specific/linux/apfs { };
+
+    batman_adv = callPackage ../os-specific/linux/batman-adv {};
+
+    bbswitch = callPackage ../os-specific/linux/bbswitch {};
+
+    chipsec = callPackage ../tools/security/chipsec {
+      inherit kernel;
+      withDriver = true;
+    };
+
+    cryptodev = callPackage ../os-specific/linux/cryptodev { };
+
+    cpupower = callPackage ../os-specific/linux/cpupower { };
+
+    ddcci-driver = callPackage ../os-specific/linux/ddcci { };
+
+    dddvb = callPackage ../os-specific/linux/dddvb { };
+
+    digimend = callPackage ../os-specific/linux/digimend { };
+
+    dpdk-kmods = callPackage ../os-specific/linux/dpdk-kmods { };
+
+    dpdk = pkgs.dpdk.override { inherit kernel; };
+
+    exfat-nofuse = callPackage ../os-specific/linux/exfat { };
+
+    evdi = callPackage ../os-specific/linux/evdi { };
+
+    fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { };
+
+    gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { };
+    hid-nintendo = callPackage ../os-specific/linux/hid-nintendo { };
+
+    hyperv-daemons = callPackage ../os-specific/linux/hyperv-daemons { };
+
+    e1000e = if lib.versionOlder kernel.version "4.10" then  callPackage ../os-specific/linux/e1000e {} else null;
+
+    intel-speed-select = if lib.versionAtLeast kernel.version "5.3" then callPackage ../os-specific/linux/intel-speed-select { } else null;
+
+    ixgbevf = callPackage ../os-specific/linux/ixgbevf {};
+
+    it87 = callPackage ../os-specific/linux/it87 {};
+
+    asus-ec-sensors = callPackage ../os-specific/linux/asus-ec-sensors {};
+
+    asus-wmi-sensors = callPackage ../os-specific/linux/asus-wmi-sensors {};
+
+    ena = callPackage ../os-specific/linux/ena {};
+
+    liquidtux = callPackage ../os-specific/linux/liquidtux {};
+
+    v4l2loopback = callPackage ../os-specific/linux/v4l2loopback { };
+
+    lttng-modules = callPackage ../os-specific/linux/lttng-modules { };
+
+    broadcom_sta = callPackage ../os-specific/linux/broadcom-sta { };
+
+    tbs = callPackage ../os-specific/linux/tbs { };
+
+    mbp2018-bridge-drv = callPackage ../os-specific/linux/mbp-modules/mbp2018-bridge-drv { };
+
+    nvidiabl = callPackage ../os-specific/linux/nvidiabl { };
+
+    nvidiaPackages = dontRecurseIntoAttrs (lib.makeExtensible (_: callPackage ../os-specific/linux/nvidia-x11 { }));
+
+    nvidia_x11_legacy340   = nvidiaPackages.legacy_340;
+    nvidia_x11_legacy390   = nvidiaPackages.legacy_390;
+    nvidia_x11_legacy470   = nvidiaPackages.legacy_470;
+    nvidia_x11_beta        = nvidiaPackages.beta;
+    nvidia_x11_vulkan_beta = nvidiaPackages.vulkan_beta;
+    nvidia_x11             = nvidiaPackages.stable;
+
+    openrazer = callPackage ../os-specific/linux/openrazer/driver.nix { };
+
+    ply = callPackage ../os-specific/linux/ply { };
+
+    r8125 = callPackage ../os-specific/linux/r8125 { };
+
+    r8168 = callPackage ../os-specific/linux/r8168 { };
+
+    rtl8188eus-aircrack = callPackage ../os-specific/linux/rtl8188eus-aircrack { };
+
+    rtl8192eu = callPackage ../os-specific/linux/rtl8192eu { };
+
+    rtl8189es = callPackage ../os-specific/linux/rtl8189es { };
+
+    rtl8723bs = callPackage ../os-specific/linux/rtl8723bs { };
+
+    rtl8812au = callPackage ../os-specific/linux/rtl8812au { };
+
+    rtl8814au = callPackage ../os-specific/linux/rtl8814au { };
+
+    rtl88xxau-aircrack = callPackage ../os-specific/linux/rtl88xxau-aircrack {};
+
+    rtl8821au = callPackage ../os-specific/linux/rtl8821au { };
+
+    rtl8821ce = callPackage ../os-specific/linux/rtl8821ce { };
+
+    rtl88x2bu = callPackage ../os-specific/linux/rtl88x2bu { };
+
+    rtl8821cu = callPackage ../os-specific/linux/rtl8821cu { };
+
+    rtw88 = callPackage ../os-specific/linux/rtw88 { };
+    rtlwifi_new = rtw88;
+
+    rtw89 = if lib.versionOlder kernel.version "5.16" then callPackage ../os-specific/linux/rtw89 { } else null;
+
+    openafs_1_8 = callPackage ../servers/openafs/1.8/module.nix { };
+    openafs_1_9 = callPackage ../servers/openafs/1.9/module.nix { };
+    # Current stable release; don't backport release updates!
+    openafs = openafs_1_8;
+
+    facetimehd = callPackage ../os-specific/linux/facetimehd { };
+
+    tuxedo-keyboard = if lib.versionAtLeast kernel.version "4.14" then callPackage ../os-specific/linux/tuxedo-keyboard { } else null;
+
+    jool = callPackage ../os-specific/linux/jool { };
+
+    kvmfr = callPackage ../os-specific/linux/kvmfr { };
+
+    mba6x_bl = callPackage ../os-specific/linux/mba6x_bl { };
+
+    mwprocapture = callPackage ../os-specific/linux/mwprocapture { };
+
+    mxu11x0 = callPackage ../os-specific/linux/mxu11x0 { };
+
+    # compiles but has to be integrated into the kernel somehow
+    # Let's have it uncommented and finish it..
+    ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { };
+
+    netatop = callPackage ../os-specific/linux/netatop { };
+
+    oci-seccomp-bpf-hook = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/oci-seccomp-bpf-hook { } else null;
+
+    perf = if lib.versionAtLeast kernel.version "3.12" then callPackage ../os-specific/linux/kernel/perf.nix { } else null;
+
+    phc-intel = if lib.versionAtLeast kernel.version "4.10" then callPackage ../os-specific/linux/phc-intel { } else null;
+
+    # Disable for kernels 4.15 and above due to compatibility issues
+    prl-tools = if lib.versionOlder kernel.version "4.15" then callPackage ../os-specific/linux/prl-tools { } else null;
+
+    sch_cake = callPackage ../os-specific/linux/sch_cake { };
+
+    isgx = callPackage ../os-specific/linux/isgx { };
+
+    rr-zen_workaround = callPackage ../development/tools/analysis/rr/zen_workaround.nix { };
+
+    sysdig = callPackage ../os-specific/linux/sysdig {};
+
+    systemtap = callPackage ../development/tools/profiling/systemtap { };
+
+    system76 = callPackage ../os-specific/linux/system76 { };
+
+    system76-acpi = callPackage ../os-specific/linux/system76-acpi { };
+
+    system76-power = callPackage ../os-specific/linux/system76-power { };
+
+    system76-io = callPackage ../os-specific/linux/system76-io { };
+
+    tmon = callPackage ../os-specific/linux/tmon { };
+
+    tp_smapi = callPackage ../os-specific/linux/tp_smapi { };
+
+    turbostat = callPackage ../os-specific/linux/turbostat { };
+
+    usbip = callPackage ../os-specific/linux/usbip { };
+
+    v86d = callPackage ../os-specific/linux/v86d { };
+
+    veikk-linux-driver = callPackage ../os-specific/linux/veikk-linux-driver { };
+    vendor-reset = callPackage ../os-specific/linux/vendor-reset { };
+
+    vhba = callPackage ../applications/emulators/cdemu/vhba.nix { };
+
+    virtio_vmmci  = callPackage ../os-specific/linux/virtio_vmmci { };
+
+    virtualbox = callPackage ../os-specific/linux/virtualbox {
+      virtualbox = pkgs.virtualboxHardened;
+    };
+
+    virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions {
+      virtualbox = pkgs.virtualboxHardened;
+    };
+
+    vm-tools = callPackage ../os-specific/linux/vm-tools { };
+
+    vmm_clock = callPackage ../os-specific/linux/vmm_clock { };
+
+    wireguard = if lib.versionOlder kernel.version "5.6" then callPackage ../os-specific/linux/wireguard { } else null;
+
+    x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { };
+
+    xmm7360-pci = callPackage ../os-specific/linux/xmm7360-pci { };
+
+    xone = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/xone { } else null;
+
+    xpadneo = callPackage ../os-specific/linux/xpadneo { };
+
+    zenpower = callPackage ../os-specific/linux/zenpower { };
+
+    inherit (callPackage ../os-specific/linux/zfs {
+        configFile = "kernel";
+        inherit pkgs kernel;
+      }) zfsStable zfsUnstable;
+    zfs = zfsStable;
+
+    can-isotp = callPackage ../os-specific/linux/can-isotp { };
+
+  } // lib.optionalAttrs (config.allowAliases or false) {
+    ati_drivers_x11 = throw "ati drivers are no longer supported by any kernel >=4.1"; # added 2021-05-18;
+  });
+
+  hardenedPackagesFor = kernel: overrides: packagesFor (hardenedKernelFor kernel overrides);
+
+  vanillaPackages = {
+    # recurse to build modules for the kernels
+    linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream"; # Added 2022-02-11
+    linux_4_9 = recurseIntoAttrs (packagesFor kernels.linux_4_9);
+    linux_4_14 = recurseIntoAttrs (packagesFor kernels.linux_4_14);
+    linux_4_19 = recurseIntoAttrs (packagesFor kernels.linux_4_19);
+    linux_5_4 = recurseIntoAttrs (packagesFor kernels.linux_5_4);
+    linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10);
+    linux_5_15 = recurseIntoAttrs (packagesFor kernels.linux_5_15);
+    linux_5_16 = recurseIntoAttrs (packagesFor kernels.linux_5_16);
+  };
+
+  rtPackages = {
+     # realtime kernel packages
+     linux_rt_5_4 = packagesFor kernels.linux_rt_5_4;
+     linux_rt_5_10 = packagesFor kernels.linux_rt_5_10;
+  };
+
+  rpiPackages = {
+    linux_rpi1 = packagesFor kernels.linux_rpi1;
+    linux_rpi2 = packagesFor kernels.linux_rpi2;
+    linux_rpi3 = packagesFor kernels.linux_rpi3;
+    linux_rpi4 = packagesFor kernels.linux_rpi4;
+  };
+
+  packages = recurseIntoAttrs (vanillaPackages // rtPackages // rpiPackages // {
+    linux_mptcp_95 = packagesFor kernels.linux_mptcp_95;
+
+    # Intentionally lacks recurseIntoAttrs, as -rc kernels will quite likely break out-of-tree modules and cause failed Hydra builds.
+    linux_testing = packagesFor kernels.linux_testing;
+    linux_testing_bcachefs = recurseIntoAttrs (packagesFor kernels.linux_testing_bcachefs);
+
+    linux_hardened = recurseIntoAttrs (hardenedPackagesFor packageAliases.linux_default.kernel { });
+
+    linux_4_14_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_4_14 { });
+    linux_4_19_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_4_19 { });
+    linux_5_4_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_4 { });
+    linux_5_10_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_10 { });
+    linux_5_15_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_15 { });
+
+    linux_zen = recurseIntoAttrs (packagesFor kernels.linux_zen);
+    linux_lqx = recurseIntoAttrs (packagesFor kernels.linux_lqx);
+    linux_xanmod = recurseIntoAttrs (packagesFor kernels.linux_xanmod);
+
+    hardkernel_4_14 = recurseIntoAttrs (packagesFor kernels.linux_hardkernel_4_14);
+
+    linux_libre = recurseIntoAttrs (packagesFor kernels.linux_libre);
+
+    linux_latest_libre = recurseIntoAttrs (packagesFor kernels.linux_latest_libre);
+  });
+
+  packageAliases = {
+    linux_default = if stdenv.hostPlatform.isi686 then packages.linux_5_10 else packages.linux_5_15;
+    # Update this when adding the newest kernel major version!
+    linux_latest = packages.linux_5_16;
+    linux_mptcp = packages.linux_mptcp_95;
+    linux_rt_default = packages.linux_rt_5_4;
+    linux_rt_latest = packages.linux_rt_5_10;
+    linux_hardkernel_latest = packages.hardkernel_4_14;
+  };
+
+  manualConfig = makeOverridable (callPackage ../os-specific/linux/kernel/manual-config.nix {});
+
+  customPackage = { version, src, configfile, allowImportFromDerivation ? true }:
+    recurseIntoAttrs (packagesFor (manualConfig {
+      inherit version src configfile lib stdenv allowImportFromDerivation;
+    }));
+
+  # Derive one of the default .config files
+  linuxConfig = {
+    src,
+    version ? (builtins.parseDrvName src.name).version,
+    makeTarget ? "defconfig",
+    name ? "kernel.config",
+  }: stdenvNoCC.mkDerivation {
+    inherit name src;
+    depsBuildBuild = [ buildPackages.stdenv.cc ]
+      ++ lib.optionals (lib.versionAtLeast version "4.16") [ buildPackages.bison buildPackages.flex ];
+    postPatch = ''
+      patchShebangs scripts/
+    '';
+    buildPhase = ''
+      set -x
+      make \
+        ARCH=${stdenv.hostPlatform.linuxArch} \
+        HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc \
+        ${makeTarget}
+    '';
+    installPhase = ''
+      cp .config $out
+    '';
+  };
+
+  buildLinux = attrs: callPackage ../os-specific/linux/kernel/generic.nix attrs;
+
+}
diff --git a/nixpkgs/pkgs/top-level/lua-packages.nix b/nixpkgs/pkgs/top-level/lua-packages.nix
new file mode 100644
index 000000000000..efaf06d30a22
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/lua-packages.nix
@@ -0,0 +1,139 @@
+/* This file defines the composition for Lua packages.  It has
+   been factored out of all-packages.nix because there are many of
+   them.  Also, because most Nix expressions for Lua packages are
+   trivial, most are actually defined here.  I.e. there's no function
+   for each package in a separate file: the call to the function would
+   be almost as must code as the function itself. */
+
+{ fetchurl, stdenv, lua, unzip, pkg-config
+, pcre, oniguruma, gnulib, tre, glibc, sqlite, openssl, expat
+, autoreconfHook, gnum4
+, postgresql, cyrus_sasl
+, fetchFromGitHub, which, writeText
+, pkgs
+, lib
+}@args:
+
+let
+  packages = ( self:
+
+let
+  callPackage = pkgs.newScope self;
+
+  buildLuaApplication = args: buildLuarocksPackage ({namePrefix="";} // args );
+
+  buildLuarocksPackage = lib.makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix {
+    inherit lua;
+    inherit (pkgs) lib;
+    inherit (luaLib) toLuaModule;
+  });
+
+  luaLib = import ../development/lua-modules/lib.nix {
+    inherit (pkgs) lib;
+    inherit pkgs lua;
+  };
+
+  #define build lua package function
+  buildLuaPackage = callPackage ../development/lua-modules/generic {
+    inherit writeText;
+  };
+
+  getPath = drv: pathListForVersion:
+    lib.concatMapStringsSep ";" (path: "${drv}/${path}") pathListForVersion;
+
+in
+{
+  # helper functions for dealing with LUA_PATH and LUA_CPATH
+  lib = luaLib;
+
+  getLuaPath = drv: getPath drv luaLib.luaPathList;
+  getLuaCPath = drv: getPath drv luaLib.luaCPathList;
+
+  inherit (callPackage ../development/interpreters/lua-5/hooks { inherit (args) lib;})
+    lua-setup-hook;
+
+  inherit lua callPackage;
+  inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
+  inherit (luaLib) luaOlder luaAtLeast isLua51 isLua52 isLua53 isLuaJIT
+    requiredLuaModules toLuaModule hasLuaModule;
+
+  # wraps programs in $out/bin with valid LUA_PATH/LUA_CPATH
+  wrapLua = callPackage ../development/interpreters/lua-5/wrap-lua.nix {
+    inherit lua lib;
+    inherit (pkgs) makeSetupHook makeWrapper;
+  };
+
+  luarocks = callPackage ../development/tools/misc/luarocks {
+    inherit lua lib;
+  };
+
+  luarocks-3_7 = callPackage ../development/tools/misc/luarocks/3.7.nix {
+    inherit lua lib;
+  };
+
+  # a fork of luarocks used to generate nix lua derivations from rockspecs
+  luarocks-nix = callPackage ../development/tools/misc/luarocks/luarocks-nix.nix { };
+
+  luxio = buildLuaPackage {
+    pname = "luxio";
+    version = "13";
+
+    src = fetchurl {
+      url = "https://git.gitano.org.uk/luxio.git/snapshot/luxio-luxio-13.tar.bz2";
+      sha256 = "1hvwslc25q7k82rxk461zr1a2041nxg7sn3sw3w0y5jxf0giz2pz";
+    };
+
+    nativeBuildInputs = [ which pkg-config ];
+
+    postPatch = ''
+      patchShebangs .
+    '';
+
+    preBuild = ''
+      makeFlagsArray=(
+        INST_LIBDIR="$out/lib/lua/${lua.luaversion}"
+        INST_LUADIR="$out/share/lua/${lua.luaversion}"
+        LUA_BINDIR="$out/bin"
+        INSTALL=install
+        );
+    '';
+
+    meta = with lib; {
+      description = "Lightweight UNIX I/O and POSIX binding for Lua";
+      homepage = "https://www.gitano.org.uk/luxio/";
+      license = licenses.mit;
+      maintainers = with maintainers; [ richardipsum ];
+      platforms = platforms.unix;
+    };
+  };
+
+  vicious = luaLib.toLuaModule( stdenv.mkDerivation rec {
+    pname = "vicious";
+    version = "2.5.0";
+
+    src = fetchFromGitHub {
+      owner = "Mic92";
+      repo = "vicious";
+      rev = "v${version}";
+      sha256 = "0lb90334mz0my8ydsmnsnkki0xr58kinsg0hf9d6k4b0vjfi0r0a";
+    };
+
+    buildInputs = [ lua ];
+
+    installPhase = ''
+      mkdir -p $out/lib/lua/${lua.luaversion}/
+      cp -r . $out/lib/lua/${lua.luaversion}/vicious/
+      printf "package.path = '$out/lib/lua/${lua.luaversion}/?/init.lua;' ..  package.path\nreturn require((...) .. '.init')\n" > $out/lib/lua/${lua.luaversion}/vicious.lua
+    '';
+
+    meta = with lib; {
+      description = "A modular widget library for the awesome window manager";
+      homepage    = "https://github.com/Mic92/vicious";
+      license     = licenses.gpl2;
+      maintainers = with maintainers; [ makefu mic92 ];
+      platforms   = platforms.linux;
+    };
+  });
+
+});
+in packages
diff --git a/nixpkgs/pkgs/top-level/make-tarball.nix b/nixpkgs/pkgs/top-level/make-tarball.nix
new file mode 100644
index 000000000000..a63432236471
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/make-tarball.nix
@@ -0,0 +1,86 @@
+/* Hydra job to build a tarball for Nixpkgs from a Git checkout.  It
+   also builds the documentation and tests whether the Nix expressions
+   evaluate correctly. */
+
+{ nixpkgs
+, officialRelease
+, supportedSystems
+, pkgs ? import nixpkgs.outPath {}
+, nix ? pkgs.nix
+, lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }
+}:
+
+pkgs.releaseTools.sourceTarball {
+  name = "nixpkgs-tarball";
+  src = nixpkgs;
+
+  inherit officialRelease;
+  version = pkgs.lib.fileContents ../../.version;
+  versionSuffix = "pre${
+    if nixpkgs ? lastModified
+    then builtins.substring 0 8 (nixpkgs.lastModifiedDate or nixpkgs.lastModified)
+    else toString nixpkgs.revCount}.${nixpkgs.shortRev or "dirty"}";
+
+  buildInputs = with pkgs; [ nix.out jq lib-tests brotli ];
+
+  configurePhase = ''
+    eval "$preConfigure"
+    releaseName=nixpkgs-$VERSION$VERSION_SUFFIX
+    echo -n $VERSION_SUFFIX > .version-suffix
+    echo -n ${nixpkgs.rev or nixpkgs.shortRev or "dirty"} > .git-revision
+    echo "release name is $releaseName"
+    echo "git-revision is $(cat .git-revision)"
+  '';
+
+  nixpkgs-basic-release-checks = import ./nixpkgs-basic-release-checks.nix
+   { inherit nix pkgs nixpkgs supportedSystems; };
+
+  dontBuild = false;
+
+  doCheck = true;
+
+  checkPhase = ''
+    set -o pipefail
+
+    export NIX_STATE_DIR=$TMPDIR
+    export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
+    opts=(--option build-users-group "")
+    nix-store --init
+
+    header "checking eval-release.nix"
+    nix-instantiate --eval --strict --show-trace ./maintainers/scripts/eval-release.nix > /dev/null
+
+    header "checking find-tarballs.nix"
+    nix-instantiate --readonly-mode --eval --strict --show-trace --json \
+       ./maintainers/scripts/find-tarballs.nix \
+      --arg expr 'import ./maintainers/scripts/all-tarballs.nix' > $TMPDIR/tarballs.json
+    nrUrls=$(jq -r '.[].url' < $TMPDIR/tarballs.json | wc -l)
+    echo "found $nrUrls URLs"
+    if [ "$nrUrls" -lt 10000 ]; then
+      echo "suspiciously low number of URLs"
+      exit 1
+    fi
+
+    header "generating packages.json"
+    mkdir -p $out/nix-support
+    echo -n '{"version":2,"packages":' > tmp
+    nix-env -f . -I nixpkgs=$src -qa --meta --json --arg config 'import ${./packages-config.nix}' "''${opts[@]}" >> tmp
+    echo -n '}' >> tmp
+    packages=$out/packages.json.br
+    < tmp sed "s|$(pwd)/||g" | jq -c | brotli -9 > $packages
+    rm tmp
+
+    echo "file json-br $packages" >> $out/nix-support/hydra-build-products
+  '';
+
+  distPhase = ''
+    mkdir -p $out/tarballs
+    mkdir ../$releaseName
+    cp -prd . ../$releaseName
+    (cd .. && tar cfa $out/tarballs/$releaseName.tar.xz $releaseName) || false
+  '';
+
+  meta = {
+    maintainers = [ pkgs.lib.maintainers.all ];
+  };
+}
diff --git a/nixpkgs/pkgs/top-level/metrics.nix b/nixpkgs/pkgs/top-level/metrics.nix
new file mode 100644
index 000000000000..d413b881eaa7
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/metrics.nix
@@ -0,0 +1,78 @@
+{ nixpkgs, pkgs }:
+
+with pkgs;
+
+runCommand "nixpkgs-metrics"
+  { nativeBuildInputs = with pkgs.lib; map getBin [ nix time jq ];
+    requiredSystemFeatures = [ "benchmark" ]; # dedicated `t2a` machine, by @vcunat
+  }
+  ''
+    export NIX_STORE_DIR=$TMPDIR/store
+    export NIX_STATE_DIR=$TMPDIR/state
+    export NIX_PAGER=
+    nix-store --init
+
+    mkdir -p $out/nix-support
+    touch $out/nix-support/hydra-build-products
+
+    run() {
+      local name="$1"
+      shift
+
+      echo "running $@"
+
+      case "$name" in
+        # Redirect stdout to /dev/null to avoid hitting "Output Limit
+        # Exceeded" on Hydra.
+        nix-env.qaDrv|nix-env.qaDrvAggressive)
+          NIX_SHOW_STATS=1 NIX_SHOW_STATS_PATH=stats-nix time -o stats-time "$@" >/dev/null ;;
+        *)
+          NIX_SHOW_STATS=1 NIX_SHOW_STATS_PATH=stats-nix time -o stats-time "$@" ;;
+      esac
+
+      cat stats-nix; echo; cat stats-time; echo
+
+      x=$(jq '.cpuTime' < stats-nix)
+      [[ -n $x ]] || exit 1
+      echo "$name.time $x s" >> $out/nix-support/hydra-metrics
+
+      x=$(sed -e 's/.* \([0-9]\+\)maxresident.*/\1/ ; t ; d' < stats-time)
+      [[ -n $x ]] || exit 1
+      echo "$name.maxresident $x KiB" >> $out/nix-support/hydra-metrics
+
+      # nix-2.2 also outputs .symbols.bytes but that wasn't summed originally
+      # https://github.com/NixOS/nix/pull/2392/files#diff-8e6ba8c21672fc1a5f6f606e1e101c74L1762
+      x=$(jq '[.envs,.list,.values,.sets] | map(.bytes) | add' < stats-nix)
+      [[ -n $x ]] || exit 1
+      echo "$name.allocations $x B" >> $out/nix-support/hydra-metrics
+
+      x=$(jq '.values.number' < stats-nix)
+      [[ -n $x ]] || exit 1
+      echo "$name.values $x" >> $out/nix-support/hydra-metrics
+    }
+
+    run nixos.smallContainer nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
+      -A closures.smallContainer.x86_64-linux --show-trace
+    run nixos.kde nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
+      -A closures.kde.x86_64-linux --show-trace
+    run nixos.lapp nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
+      -A closures.lapp.x86_64-linux --show-trace
+    run nix-env.qa nix-env -f ${nixpkgs} -qa
+    run nix-env.qaDrv nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
+
+    # It's slightly unclear which of the set to track: qaCount, qaCountDrv, qaCountBroken.
+    num=$(nix-env -f ${nixpkgs} -qa | wc -l)
+    echo "nix-env.qaCount $num" >> $out/nix-support/hydra-metrics
+    qaCountDrv=$(nix-env -f ${nixpkgs} -qa --drv-path | wc -l)
+    num=$((num - $qaCountDrv))
+    echo "nix-env.qaCountBroken $num" >> $out/nix-support/hydra-metrics
+
+    # TODO: this has been ignored for some time
+    # GC Warning: Bad initial heap size 128k - ignoring it.
+    #export GC_INITIAL_HEAP_SIZE=128k
+    run nix-env.qaAggressive nix-env -f ${nixpkgs} -qa
+    run nix-env.qaDrvAggressive nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
+
+    lines=$(find ${nixpkgs} -name "*.nix" -type f | xargs cat | wc -l)
+    echo "loc $lines" >> $out/nix-support/hydra-metrics
+  ''
diff --git a/nixpkgs/pkgs/top-level/nim-packages.nix b/nixpkgs/pkgs/top-level/nim-packages.nix
new file mode 100644
index 000000000000..e808ebef8540
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/nim-packages.nix
@@ -0,0 +1,92 @@
+{ lib, pkgs, stdenv, newScope, nim, fetchFromGitHub }:
+
+lib.makeScope newScope (self:
+  let callPackage = self.callPackage;
+  in {
+    inherit nim;
+    nim_builder = callPackage ../development/nim-packages/nim_builder { };
+    buildNimPackage =
+      callPackage ../development/nim-packages/build-nim-package { };
+    fetchNimble = callPackage ../development/nim-packages/fetch-nimble { };
+
+    astpatternmatching =
+      callPackage ../development/nim-packages/astpatternmatching { };
+
+    bumpy = callPackage ../development/nim-packages/bumpy { };
+
+    chroma = callPackage ../development/nim-packages/chroma { };
+
+    c2nim = callPackage ../development/nim-packages/c2nim { };
+
+    docopt = callPackage ../development/nim-packages/docopt { };
+
+    flatty = callPackage ../development/nim-packages/flatty { };
+
+    frosty = callPackage ../development/nim-packages/frosty { };
+
+    hts-nim = callPackage ../development/nim-packages/hts-nim { };
+
+    jester = callPackage ../development/nim-packages/jester { };
+
+    jsonschema = callPackage ../development/nim-packages/jsonschema { };
+
+    jsony = callPackage ../development/nim-packages/jsony { };
+
+    karax = callPackage ../development/nim-packages/karax { };
+
+    lscolors = callPackage ../development/nim-packages/lscolors { };
+
+    markdown = callPackage ../development/nim-packages/markdown { };
+
+    nimcrypto = callPackage ../development/nim-packages/nimcrypto { };
+
+    nimbox = callPackage ../development/nim-packages/nimbox { };
+
+    nimsimd = callPackage ../development/nim-packages/nimsimd { };
+
+    noise = callPackage ../development/nim-packages/noise { };
+
+    packedjson = callPackage ../development/nim-packages/packedjson { };
+
+    pixie = callPackage ../development/nim-packages/pixie { };
+
+    redis = callPackage ../development/nim-packages/redis { };
+
+    redpool = callPackage ../development/nim-packages/redpool { };
+
+    regex = callPackage ../development/nim-packages/regex { };
+
+    rocksdb = callPackage ../development/nim-packages/rocksdb {
+      inherit (pkgs) rocksdb;
+    };
+
+    sass = callPackage ../development/nim-packages/sass { };
+
+    sdl2 = callPackage ../development/nim-packages/sdl2 { };
+
+    segmentation = callPackage ../development/nim-packages/segmentation { };
+
+    snappy =
+      callPackage ../development/nim-packages/snappy { inherit (pkgs) snappy; };
+
+    spry = callPackage ../development/nim-packages/spry { };
+
+    spryvm = callPackage ../development/nim-packages/spryvm { };
+
+    stew = callPackage ../development/nim-packages/stew { };
+
+    supersnappy = callPackage ../development/nim-packages/supersnappy { };
+
+    tempfile = callPackage ../development/nim-packages/tempfile { };
+
+    ui = callPackage ../development/nim-packages/ui { inherit (pkgs) libui; };
+
+    unicodedb = callPackage ../development/nim-packages/unicodedb { };
+
+    unicodeplus = callPackage ../development/nim-packages/unicodeplus { };
+
+    vmath = callPackage ../development/nim-packages/vmath { };
+
+    zippy = callPackage ../development/nim-packages/zippy { };
+
+  })
diff --git a/nixpkgs/pkgs/top-level/nixpkgs-basic-release-checks.nix b/nixpkgs/pkgs/top-level/nixpkgs-basic-release-checks.nix
new file mode 100644
index 000000000000..28f8cf332977
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/nixpkgs-basic-release-checks.nix
@@ -0,0 +1,84 @@
+{ supportedSystems, nixpkgs, pkgs, nix }:
+
+pkgs.runCommand "nixpkgs-release-checks" { src = nixpkgs; buildInputs = [nix]; } ''
+    set -o pipefail
+
+    export NIX_STORE_DIR=$TMPDIR/store
+    export NIX_STATE_DIR=$TMPDIR/state
+    export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
+    opts=(--option build-users-group "")
+    nix-store --init
+
+    echo 'abort "Illegal use of <nixpkgs> in Nixpkgs."' > $TMPDIR/barf.nix
+
+    # Make sure that Nixpkgs does not use <nixpkgs>.
+    badFiles=$(find $src/pkgs -type f -name '*.nix' -print | xargs grep -l '^[^#]*<nixpkgs\/' || true)
+    if [[ -n $badFiles ]]; then
+        echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
+        echo "The offending files: $badFiles"
+        exit 1
+    fi
+
+    src2=$TMPDIR/foo
+    cp -rd $src $src2
+
+    # Check that all-packages.nix evaluates on a number of platforms without any warnings.
+    for platform in ${pkgs.lib.concatStringsSep " " supportedSystems}; do
+        header "checking Nixpkgs on $platform"
+
+        # To get a call trace; see https://nixos.org/manual/nixpkgs/stable/#function-library-lib.trivial.warn
+        # Relies on impure eval
+        export NIX_ABORT_ON_WARN=true
+
+        set +e
+        (
+          set -x
+          nix-env -f $src \
+              --show-trace --argstr system "$platform" \
+              --arg config '{ allowAliases = false; }' \
+              --option experimental-features 'no-url-literals' \
+              -qa --drv-path --system-filter \* --system \
+              "''${opts[@]}" 2> eval-warnings.log > packages1
+        )
+        rc=$?
+        set -e
+        if [ "$rc" != "0" ]; then
+          cat eval-warnings.log
+          exit $rc
+        fi
+
+        s1=$(sha1sum packages1 | cut -c1-40)
+        echo $s1
+
+        nix-env -f $src2 \
+            --show-trace --argstr system "$platform" \
+            --arg config '{ allowAliases = false; }' \
+            --option experimental-features 'no-url-literals' \
+            -qa --drv-path --system-filter \* --system \
+            "''${opts[@]}" > packages2
+
+        s2=$(sha1sum packages2 | cut -c1-40)
+
+        if [[ $s1 != $s2 ]]; then
+            echo "Nixpkgs evaluation depends on Nixpkgs path"
+            diff packages1 packages2
+            exit 1
+        fi
+
+        # Catch any trace calls not caught by NIX_ABORT_ON_WARN (lib.warn)
+        if [ -s eval-warnings.log ]; then
+            echo "Nixpkgs on $platform evaluated with warnings, aborting"
+            exit 1
+        fi
+        rm eval-warnings.log
+
+        nix-env -f $src \
+            --show-trace --argstr system "$platform" \
+            --arg config '{ allowAliases = false; }' \
+            --option experimental-features 'no-url-literals' \
+            -qa --drv-path --system-filter \* --system --meta --xml \
+            "''${opts[@]}" > /dev/null
+    done
+
+    touch $out
+''
diff --git a/nixpkgs/pkgs/top-level/ocaml-packages.nix b/nixpkgs/pkgs/top-level/ocaml-packages.nix
new file mode 100644
index 000000000000..cc126dc320de
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/ocaml-packages.nix
@@ -0,0 +1,1588 @@
+{ lib, newScope, pkgs, config }:
+
+let
+  liftJaneStreet = self: super: super.janeStreet // super;
+
+  mkOcamlPackages = ocaml:
+    (lib.makeScope newScope (self: with self;
+  {
+    inherit ocaml;
+
+    # Libs
+
+    buildOcaml = callPackage ../build-support/ocaml { };
+
+    buildOasisPackage = callPackage ../build-support/ocaml/oasis.nix { };
+
+    buildDunePackage = callPackage ../build-support/ocaml/dune.nix {};
+
+    afl-persistent = callPackage ../development/ocaml-modules/afl-persistent { };
+
+    alcotest = callPackage ../development/ocaml-modules/alcotest {};
+
+    alcotest-lwt = callPackage ../development/ocaml-modules/alcotest/lwt.nix {};
+
+    alcotest-mirage = callPackage ../development/ocaml-modules/alcotest/mirage.nix {};
+
+    angstrom = callPackage ../development/ocaml-modules/angstrom { };
+
+    angstrom-async = callPackage ../development/ocaml-modules/angstrom-async { };
+
+    angstrom-lwt-unix = callPackage ../development/ocaml-modules/angstrom-lwt-unix { };
+
+    angstrom-unix = callPackage ../development/ocaml-modules/angstrom-unix { };
+
+    ansiterminal = callPackage ../development/ocaml-modules/ansiterminal { };
+
+    apron = callPackage ../development/ocaml-modules/apron { };
+
+    arp = callPackage ../development/ocaml-modules/arp { };
+
+    asn1-combinators = callPackage ../development/ocaml-modules/asn1-combinators { };
+
+    astring = callPackage ../development/ocaml-modules/astring { };
+
+    atd = callPackage ../development/ocaml-modules/atd { };
+
+    atdgen = callPackage ../development/ocaml-modules/atdgen { };
+
+    awa = callPackage ../development/ocaml-modules/awa { };
+
+    awa-lwt = callPackage ../development/ocaml-modules/awa/lwt.nix { };
+
+    awa-mirage = callPackage ../development/ocaml-modules/awa/mirage.nix { };
+
+    base64 = callPackage ../development/ocaml-modules/base64 { };
+
+    bap = callPackage ../development/ocaml-modules/bap {
+      inherit (pkgs.llvmPackages_8) llvm;
+    };
+
+    batteries = callPackage ../development/ocaml-modules/batteries { };
+
+    bheap = callPackage ../development/ocaml-modules/bheap { };
+
+    bigarray-compat = callPackage ../development/ocaml-modules/bigarray-compat { };
+
+    bigarray-overlap = callPackage ../development/ocaml-modules/bigarray-overlap { };
+
+    bigstringaf = callPackage ../development/ocaml-modules/bigstringaf { };
+
+    bigstring = callPackage ../development/ocaml-modules/bigstring { };
+
+    biocaml = callPackage ../development/ocaml-modules/biocaml { };
+
+    bistro = callPackage ../development/ocaml-modules/bistro { };
+
+    bitstring = callPackage ../development/ocaml-modules/bitstring { };
+
+    bitv = callPackage ../development/ocaml-modules/bitv { };
+
+    bls12-381 = callPackage ../development/ocaml-modules/bls12-381 { };
+    bls12-381-gen = callPackage ../development/ocaml-modules/bls12-381/gen.nix { };
+    bls12-381-unix = callPackage ../development/ocaml-modules/bls12-381/unix.nix { };
+    bls12-381-legacy = callPackage ../development/ocaml-modules/bls12-381/legacy.nix { };
+
+    bolt = callPackage ../development/ocaml-modules/bolt { };
+
+    bos = callPackage ../development/ocaml-modules/bos { };
+
+    bz2 = callPackage ../development/ocaml-modules/bz2 { };
+
+    ca-certs = callPackage ../development/ocaml-modules/ca-certs { };
+
+    ca-certs-nss = callPackage ../development/ocaml-modules/ca-certs-nss { };
+
+    carton = callPackage ../development/ocaml-modules/carton { };
+
+    carton-git = callPackage ../development/ocaml-modules/carton/git.nix { };
+
+    carton-lwt = callPackage ../development/ocaml-modules/carton/lwt.nix {
+      git-binary = pkgs.git;
+    };
+
+    camlidl = callPackage ../development/tools/ocaml/camlidl { };
+
+    camlp4 =
+      if lib.versionOlder "4.02" ocaml.version
+      then callPackage ../development/tools/ocaml/camlp4 { }
+      else null;
+
+    camlp5 = callPackage ../development/tools/ocaml/camlp5 { };
+
+    # Compatibility alias
+    camlp5_strict = camlp5;
+
+    camlpdf = callPackage ../development/ocaml-modules/camlpdf { };
+
+    calendar = callPackage ../development/ocaml-modules/calendar { };
+
+    camlzip = callPackage ../development/ocaml-modules/camlzip { };
+
+    camomile_0_8_2 = callPackage ../development/ocaml-modules/camomile/0.8.2.nix { };
+    camomile =
+      if lib.versionOlder "4.02" ocaml.version
+      then callPackage ../development/ocaml-modules/camomile { }
+      else callPackage ../development/ocaml-modules/camomile/0.8.5.nix { };
+
+    camlimages_4_2_4 = callPackage ../development/ocaml-modules/camlimages/4.2.4.nix { };
+
+    camlimages = callPackage ../development/ocaml-modules/camlimages { };
+
+    benchmark = callPackage ../development/ocaml-modules/benchmark { };
+
+    biniou =
+      if lib.versionOlder "4.02" ocaml.version
+      then callPackage ../development/ocaml-modules/biniou { }
+      else callPackage ../development/ocaml-modules/biniou/1.0.nix { };
+
+    bisect_ppx = callPackage ../development/ocaml-modules/bisect_ppx { };
+
+    ocaml_cairo = callPackage ../development/ocaml-modules/ocaml-cairo { };
+
+    cairo2 = callPackage ../development/ocaml-modules/cairo2 {
+      inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices;
+    };
+
+    callipyge = callPackage ../development/ocaml-modules/callipyge { };
+
+    caqti = callPackage ../development/ocaml-modules/caqti { };
+
+    caqti-async = callPackage ../development/ocaml-modules/caqti/async.nix { };
+
+    caqti-driver-mariadb = callPackage ../development/ocaml-modules/caqti/driver-mariadb.nix { };
+
+    caqti-driver-postgresql = callPackage ../development/ocaml-modules/caqti/driver-postgresql.nix { };
+
+    caqti-driver-sqlite3 = callPackage ../development/ocaml-modules/caqti/driver-sqlite3.nix { };
+
+    caqti-dynload = callPackage ../development/ocaml-modules/caqti/dynload.nix { };
+
+    caqti-lwt = callPackage ../development/ocaml-modules/caqti/lwt.nix { };
+
+    caqti-type-calendar = callPackage ../development/ocaml-modules/caqti/type-calendar.nix { };
+
+    cfstream = callPackage ../development/ocaml-modules/cfstream { };
+
+    chacha = callPackage ../development/ocaml-modules/chacha { };
+
+    charInfo_width = callPackage ../development/ocaml-modules/charInfo_width { };
+
+    checkseum = callPackage ../development/ocaml-modules/checkseum { };
+
+    cil = callPackage ../development/ocaml-modules/cil { };
+
+    cmdliner = callPackage ../development/ocaml-modules/cmdliner { };
+
+    cohttp = callPackage ../development/ocaml-modules/cohttp { };
+
+    cohttp-async = callPackage ../development/ocaml-modules/cohttp/async.nix { };
+
+    cohttp-lwt = callPackage ../development/ocaml-modules/cohttp/lwt.nix { };
+
+    cohttp-lwt-unix = callPackage ../development/ocaml-modules/cohttp/lwt-unix.nix { };
+
+    cohttp-mirage = callPackage ../development/ocaml-modules/cohttp/mirage.nix { };
+
+    color = callPackage ../development/ocaml-modules/color { };
+
+    conduit = callPackage ../development/ocaml-modules/conduit { };
+
+    conduit-async = callPackage ../development/ocaml-modules/conduit/async.nix { };
+
+    conduit-lwt = callPackage ../development/ocaml-modules/conduit/lwt.nix { };
+
+    conduit-lwt-unix = callPackage ../development/ocaml-modules/conduit/lwt-unix.nix { };
+
+    conduit-mirage = callPackage ../development/ocaml-modules/conduit/mirage.nix { };
+
+    coin =  callPackage ../development/ocaml-modules/coin { };
+
+    config-file = callPackage ../development/ocaml-modules/config-file { };
+
+    containers = callPackage ../development/ocaml-modules/containers { };
+
+    containers-data = callPackage ../development/ocaml-modules/containers/data.nix { };
+
+    cooltt = callPackage ../development/ocaml-modules/cooltt { };
+
+    cow = callPackage ../development/ocaml-modules/cow { };
+
+    cpdf = callPackage ../development/ocaml-modules/cpdf { };
+
+    cppo = callPackage ../development/tools/ocaml/cppo { };
+
+    cppo_ocamlbuild = callPackage ../development/tools/ocaml/cppo/ocamlbuild.nix { };
+
+    cpu = callPackage ../development/ocaml-modules/cpu { };
+
+    cpuid = callPackage ../development/ocaml-modules/cpuid { };
+
+    crowbar = callPackage ../development/ocaml-modules/crowbar { };
+
+    crunch = callPackage ../development/tools/ocaml/crunch { };
+
+    cryptokit = callPackage ../development/ocaml-modules/cryptokit { };
+
+    csexp = callPackage ../development/ocaml-modules/csexp { };
+
+    cstruct = callPackage ../development/ocaml-modules/cstruct {};
+
+    cstruct-async = callPackage ../development/ocaml-modules/cstruct/async.nix { };
+
+    cstruct-lwt = callPackage ../development/ocaml-modules/cstruct/lwt.nix { };
+
+    cstruct-sexp = callPackage ../development/ocaml-modules/cstruct/sexp.nix {};
+
+    cstruct-unix = callPackage ../development/ocaml-modules/cstruct/unix.nix {};
+
+    csv =
+      if lib.versionAtLeast ocaml.version "4.2"
+      then callPackage ../development/ocaml-modules/csv { }
+      else callPackage ../development/ocaml-modules/csv/1.5.nix { };
+
+    csv-lwt = callPackage ../development/ocaml-modules/csv/lwt.nix { };
+
+    cudf = callPackage ../development/ocaml-modules/cudf { };
+
+    curly = callPackage ../development/ocaml-modules/curly {
+      inherit (pkgs) curl;
+    };
+
+    curses = callPackage ../development/ocaml-modules/curses { };
+
+    ctypes = callPackage ../development/ocaml-modules/ctypes { };
+
+    dap =  callPackage ../development/ocaml-modules/dap { };
+
+    data-encoding = callPackage ../development/ocaml-modules/data-encoding { };
+
+    dbf =  callPackage ../development/ocaml-modules/dbf { };
+
+    decompress =  callPackage ../development/ocaml-modules/decompress { };
+
+    diet =  callPackage ../development/ocaml-modules/diet { };
+
+    digestif =  callPackage ../development/ocaml-modules/digestif { };
+
+    directories =  callPackage ../development/ocaml-modules/directories { };
+
+    dispatch =  callPackage ../development/ocaml-modules/dispatch { };
+
+    dns =  callPackage ../development/ocaml-modules/dns { };
+
+    dns-certify =  callPackage ../development/ocaml-modules/dns/certify.nix { };
+
+    dns-cli =  callPackage ../development/ocaml-modules/dns/cli.nix { };
+
+    dns-client =  callPackage ../development/ocaml-modules/dns/client.nix { };
+
+    dns-mirage = callPackage ../development/ocaml-modules/dns/mirage.nix { };
+
+    dns-resolver = callPackage ../development/ocaml-modules/dns/resolver.nix { };
+
+    dns-server = callPackage ../development/ocaml-modules/dns/server.nix { };
+
+    dns-stub = callPackage ../development/ocaml-modules/dns/stub.nix { };
+
+    dns-tsig = callPackage ../development/ocaml-modules/dns/tsig.nix { };
+
+    dolmen =  callPackage ../development/ocaml-modules/dolmen { };
+
+    dolog = callPackage ../development/ocaml-modules/dolog { };
+
+    domain-name = callPackage ../development/ocaml-modules/domain-name { };
+
+    dose3 = callPackage ../development/ocaml-modules/dose3 { };
+
+    dtoa = callPackage ../development/ocaml-modules/dtoa { };
+
+    duff = callPackage ../development/ocaml-modules/duff { };
+
+    dum = callPackage ../development/ocaml-modules/dum { };
+
+    dune_1 = callPackage ../development/tools/ocaml/dune/1.nix { };
+
+    dune_2 =
+      if lib.versionAtLeast ocaml.version "4.08"
+      then callPackage ../development/tools/ocaml/dune/2.nix { }
+      else if lib.versionAtLeast ocaml.version "4.02"
+      then pkgs.dune_2
+      else throw "dune_2 is not available for OCaml ${ocaml.version}";
+
+    dune_3 = callPackage ../development/tools/ocaml/dune/3.nix { };
+
+    dune-action-plugin = callPackage ../development/ocaml-modules/dune-action-plugin { };
+
+    dune-build-info = callPackage ../development/ocaml-modules/dune-build-info { };
+
+    dune-configurator = callPackage ../development/ocaml-modules/dune-configurator { };
+
+    dune-glob = callPackage ../development/ocaml-modules/dune-glob { };
+
+    dune-private-libs = callPackage ../development/ocaml-modules/dune-private-libs { };
+
+    dune-release = callPackage ../development/tools/ocaml/dune-release {
+      inherit (pkgs) opam git mercurial coreutils gnutar bzip2;
+    };
+
+    dune-site = callPackage ../development/ocaml-modules/dune-site { };
+
+    duration =  callPackage ../development/ocaml-modules/duration { };
+
+    earley = callPackage ../development/ocaml-modules/earley { };
+
+    earlybird = callPackage ../development/ocaml-modules/earlybird { };
+
+    easy-format = callPackage ../development/ocaml-modules/easy-format { };
+
+    eigen = callPackage ../development/ocaml-modules/eigen { };
+
+    either = callPackage ../development/ocaml-modules/either { };
+
+    elina = callPackage ../development/ocaml-modules/elina { };
+
+    eliom = callPackage ../development/ocaml-modules/eliom { };
+
+    elpi = callPackage ../development/ocaml-modules/elpi (
+      let ppxlib_0_15 = if lib.versionAtLeast ppxlib.version "0.15"
+        then ppxlib.override { version = "0.15.0"; }
+        else ppxlib; in
+      {
+        ppx_deriving_0_15 = ppx_deriving.override { ppxlib = ppxlib_0_15; };
+        inherit ppxlib_0_15;
+      }
+    );
+
+    encore = callPackage ../development/ocaml-modules/encore { };
+
+    emile = callPackage ../development/ocaml-modules/emile { };
+
+    enumerate = callPackage ../development/ocaml-modules/enumerate { };
+
+    eqaf = callPackage ../development/ocaml-modules/eqaf { };
+
+    erm_xml = callPackage ../development/ocaml-modules/erm_xml { };
+
+    erm_xmpp = callPackage ../development/ocaml-modules/erm_xmpp { };
+
+    ethernet = callPackage ../development/ocaml-modules/ethernet { };
+
+    ezjsonm = callPackage ../development/ocaml-modules/ezjsonm { };
+
+    ezxmlm = callPackage ../development/ocaml-modules/ezxmlm { };
+
+    facile = callPackage ../development/ocaml-modules/facile { };
+
+    faraday = callPackage ../development/ocaml-modules/faraday { };
+
+    faraday-async = callPackage ../development/ocaml-modules/faraday/async.nix { };
+
+    faraday-lwt = callPackage ../development/ocaml-modules/faraday/lwt.nix { };
+
+    faraday-lwt-unix = callPackage ../development/ocaml-modules/faraday/lwt-unix.nix { };
+
+    farfadet = callPackage ../development/ocaml-modules/farfadet { };
+
+    fdkaac = callPackage ../development/ocaml-modules/fdkaac { };
+
+    ff = callPackage ../development/ocaml-modules/ff { };
+    ff-pbt = callPackage ../development/ocaml-modules/ff/pbt.nix { };
+    ff-sig = callPackage ../development/ocaml-modules/ff/sig.nix { };
+
+    ffmpeg = callPackage ../development/ocaml-modules/ffmpeg { };
+    ffmpeg-avutil = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-avutil.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-avcodec = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-avcodec.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-avfilter = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-avfilter.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-swscale = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-swscale.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-swresample = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-swresample.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-av = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-av.nix {
+      inherit (pkgs) ffmpeg;
+    };
+    ffmpeg-avdevice = callPackage ../development/ocaml-modules/ffmpeg/ffmpeg-avdevice.nix {
+      inherit (pkgs) ffmpeg;
+    };
+
+    fiat-p256 = callPackage ../development/ocaml-modules/fiat-p256 { };
+
+    fileutils = callPackage ../development/ocaml-modules/fileutils { };
+
+    findlib = callPackage ../development/tools/ocaml/findlib { };
+
+    fix = callPackage ../development/ocaml-modules/fix { };
+
+    flac = callPackage ../development/ocaml-modules/flac {
+      inherit (pkgs) flac;
+    };
+
+    fmt = callPackage ../development/ocaml-modules/fmt { };
+
+    fontconfig = callPackage ../development/ocaml-modules/fontconfig {
+      inherit (pkgs) fontconfig;
+    };
+
+    fpath = callPackage ../development/ocaml-modules/fpath { };
+
+    functoria = callPackage ../development/ocaml-modules/functoria { };
+
+    functoria-runtime = callPackage ../development/ocaml-modules/functoria/runtime.nix { };
+
+    functory = callPackage ../development/ocaml-modules/functory { };
+
+    gen = callPackage ../development/ocaml-modules/gen { };
+
+    genspio = callPackage ../development/ocaml-modules/genspio { };
+
+    getopt = callPackage ../development/ocaml-modules/getopt { };
+
+    gluten = callPackage ../development/ocaml-modules/gluten { };
+    gluten-lwt = callPackage ../development/ocaml-modules/gluten/lwt.nix { };
+    gluten-lwt-unix = callPackage ../development/ocaml-modules/gluten/lwt-unix.nix { };
+
+    gmap = callPackage ../development/ocaml-modules/gmap { };
+
+    gnuplot = callPackage ../development/ocaml-modules/gnuplot {
+      inherit (pkgs) gnuplot;
+    };
+
+    gsl = callPackage ../development/ocaml-modules/gsl {
+      inherit (pkgs) gsl;
+    };
+
+    h2 = callPackage ../development/ocaml-modules/h2 { };
+
+    hack_parallel = callPackage ../development/ocaml-modules/hack_parallel { };
+
+    hacl_x25519 = callPackage ../development/ocaml-modules/hacl_x25519 { };
+
+    hacl-star = callPackage ../development/ocaml-modules/hacl-star { };
+    hacl-star-raw = callPackage ../development/ocaml-modules/hacl-star/raw.nix { };
+
+    hashcons = callPackage ../development/ocaml-modules/hashcons { };
+
+    herelib = callPackage ../development/ocaml-modules/herelib { };
+
+    hidapi = callPackage ../development/ocaml-modules/hidapi { };
+
+    higlo = callPackage ../development/ocaml-modules/higlo { };
+
+    hkdf = callPackage ../development/ocaml-modules/hkdf { };
+
+    hmap = callPackage ../development/ocaml-modules/hmap { };
+
+    hpack = callPackage ../development/ocaml-modules/hpack { };
+
+    hxd = callPackage ../development/ocaml-modules/hxd { };
+
+    imagelib = callPackage ../development/ocaml-modules/imagelib { };
+
+    inotify = callPackage ../development/ocaml-modules/inotify { };
+
+    integers = callPackage ../development/ocaml-modules/integers { };
+
+    io-page = callPackage ../development/ocaml-modules/io-page { };
+
+    io-page-unix = callPackage ../development/ocaml-modules/io-page/unix.nix { };
+
+    ipaddr = callPackage ../development/ocaml-modules/ipaddr { };
+
+    ipaddr-cstruct = callPackage ../development/ocaml-modules/ipaddr/cstruct.nix { };
+
+    ipaddr-sexp = callPackage ../development/ocaml-modules/ipaddr/sexp.nix { };
+
+    iso8601 = callPackage ../development/ocaml-modules/iso8601 { };
+
+    iter = callPackage ../development/ocaml-modules/iter { };
+
+    javalib = callPackage ../development/ocaml-modules/javalib {
+      extlib = ocaml_extlib;
+    };
+
+    dypgen = callPackage ../development/ocaml-modules/dypgen { };
+
+    gapi_ocaml = callPackage ../development/ocaml-modules/gapi-ocaml { };
+
+    gg = callPackage ../development/ocaml-modules/gg { };
+
+    git = callPackage ../development/ocaml-modules/git {
+      git-binary = pkgs.git;
+    };
+
+    git-cohttp = callPackage ../development/ocaml-modules/git/cohttp.nix { };
+
+    git-cohttp-unix = callPackage ../development/ocaml-modules/git/cohttp-unix.nix { };
+
+    git-paf = callPackage ../development/ocaml-modules/git/paf.nix { };
+
+    git-unix = callPackage ../development/ocaml-modules/git/unix.nix {
+      git-binary = pkgs.git;
+    };
+
+    gmetadom = callPackage ../development/ocaml-modules/gmetadom { };
+
+    graphics =
+    if lib.versionOlder "4.09" ocaml.version
+    then callPackage ../development/ocaml-modules/graphics { }
+    else null;
+
+    graphql = callPackage ../development/ocaml-modules/graphql { };
+
+    graphql-cohttp = callPackage ../development/ocaml-modules/graphql/cohttp.nix { };
+
+    graphql-lwt = callPackage ../development/ocaml-modules/graphql/lwt.nix { };
+
+    graphql_parser = callPackage ../development/ocaml-modules/graphql/parser.nix { };
+
+    graphql_ppx = callPackage ../development/ocaml-modules/graphql_ppx { };
+
+    hex = callPackage ../development/ocaml-modules/hex { };
+
+    httpaf = callPackage ../development/ocaml-modules/httpaf { };
+
+    index = callPackage ../development/ocaml-modules/index { };
+
+    inifiles = callPackage ../development/ocaml-modules/inifiles { };
+
+    iri = callPackage ../development/ocaml-modules/iri { };
+
+    irmin = callPackage ../development/ocaml-modules/irmin { };
+
+    irmin-chunk = callPackage ../development/ocaml-modules/irmin/chunk.nix { };
+
+    irmin-containers = callPackage ../development/ocaml-modules/irmin/containers.nix { };
+
+    irmin-fs = callPackage ../development/ocaml-modules/irmin/fs.nix { };
+
+    irmin-git = callPackage ../development/ocaml-modules/irmin/git.nix { };
+
+    irmin-graphql = callPackage ../development/ocaml-modules/irmin/graphql.nix { };
+
+    irmin-http = callPackage ../development/ocaml-modules/irmin/http.nix { };
+
+    irmin-layers = callPackage ../development/ocaml-modules/irmin/layers.nix { };
+
+    irmin-mirage = callPackage ../development/ocaml-modules/irmin/mirage.nix { };
+
+    irmin-mirage-git = callPackage ../development/ocaml-modules/irmin/mirage-git.nix { };
+
+    irmin-mirage-graphql = callPackage ../development/ocaml-modules/irmin/mirage-graphql.nix { };
+
+    irmin-pack = callPackage ../development/ocaml-modules/irmin/pack.nix { };
+
+    irmin-test = callPackage ../development/ocaml-modules/irmin/test.nix { };
+
+    irmin-unix = callPackage ../development/ocaml-modules/irmin/unix.nix { };
+
+    irmin-watcher = callPackage ../development/ocaml-modules/irmin-watcher { };
+
+    jingoo = callPackage ../development/ocaml-modules/jingoo { };
+
+    js_of_ocaml = callPackage ../development/tools/ocaml/js_of_ocaml { };
+
+    js_of_ocaml-camlp4 = callPackage ../development/tools/ocaml/js_of_ocaml/camlp4.nix {};
+
+    js_of_ocaml-compiler = callPackage ../development/tools/ocaml/js_of_ocaml/compiler.nix {};
+
+    js_of_ocaml-lwt = callPackage ../development/tools/ocaml/js_of_ocaml/lwt.nix {};
+
+    js_of_ocaml-ocamlbuild = callPackage ../development/tools/ocaml/js_of_ocaml/ocamlbuild.nix {};
+
+    js_of_ocaml-ppx = callPackage ../development/tools/ocaml/js_of_ocaml/ppx.nix {};
+
+    js_of_ocaml-ppx_deriving_json = callPackage ../development/tools/ocaml/js_of_ocaml/ppx_deriving_json.nix { };
+
+    js_of_ocaml-tyxml = callPackage ../development/tools/ocaml/js_of_ocaml/tyxml.nix {};
+
+    jsonm = callPackage ../development/ocaml-modules/jsonm { };
+
+    json-data-encoding = callPackage ../development/ocaml-modules/json-data-encoding { };
+
+    json-data-encoding-bson = callPackage ../development/ocaml-modules/json-data-encoding/bson.nix { };
+
+    junit = callPackage ../development/ocaml-modules/junit { };
+    junit_ounit = callPackage ../development/ocaml-modules/junit/ounit.nix { };
+    junit_alcotest = callPackage ../development/ocaml-modules/junit/alcotest.nix { };
+
+    jwto = callPackage ../development/ocaml-modules/jwto { };
+
+    kafka = callPackage ../development/ocaml-modules/kafka { };
+
+    kafka_lwt = callPackage ../development/ocaml-modules/kafka/lwt.nix { };
+
+    ke = callPackage ../development/ocaml-modules/ke { };
+
+    lablgl = callPackage ../development/ocaml-modules/lablgl { };
+
+    lablgtk3 = callPackage ../development/ocaml-modules/lablgtk3 { };
+
+    lablgtk3-gtkspell3 = callPackage ../development/ocaml-modules/lablgtk3/gtkspell3.nix { };
+
+    lablgtk3-sourceview3 = callPackage ../development/ocaml-modules/lablgtk3/sourceview3.nix { };
+
+    lablgtk_2_14 = callPackage ../development/ocaml-modules/lablgtk/2.14.0.nix {
+      inherit (pkgs.gnome2) libgnomecanvas gtksourceview;
+    };
+    lablgtk = callPackage ../development/ocaml-modules/lablgtk {
+      inherit (pkgs.gnome2) libgnomecanvas gtksourceview;
+    };
+
+    lablgtk-extras =
+      if lib.versionOlder "4.02" ocaml.version
+      then callPackage ../development/ocaml-modules/lablgtk-extras { }
+      else callPackage ../development/ocaml-modules/lablgtk-extras/1.4.nix { };
+
+    labltk = callPackage ../development/ocaml-modules/labltk { };
+
+    lacaml = callPackage ../development/ocaml-modules/lacaml { };
+
+    lambdasoup = callPackage ../development/ocaml-modules/lambdasoup { };
+
+    lambda-term = callPackage ../development/ocaml-modules/lambda-term { };
+
+    lens = callPackage ../development/ocaml-modules/lens { };
+
+    letsencrypt = callPackage ../development/ocaml-modules/letsencrypt { };
+
+    letsencrypt-app = callPackage ../development/ocaml-modules/letsencrypt/app.nix { };
+
+    letsencrypt-dns = callPackage ../development/ocaml-modules/letsencrypt/dns.nix { };
+
+    linenoise = callPackage ../development/ocaml-modules/linenoise { };
+
+    llvm = callPackage ../development/ocaml-modules/llvm {
+      libllvm = pkgs.llvmPackages_10.libllvm;
+    };
+
+    logs = callPackage ../development/ocaml-modules/logs { };
+
+    lru = callPackage ../development/ocaml-modules/lru { };
+
+    lua-ml = callPackage ../development/ocaml-modules/lua-ml { };
+
+    lustre-v6 = callPackage ../development/ocaml-modules/lustre-v6 { };
+
+    lutils = callPackage ../development/ocaml-modules/lutils { };
+
+    luv = callPackage ../development/ocaml-modules/luv {
+      inherit (pkgs) file;
+    };
+
+    lwt = callPackage ../development/ocaml-modules/lwt { };
+
+    lwt-canceler = callPackage ../development/ocaml-modules/lwt-canceler { };
+
+    ocaml_lwt = lwt;
+
+    lwt_camlp4 = callPackage ../development/ocaml-modules/lwt/camlp4.nix { };
+
+    lwt-dllist = callPackage ../development/ocaml-modules/lwt-dllist { };
+
+    lwt-exit = callPackage ../development/ocaml-modules/lwt-exit { };
+
+    lwt-watcher = callPackage ../development/ocaml-modules/lwt-watcher { };
+
+    lwt_log = callPackage ../development/ocaml-modules/lwt_log { };
+
+    lwt_ppx = callPackage ../development/ocaml-modules/lwt/ppx.nix { };
+
+    lwt_react = callPackage ../development/ocaml-modules/lwt_react { };
+
+    lwt_ssl = callPackage ../development/ocaml-modules/lwt_ssl { };
+
+    macaddr = callPackage ../development/ocaml-modules/macaddr { };
+
+    macaddr-cstruct = callPackage ../development/ocaml-modules/macaddr/cstruct.nix { };
+
+    macaddr-sexp = callPackage ../development/ocaml-modules/macaddr/sexp.nix { };
+
+    macaque = callPackage ../development/ocaml-modules/macaque { };
+
+    magic-mime = callPackage ../development/ocaml-modules/magic-mime { };
+
+    magick = callPackage ../development/ocaml-modules/magick { };
+
+    mariadb = callPackage ../development/ocaml-modules/mariadb {
+      inherit (pkgs) mariadb;
+    };
+
+    markup = callPackage ../development/ocaml-modules/markup { };
+
+    mccs = callPackage ../development/ocaml-modules/mccs { };
+
+    mdx = callPackage ../development/ocaml-modules/mdx { };
+
+    menhir = callPackage ../development/ocaml-modules/menhir { };
+
+    menhirLib = callPackage ../development/ocaml-modules/menhir/lib.nix { };
+
+    menhirSdk = callPackage ../development/ocaml-modules/menhir/sdk.nix { };
+
+    merlin =
+      if lib.versionAtLeast ocaml.version "4.11"
+      then callPackage ../development/tools/ocaml/merlin/4.x.nix { }
+      else callPackage ../development/tools/ocaml/merlin { };
+
+    merlin-extend = callPackage ../development/ocaml-modules/merlin-extend { };
+
+    dot-merlin-reader = callPackage ../development/tools/ocaml/merlin/dot-merlin-reader.nix { };
+
+    metrics = callPackage ../development/ocaml-modules/metrics { };
+
+    metrics-influx = callPackage ../development/ocaml-modules/metrics/influx.nix { };
+
+    metrics-lwt = callPackage ../development/ocaml-modules/metrics/lwt.nix { };
+
+    metrics-mirage = callPackage ../development/ocaml-modules/metrics/mirage.nix { };
+
+    metrics-unix = callPackage ../development/ocaml-modules/metrics/unix.nix {
+      inherit (pkgs) gnuplot;
+    };
+
+    mew = callPackage ../development/ocaml-modules/mew { };
+
+    mew_vi = callPackage ../development/ocaml-modules/mew_vi { };
+
+    mezzo = callPackage ../development/compilers/mezzo { };
+
+    mimic = callPackage ../development/ocaml-modules/mimic { };
+
+    minisat = callPackage ../development/ocaml-modules/minisat { };
+
+    mirage = callPackage ../development/ocaml-modules/mirage { };
+
+    mirage-block = callPackage ../development/ocaml-modules/mirage-block { };
+
+    mirage-block-combinators = callPackage ../development/ocaml-modules/mirage-block/combinators.nix { };
+
+    mirage-block-ramdisk = callPackage ../development/ocaml-modules/mirage-block-ramdisk { };
+
+    mirage-block-unix = callPackage ../development/ocaml-modules/mirage-block-unix { };
+
+    mirage-bootvar-unix = callPackage ../development/ocaml-modules/mirage-bootvar-unix { };
+
+    mirage-bootvar-xen = callPackage ../development/ocaml-modules/mirage-bootvar-xen { };
+
+    mirage-channel = callPackage ../development/ocaml-modules/mirage-channel { };
+
+    mirage-clock = callPackage ../development/ocaml-modules/mirage-clock { };
+
+    mirage-clock-freestanding = callPackage ../development/ocaml-modules/mirage-clock/freestanding.nix { };
+
+    mirage-clock-unix = callPackage ../development/ocaml-modules/mirage-clock/unix.nix { };
+
+    mirage-console = callPackage ../development/ocaml-modules/mirage-console { };
+
+    mirage-console-unix = callPackage ../development/ocaml-modules/mirage-console/unix.nix { };
+
+    mirage-crypto = callPackage ../development/ocaml-modules/mirage-crypto { };
+
+    mirage-crypto-ec = callPackage ../development/ocaml-modules/mirage-crypto/ec.nix { };
+
+    mirage-crypto-pk = callPackage ../development/ocaml-modules/mirage-crypto/pk.nix { };
+
+    mirage-crypto-rng = callPackage ../development/ocaml-modules/mirage-crypto/rng.nix { };
+
+    mirage-crypto-rng-async = callPackage ../development/ocaml-modules/mirage-crypto/rng-async.nix { };
+
+    mirage-crypto-rng-mirage = callPackage ../development/ocaml-modules/mirage-crypto/rng-mirage.nix { };
+
+    mirage-device = callPackage ../development/ocaml-modules/mirage-device { };
+
+    mirage-flow = callPackage ../development/ocaml-modules/mirage-flow { };
+
+    mirage-flow-combinators = callPackage ../development/ocaml-modules/mirage-flow/combinators.nix { };
+
+    mirage-flow-unix = callPackage ../development/ocaml-modules/mirage-flow/unix.nix { };
+
+    mirage-fs = callPackage ../development/ocaml-modules/mirage-fs { };
+
+    mirage-kv = callPackage ../development/ocaml-modules/mirage-kv { };
+
+    mirage-logs = callPackage ../development/ocaml-modules/mirage-logs { };
+
+    mirage-nat = callPackage ../development/ocaml-modules/mirage-nat { };
+
+    mirage-net = callPackage ../development/ocaml-modules/mirage-net { };
+
+    mirage-net-xen = callPackage ../development/ocaml-modules/mirage-net-xen { };
+
+    mirage-profile = callPackage ../development/ocaml-modules/mirage-profile { };
+
+    mirage-protocols = callPackage ../development/ocaml-modules/mirage-protocols { };
+
+    mirage-random = callPackage ../development/ocaml-modules/mirage-random { };
+
+    mirage-random-test = callPackage ../development/ocaml-modules/mirage-random-test { };
+
+    mirage-runtime = callPackage ../development/ocaml-modules/mirage/runtime.nix { };
+
+    mirage-stack = callPackage ../development/ocaml-modules/mirage-stack { };
+
+    mirage-time = callPackage ../development/ocaml-modules/mirage-time { };
+
+    mirage-time-unix = callPackage ../development/ocaml-modules/mirage-time/unix.nix { };
+
+    mirage-types = callPackage ../development/ocaml-modules/mirage/types.nix { };
+
+    mirage-types-lwt = callPackage ../development/ocaml-modules/mirage/types-lwt.nix { };
+
+    mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { };
+
+    mirage-xen = callPackage ../development/ocaml-modules/mirage-xen { };
+
+    mirage-vnetif = callPackage ../development/ocaml-modules/mirage-vnetif { };
+
+    mlgmp =  callPackage ../development/ocaml-modules/mlgmp { };
+
+    mlgmpidl =  callPackage ../development/ocaml-modules/mlgmpidl { };
+
+    mmap =  callPackage ../development/ocaml-modules/mmap { };
+
+    mparser =  callPackage ../development/ocaml-modules/mparser { };
+
+    mparser-pcre =  callPackage ../development/ocaml-modules/mparser/pcre.nix { };
+
+    mrmime = callPackage ../development/ocaml-modules/mrmime { };
+
+    mtime =  callPackage ../development/ocaml-modules/mtime { };
+
+    mustache =  callPackage ../development/ocaml-modules/mustache { };
+
+    netchannel = callPackage ../development/ocaml-modules/netchannel { };
+
+    nocrypto =  callPackage ../development/ocaml-modules/nocrypto { };
+
+    noise = callPackage ../development/ocaml-modules/noise { };
+
+    nonstd =  callPackage ../development/ocaml-modules/nonstd { };
+
+    notty = callPackage ../development/ocaml-modules/notty { };
+
+    npy = callPackage ../development/ocaml-modules/npy {
+      inherit (pkgs.python3Packages) numpy;
+    };
+
+    num = if lib.versionOlder "4.06" ocaml.version
+      then callPackage ../development/ocaml-modules/num {}
+      else null;
+
+    parmap = callPackage ../development/ocaml-modules/parmap { };
+
+    comparelib = callPackage ../development/ocaml-modules/comparelib { };
+
+    ocamlbuild =
+    if lib.versionOlder "4.03" ocaml.version then
+    callPackage ../development/tools/ocaml/ocamlbuild { }
+    else
+    null;
+
+    ocaml_cryptgps = callPackage ../development/ocaml-modules/cryptgps { };
+
+    ocaml_data_notation = callPackage ../development/ocaml-modules/odn { };
+
+    ocaml_expat =
+    if lib.versionAtLeast ocaml.version "4.02"
+    then callPackage ../development/ocaml-modules/expat { }
+    else callPackage ../development/ocaml-modules/expat/0.9.nix { };
+
+    frontc = callPackage ../development/ocaml-modules/frontc { };
+
+    ocamlformat-rpc-lib = callPackage ../development/ocaml-modules/ocamlformat-rpc-lib { };
+
+    ocamlfuse = callPackage ../development/ocaml-modules/ocamlfuse { };
+
+    ocaml-freestanding = callPackage ../development/ocaml-modules/ocaml-freestanding { };
+
+    ocaml_gettext = callPackage ../development/ocaml-modules/ocaml-gettext { };
+
+    gettext-camomile = callPackage ../development/ocaml-modules/ocaml-gettext/camomile.nix { };
+
+    gettext-stub = callPackage ../development/ocaml-modules/ocaml-gettext/stub.nix { };
+
+    ocamlgraph = callPackage ../development/ocaml-modules/ocamlgraph { };
+    ocamlgraph_gtk = callPackage ../development/ocaml-modules/ocamlgraph/gtk.nix { };
+
+    ocaml_libvirt = callPackage ../development/ocaml-modules/ocaml-libvirt { };
+
+    ocamlify = callPackage ../development/tools/ocaml/ocamlify { };
+
+    jsonrpc = callPackage ../development/ocaml-modules/ocaml-lsp/jsonrpc.nix { };
+    lsp = callPackage ../development/ocaml-modules/ocaml-lsp/lsp.nix { };
+    ocaml-lsp = callPackage ../development/ocaml-modules/ocaml-lsp { };
+
+    ocaml-migrate-parsetree = ocaml-migrate-parsetree-1-8;
+
+    ocaml-migrate-parsetree-1-8 = callPackage ../development/ocaml-modules/ocaml-migrate-parsetree/1.8.x.nix { };
+
+    ocaml-migrate-parsetree-2 = callPackage ../development/ocaml-modules/ocaml-migrate-parsetree/2.x.nix { };
+
+    ocamlmod = callPackage ../development/tools/ocaml/ocamlmod { };
+
+    ocaml-monadic = callPackage ../development/ocaml-modules/ocaml-monadic { };
+
+    ocaml_mysql = callPackage ../development/ocaml-modules/mysql { };
+
+    ocamlnet = callPackage ../development/ocaml-modules/ocamlnet { };
+
+    ocaml_oasis = callPackage ../development/tools/ocaml/oasis { };
+
+    ocaml_pcre = callPackage ../development/ocaml-modules/pcre {};
+
+    ocaml-print-intf = callPackage ../development/ocaml-modules/ocaml-print-intf { };
+
+    ocaml-recovery-parser = callPackage ../development/tools/ocaml/ocaml-recovery-parser { };
+
+    pgocaml = callPackage ../development/ocaml-modules/pgocaml {};
+
+    pgocaml_ppx = callPackage ../development/ocaml-modules/pgocaml/ppx.nix {};
+
+    ocaml-r = callPackage ../development/ocaml-modules/ocaml-r { };
+
+    ocaml-sat-solvers = callPackage ../development/ocaml-modules/ocaml-sat-solvers { };
+
+    ocamlscript = callPackage ../development/tools/ocaml/ocamlscript { };
+
+    ocamlsdl= callPackage ../development/ocaml-modules/ocamlsdl { };
+
+    ocaml_sqlite3 = callPackage ../development/ocaml-modules/sqlite3 { };
+
+    ocaml-syntax-shims = callPackage ../development/ocaml-modules/ocaml-syntax-shims { };
+
+    syslog = callPackage ../development/ocaml-modules/syslog { };
+
+    syslog-message = callPackage ../development/ocaml-modules/syslog-message { };
+
+    ocaml-version = callPackage ../development/ocaml-modules/ocaml-version { };
+
+    ocf = callPackage ../development/ocaml-modules/ocf { };
+
+    ocf_ppx = callPackage ../development/ocaml-modules/ocf/ppx.nix { };
+
+    ocp-build = callPackage ../development/tools/ocaml/ocp-build { };
+
+    ocp-indent = callPackage ../development/tools/ocaml/ocp-indent { };
+
+    ocp-index = callPackage ../development/tools/ocaml/ocp-index { };
+
+    ocp-ocamlres = callPackage ../development/ocaml-modules/ocp-ocamlres { };
+
+    ocplib-endian = callPackage ../development/ocaml-modules/ocplib-endian { };
+
+    ocplib-json-typed = callPackage ../development/ocaml-modules/ocplib-json-typed { };
+
+    ocplib-json-typed-browser = callPackage ../development/ocaml-modules/ocplib-json-typed/browser.nix { };
+
+    ocplib-json-typed-bson = callPackage ../development/ocaml-modules/ocplib-json-typed/bson.nix { };
+
+    ocplib-simplex = callPackage ../development/ocaml-modules/ocplib-simplex { };
+
+    ocsigen_server = callPackage ../development/ocaml-modules/ocsigen-server { };
+
+    ocsigen-start = callPackage ../development/ocaml-modules/ocsigen-start { };
+
+    ocsigen-toolkit = callPackage ../development/ocaml-modules/ocsigen-toolkit { };
+
+    octavius = callPackage ../development/ocaml-modules/octavius { };
+
+    odate = callPackage ../development/ocaml-modules/odate { };
+
+    odoc = callPackage ../development/ocaml-modules/odoc { };
+
+    odoc-parser = callPackage ../development/ocaml-modules/odoc-parser { };
+
+    omd = callPackage ../development/ocaml-modules/omd { };
+
+    opam-core = callPackage ../development/ocaml-modules/opam-core {
+      inherit (pkgs) opam unzip;
+    };
+
+    opam-file-format = callPackage ../development/ocaml-modules/opam-file-format { };
+
+    opam-format = callPackage ../development/ocaml-modules/opam-format {
+      inherit (pkgs) unzip;
+    };
+
+    opam-repository = callPackage ../development/ocaml-modules/opam-repository {
+      inherit (pkgs) unzip;
+    };
+
+    opam-state = callPackage ../development/ocaml-modules/opam-state {
+      inherit (pkgs) unzip;
+    };
+
+    opium = callPackage ../development/ocaml-modules/opium { };
+
+    opium_kernel = callPackage ../development/ocaml-modules/opium_kernel { };
+
+    opti = callPackage ../development/ocaml-modules/opti { };
+
+    optint = callPackage ../development/ocaml-modules/optint { };
+
+    opus = callPackage ../development/ocaml-modules/opus { };
+
+    otfm = callPackage ../development/ocaml-modules/otfm { };
+
+    otoml = callPackage ../development/ocaml-modules/otoml { };
+
+    otr = callPackage ../development/ocaml-modules/otr { };
+
+    owee = callPackage ../development/ocaml-modules/owee { };
+
+    owl-base = callPackage ../development/ocaml-modules/owl-base { };
+
+    owl = callPackage ../development/ocaml-modules/owl { };
+
+    ounit = callPackage ../development/ocaml-modules/ounit { };
+
+    ounit2 = callPackage ../development/ocaml-modules/ounit2 { };
+
+    paf = callPackage ../development/ocaml-modules/paf { };
+
+    paf-cohttp = callPackage ../development/ocaml-modules/paf/cohttp.nix { };
+
+    paf-le = callPackage ../development/ocaml-modules/paf/le.nix { };
+
+    parse-argv = callPackage ../development/ocaml-modules/parse-argv { };
+
+    path_glob = callPackage ../development/ocaml-modules/path_glob { };
+
+    pbkdf = callPackage ../development/ocaml-modules/pbkdf { };
+
+    pcap-format = callPackage ../development/ocaml-modules/pcap-format { };
+
+    pecu = callPackage ../development/ocaml-modules/pecu { };
+
+    pgsolver = callPackage ../development/ocaml-modules/pgsolver { };
+
+    phylogenetics = callPackage ../development/ocaml-modules/phylogenetics { };
+
+    piaf = callPackage ../development/ocaml-modules/piaf { };
+
+    piqi = callPackage ../development/ocaml-modules/piqi { };
+
+    piqi-ocaml = callPackage ../development/ocaml-modules/piqi-ocaml { };
+
+    posix-base = callPackage ../development/ocaml-modules/posix/base.nix { };
+
+    posix-socket = callPackage ../development/ocaml-modules/posix/socket.nix { };
+
+    posix-types = callPackage ../development/ocaml-modules/posix/types.nix { };
+
+    postgresql = callPackage ../development/ocaml-modules/postgresql {
+      inherit (pkgs) postgresql;
+    };
+
+    pp = callPackage ../development/ocaml-modules/pp { };
+
+    ppx_bap = callPackage ../development/ocaml-modules/ppx_bap { };
+
+    ppx_bitstring = callPackage ../development/ocaml-modules/bitstring/ppx.nix { };
+
+    ppxlib = callPackage ../development/ocaml-modules/ppxlib { };
+
+    psmt2-frontend = callPackage ../development/ocaml-modules/psmt2-frontend { };
+
+    psq = callPackage ../development/ocaml-modules/psq { };
+
+    ptime = callPackage ../development/ocaml-modules/ptime { };
+
+    resource-pooling = callPackage ../development/ocaml-modules/resource-pooling { };
+
+    repr = callPackage ../development/ocaml-modules/repr { };
+
+    result = callPackage ../development/ocaml-modules/ocaml-result { };
+
+    secp256k1 = callPackage ../development/ocaml-modules/secp256k1 {
+      inherit (pkgs) secp256k1;
+    };
+
+    secp256k1-internal = callPackage ../development/ocaml-modules/secp256k1-internal { };
+
+    seq = callPackage ../development/ocaml-modules/seq { };
+
+    shine = callPackage ../development/ocaml-modules/shine {
+      inherit (pkgs) shine;
+    };
+
+    sosa = callPackage ../development/ocaml-modules/sosa { };
+
+    spacetime_lib = callPackage ../development/ocaml-modules/spacetime_lib { };
+
+    speex = callPackage ../development/ocaml-modules/speex {
+      inherit (pkgs) speex;
+    };
+
+    tar-unix = callPackage ../development/ocaml-modules/tar/unix.nix { };
+
+    tar = callPackage ../development/ocaml-modules/tar { };
+
+    tcpip = callPackage ../development/ocaml-modules/tcpip { };
+
+    tsort = callPackage ../development/ocaml-modules/tsort { };
+
+    tuntap = callPackage ../development/ocaml-modules/tuntap { };
+
+    tyxml = callPackage ../development/ocaml-modules/tyxml { };
+
+    ulex = callPackage ../development/ocaml-modules/ulex { };
+
+    tls = callPackage ../development/ocaml-modules/tls { };
+
+    tls-async = callPackage ../development/ocaml-modules/tls/async.nix { };
+
+    tls-mirage = callPackage ../development/ocaml-modules/tls/mirage.nix { };
+
+    torch = callPackage ../development/ocaml-modules/torch {
+      inherit (pkgs.python3Packages) pytorch;
+    };
+
+    type_conv_108_08_00 = callPackage ../development/ocaml-modules/type_conv/108.08.00.nix { };
+    type_conv_109_60_01 = callPackage ../development/ocaml-modules/type_conv/109.60.01.nix { };
+    type_conv_112_01_01 = callPackage ../development/ocaml-modules/type_conv/112.01.01.nix { };
+    type_conv =
+      if lib.versionOlder "4.02" ocaml.version
+      then type_conv_112_01_01
+      else if lib.versionOlder "4.00" ocaml.version
+      then type_conv_109_60_01
+      else if lib.versionOlder "3.12" ocaml.version
+      then type_conv_108_08_00
+      else null;
+
+    ocaml-protoc = callPackage ../development/ocaml-modules/ocaml-protoc { };
+
+    ocaml_extlib = ocaml_extlib-1-7-8;
+
+    ocaml_extlib-1-7-8 = callPackage ../development/ocaml-modules/extlib { };
+
+    ocaml_extlib-1-7-7 = callPackage ../development/ocaml-modules/extlib/1.7.7.nix { };
+
+    ocb-stubblr = callPackage ../development/ocaml-modules/ocb-stubblr { };
+
+    ocurl = callPackage ../development/ocaml-modules/ocurl { };
+
+    ogg = callPackage ../development/ocaml-modules/ogg { };
+
+    parany = callPackage ../development/ocaml-modules/parany { };
+
+    pipebang = callPackage ../development/ocaml-modules/pipebang { };
+
+    pprint = callPackage ../development/ocaml-modules/pprint { };
+
+    ppx_blob = callPackage ../development/ocaml-modules/ppx_blob { };
+
+    ppx_cstruct = callPackage ../development/ocaml-modules/cstruct/ppx.nix { };
+
+    ppx_cstubs = callPackage ../development/ocaml-modules/ppx_cstubs { };
+
+    ppx_derivers = callPackage ../development/ocaml-modules/ppx_derivers {};
+
+    ppx_deriving = callPackage ../development/ocaml-modules/ppx_deriving {};
+
+    ppx_deriving_protobuf = callPackage ../development/ocaml-modules/ppx_deriving_protobuf {};
+
+    ppx_deriving_rpc = callPackage ../development/ocaml-modules/ppx_deriving_rpc { };
+
+    ppx_deriving_yojson = callPackage ../development/ocaml-modules/ppx_deriving_yojson {};
+
+    ppx_deriving_yaml = callPackage ../development/ocaml-modules/ppx_deriving_yaml {};
+
+    ppx_deriving_cmdliner = callPackage ../development/ocaml-modules/ppx_deriving_cmdliner {};
+
+    ppx_gen_rec = callPackage ../development/ocaml-modules/ppx_gen_rec {};
+
+    ppx_import = callPackage ../development/ocaml-modules/ppx_import {};
+
+    ppx_irmin = callPackage ../development/ocaml-modules/irmin/ppx.nix {
+    };
+
+    ppx_repr = callPackage ../development/ocaml-modules/repr/ppx.nix { };
+
+    ppx_tools =
+      if lib.versionAtLeast ocaml.version "4.02"
+      then callPackage ../development/ocaml-modules/ppx_tools {}
+      else null;
+
+    ppx_tools_versioned = callPackage ../development/ocaml-modules/ppx_tools_versioned { };
+
+    ppx_yojson_conv_lib = callPackage ../development/ocaml-modules/ppx_yojson_conv_lib {};
+
+    prettym = callPackage ../development/ocaml-modules/prettym { };
+
+    printbox = callPackage ../development/ocaml-modules/printbox { };
+
+    printbox-text = callPackage ../development/ocaml-modules/printbox/text.nix { };
+
+    process = callPackage ../development/ocaml-modules/process { };
+
+    prof_spacetime = callPackage ../development/ocaml-modules/prof_spacetime { };
+
+    progress = callPackage ../development/ocaml-modules/progress { };
+
+    ptmap = callPackage ../development/ocaml-modules/ptmap { };
+
+    ptset = callPackage ../development/ocaml-modules/ptset { };
+
+    pyml = callPackage ../development/ocaml-modules/pyml { };
+
+    qcheck-alcotest = callPackage ../development/ocaml-modules/qcheck/alcotest.nix { };
+
+    qcheck-core = callPackage ../development/ocaml-modules/qcheck/core.nix { };
+
+    qcheck-ounit = callPackage ../development/ocaml-modules/qcheck/ounit.nix { };
+
+    qcheck = callPackage ../development/ocaml-modules/qcheck { };
+
+    qtest = callPackage ../development/ocaml-modules/qtest { };
+
+    randomconv = callPackage ../development/ocaml-modules/randomconv { };
+
+    rdbg = callPackage ../development/ocaml-modules/rdbg { };
+
+    re = callPackage ../development/ocaml-modules/re { };
+
+    react = callPackage ../development/ocaml-modules/react { };
+
+    reactivedata = callPackage ../development/ocaml-modules/reactivedata {};
+
+    reason = callPackage ../development/compilers/reason { };
+
+    reason-native = lib.recurseIntoAttrs (callPackage ../development/ocaml-modules/reason-native { });
+
+    rfc7748 = callPackage ../development/ocaml-modules/rfc7748 { };
+
+    ezresto = callPackage ../development/ocaml-modules/resto/ezresto.nix { };
+    ezresto-directory = callPackage ../development/ocaml-modules/resto/ezresto-directory.nix { };
+
+    resto = callPackage ../development/ocaml-modules/resto { };
+    resto-acl = callPackage ../development/ocaml-modules/resto/acl.nix { };
+    resto-cohttp = callPackage ../development/ocaml-modules/resto/cohttp.nix { };
+    resto-cohttp-client = callPackage ../development/ocaml-modules/resto/cohttp-client.nix { };
+    resto-cohttp-self-serving-client = callPackage ../development/ocaml-modules/resto/cohttp-self-serving-client.nix { };
+    resto-cohttp-server = callPackage ../development/ocaml-modules/resto/cohttp-server.nix { };
+    resto-directory = callPackage ../development/ocaml-modules/resto/directory.nix { };
+    resto-json = callPackage ../development/ocaml-modules/resto/json.nix { };
+
+    ringo = callPackage ../development/ocaml-modules/ringo { };
+    ringo-lwt = callPackage ../development/ocaml-modules/ringo/lwt.nix { };
+
+    rope = callPackage ../development/ocaml-modules/rope { };
+
+    rosetta = callPackage ../development/ocaml-modules/rosetta { };
+
+    routes = callPackage ../development/ocaml-modules/routes { };
+
+    rpclib = callPackage ../development/ocaml-modules/rpclib { };
+
+    rpclib-lwt = callPackage ../development/ocaml-modules/rpclib/lwt.nix { };
+
+    rresult = callPackage ../development/ocaml-modules/rresult { };
+
+    safepass = callPackage ../development/ocaml-modules/safepass { };
+
+    sedlex = callPackage ../development/ocaml-modules/sedlex { };
+
+    sedlex_2 = callPackage ../development/ocaml-modules/sedlex/2.nix { };
+
+    semaphore-compat = callPackage ../development/ocaml-modules/semaphore-compat { };
+
+    sha = callPackage ../development/ocaml-modules/sha { };
+
+    shared-memory-ring = callPackage ../development/ocaml-modules/shared-memory-ring { };
+
+    shared-memory-ring-lwt = callPackage ../development/ocaml-modules/shared-memory-ring/lwt.nix { };
+
+    sodium = callPackage ../development/ocaml-modules/sodium { };
+
+    spelll = callPackage ../development/ocaml-modules/spelll { };
+
+    sqlite3EZ = callPackage ../development/ocaml-modules/sqlite3EZ { };
+
+    srt = callPackage ../development/ocaml-modules/srt {
+      inherit (pkgs) srt;
+    };
+
+    ssl = callPackage ../development/ocaml-modules/ssl { };
+
+    stdcompat = callPackage ../development/ocaml-modules/stdcompat { };
+
+    stdlib-shims = callPackage ../development/ocaml-modules/stdlib-shims { };
+
+    stog = callPackage ../applications/misc/stog { };
+
+    stringext = callPackage ../development/ocaml-modules/stringext { };
+
+    tcslib = callPackage ../development/ocaml-modules/tcslib { };
+
+    terminal = callPackage ../development/ocaml-modules/terminal { };
+
+    terminal_size = callPackage ../development/ocaml-modules/terminal_size { };
+
+    tezos-010-PtGRANAD-test-helpers = callPackage ../development/ocaml-modules/tezos/010-PtGRANAD-test-helpers.nix { };
+    tezos-011-PtHangz2-test-helpers = callPackage ../development/ocaml-modules/tezos/011-PtHangz2-test-helpers.nix { };
+    tezos-base = callPackage ../development/ocaml-modules/tezos/base.nix { };
+    tezos-base-test-helpers = callPackage ../development/ocaml-modules/tezos/base-test-helpers.nix { };
+    tezos-clic = callPackage ../development/ocaml-modules/tezos/clic.nix { };
+    tezos-client-010-PtGRANAD = callPackage ../development/ocaml-modules/tezos/client-010-PtGRANAD.nix { };
+    tezos-client-011-PtHangz2 = callPackage ../development/ocaml-modules/tezos/client-011-PtHangz2.nix { };
+    tezos-client-base = callPackage ../development/ocaml-modules/tezos/client-base.nix { };
+    tezos-context = callPackage ../development/ocaml-modules/tezos/context.nix { };
+    tezos-crypto = callPackage ../development/ocaml-modules/tezos/crypto.nix { };
+    tezos-embedded-protocol-010-PtGRANAD = callPackage ../development/ocaml-modules/tezos/embedded-protocol-010-PtGRANAD.nix { };
+    tezos-embedded-protocol-demo-noops = callPackage ../development/ocaml-modules/tezos/embedded-protocol-demo-noops.nix { };
+    tezos-error-monad = callPackage ../development/ocaml-modules/tezos/error-monad.nix { };
+    tezos-event-logging = callPackage ../development/ocaml-modules/tezos/event-logging.nix { };
+    tezos-event-logging-test-helpers = callPackage ../development/ocaml-modules/tezos/event-logging-test-helpers.nix { };
+    tezos-legacy-store = callPackage ../development/ocaml-modules/tezos/legacy-store.nix { };
+    tezos-lmdb = callPackage ../development/ocaml-modules/tezos/lmdb.nix { };
+    tezos-hacl-glue = callPackage ../development/ocaml-modules/tezos/hacl-glue.nix { };
+    tezos-hacl-glue-unix = callPackage ../development/ocaml-modules/tezos/hacl-glue-unix.nix { };
+    tezos-lwt-result-stdlib = callPackage ../development/ocaml-modules/tezos/lwt-result-stdlib.nix { };
+    tezos-micheline = callPackage ../development/ocaml-modules/tezos/micheline.nix { };
+    tezos-mockup-proxy = callPackage ../development/ocaml-modules/tezos/mockup-proxy.nix { };
+    tezos-mockup-registration = callPackage ../development/ocaml-modules/tezos/mockup-registration.nix { };
+    tezos-p2p-services = callPackage ../development/ocaml-modules/tezos/p2p-services.nix { };
+    tezos-p2p = callPackage ../development/ocaml-modules/tezos/p2p.nix { };
+    tezos-protocol-010-PtGRANAD = callPackage ../development/ocaml-modules/tezos/protocol-010-PtGRANAD.nix { };
+    tezos-protocol-010-PtGRANAD-parameters = callPackage ../development/ocaml-modules/tezos/protocol-010-PtGRANAD-parameters.nix { };
+    tezos-protocol-011-PtHangz2 = callPackage ../development/ocaml-modules/tezos/protocol-011-PtHangz2.nix { };
+    tezos-protocol-011-PtHangz2-parameters = callPackage ../development/ocaml-modules/tezos/protocol-011-PtHangz2-parameters.nix { };
+    tezos-protocol-alpha = callPackage ../development/ocaml-modules/tezos/protocol-alpha.nix { };
+    tezos-protocol-compiler = callPackage ../development/ocaml-modules/tezos/protocol-compiler.nix { };
+    tezos-protocol-demo-noops = callPackage ../development/ocaml-modules/tezos/protocol-demo-noops.nix { };
+    tezos-protocol-environment-packer = callPackage ../development/ocaml-modules/tezos/protocol-environment-packer.nix { };
+    tezos-protocol-environment-sigs = callPackage ../development/ocaml-modules/tezos/protocol-environment-sigs.nix { };
+    tezos-protocol-environment-structs = callPackage ../development/ocaml-modules/tezos/protocol-environment-structs.nix { };
+    tezos-protocol-environment = callPackage ../development/ocaml-modules/tezos/protocol-environment.nix { };
+    tezos-protocol-plugin-010-PtGRANAD = callPackage ../development/ocaml-modules/tezos/protocol-plugin-010-PtGRANAD.nix { };
+    tezos-protocol-plugin-011-PtHangz2 = callPackage ../development/ocaml-modules/tezos/protocol-plugin-011-PtHangz2.nix { };
+    tezos-protocol-plugin-alpha = callPackage ../development/ocaml-modules/tezos/protocol-plugin-alpha.nix { };
+    tezos-protocol-updater = callPackage ../development/ocaml-modules/tezos/protocol-updater.nix { };
+    tezos-proxy = callPackage ../development/ocaml-modules/tezos/proxy.nix { };
+    tezos-requester = callPackage ../development/ocaml-modules/tezos/requester.nix { };
+    tezos-rpc-http-client-unix = callPackage ../development/ocaml-modules/tezos/rpc-http-client-unix.nix { };
+    tezos-rpc-http-client = callPackage ../development/ocaml-modules/tezos/rpc-http-client.nix { };
+    tezos-rpc-http = callPackage ../development/ocaml-modules/tezos/rpc-http.nix { };
+    tezos-rpc = callPackage ../development/ocaml-modules/tezos/rpc.nix { };
+    tezos-sapling = callPackage ../development/ocaml-modules/tezos/sapling.nix { };
+    tezos-shell-context = callPackage ../development/ocaml-modules/tezos/shell-context.nix { };
+    tezos-shell-services = callPackage ../development/ocaml-modules/tezos/shell-services.nix { };
+    tezos-shell-services-test-helpers = callPackage ../development/ocaml-modules/tezos/shell-services-test-helpers.nix { };
+    tezos-shell = callPackage ../development/ocaml-modules/tezos/shell.nix { };
+    tezos-signer-backends = callPackage ../development/ocaml-modules/tezos/signer-backends.nix { };
+    tezos-signer-services = callPackage ../development/ocaml-modules/tezos/signer-services.nix { };
+    tezos-stdlib-unix = callPackage ../development/ocaml-modules/tezos/stdlib-unix.nix { };
+    tezos-stdlib = callPackage ../development/ocaml-modules/tezos/stdlib.nix { };
+    tezos-test-helpers = callPackage ../development/ocaml-modules/tezos/test-helpers.nix { };
+    tezos-store = callPackage ../development/ocaml-modules/tezos/store.nix { };
+    tezos-validation = callPackage ../development/ocaml-modules/tezos/validation.nix { };
+    tezos-version = callPackage ../development/ocaml-modules/tezos/version.nix { };
+    tezos-workers = callPackage ../development/ocaml-modules/tezos/workers.nix { };
+
+    theora = callPackage ../development/ocaml-modules/theora { };
+
+    toml = callPackage ../development/ocaml-modules/toml { };
+
+    topkg = callPackage ../development/ocaml-modules/topkg { };
+
+    trie = callPackage ../development/ocaml-modules/trie { };
+
+    tsdl = callPackage ../development/ocaml-modules/tsdl { };
+
+    twt = callPackage ../development/ocaml-modules/twt { };
+
+    uchar = callPackage ../development/ocaml-modules/uchar { };
+
+    uecc = callPackage ../development/ocaml-modules/uecc { };
+
+    utop = callPackage ../development/tools/ocaml/utop { };
+
+    uuidm = callPackage ../development/ocaml-modules/uuidm { };
+
+    sawja = callPackage ../development/ocaml-modules/sawja { };
+
+    stdint = callPackage ../development/ocaml-modules/stdint { };
+
+    unstrctrd = callPackage ../development/ocaml-modules/unstrctrd { };
+
+    uucd = callPackage ../development/ocaml-modules/uucd { };
+    uucp = callPackage ../development/ocaml-modules/uucp { };
+    uunf = callPackage ../development/ocaml-modules/uunf { };
+
+    uri = callPackage ../development/ocaml-modules/uri { };
+
+    uri-sexp = callPackage ../development/ocaml-modules/uri/sexp.nix { };
+
+    uuseg = callPackage ../development/ocaml-modules/uuseg { };
+    uutf = callPackage ../development/ocaml-modules/uutf { };
+
+    uuuu = callPackage ../development/ocaml-modules/uuuu { };
+
+    vchan = callPackage ../development/ocaml-modules/vchan { };
+
+    vector = callPackage ../development/ocaml-modules/vector { };
+
+    vg = callPackage ../development/ocaml-modules/vg { };
+
+    vlq = callPackage ../development/ocaml-modules/vlq { };
+
+    vorbis = callPackage ../development/ocaml-modules/vorbis { };
+
+    visitors = callPackage ../development/ocaml-modules/visitors { };
+
+    wasm = callPackage ../development/ocaml-modules/wasm { };
+
+    wayland = callPackage ../development/ocaml-modules/wayland { };
+
+    webbrowser = callPackage ../development/ocaml-modules/webbrowser { };
+
+    webmachine = callPackage ../development/ocaml-modules/webmachine { };
+
+    wodan = callPackage ../development/ocaml-modules/wodan { };
+
+    wodan-irmin = callPackage ../development/ocaml-modules/wodan/irmin.nix { };
+
+    wodan-unix = callPackage ../development/ocaml-modules/wodan/unix.nix { };
+
+    wtf8 = callPackage ../development/ocaml-modules/wtf8 { };
+
+    x509 = callPackage ../development/ocaml-modules/x509 { };
+
+    xenstore = callPackage ../development/ocaml-modules/xenstore { };
+
+    xenstore_transport = callPackage ../development/ocaml-modules/xenstore_transport { };
+
+    xenstore-tool = callPackage ../development/ocaml-modules/xenstore-tool { };
+
+    xmlm = callPackage ../development/ocaml-modules/xmlm { };
+
+    xml-light = callPackage ../development/ocaml-modules/xml-light { };
+
+    xtmpl = callPackage ../development/ocaml-modules/xtmpl { };
+
+    xtmpl_ppx = callPackage ../development/ocaml-modules/xtmpl/ppx.nix { };
+
+    yaml = callPackage ../development/ocaml-modules/yaml { };
+
+    yaml-sexp = callPackage ../development/ocaml-modules/yaml/yaml-sexp.nix { };
+
+    yojson = callPackage ../development/ocaml-modules/yojson { };
+
+    yuscii = callPackage ../development/ocaml-modules/yuscii { };
+
+    z3 = callPackage ../development/ocaml-modules/z3 {
+      inherit (pkgs) z3;
+    };
+
+    zarith = callPackage ../development/ocaml-modules/zarith { };
+
+    zed = callPackage ../development/ocaml-modules/zed { };
+
+    zmq = callPackage ../development/ocaml-modules/zmq { };
+
+    zmq-lwt = callPackage ../development/ocaml-modules/zmq/lwt.nix { };
+
+    ocsigen_deriving = callPackage ../development/ocaml-modules/ocsigen-deriving {
+      oasis = ocaml_oasis;
+    };
+
+    # Jane Street
+
+    janePackage =
+      if lib.versionOlder "4.08" ocaml.version
+      then callPackage ../development/ocaml-modules/janestreet/janePackage_0_14.nix {}
+      else if lib.versionOlder "4.07" ocaml.version
+      then callPackage ../development/ocaml-modules/janestreet/janePackage_0_12.nix {}
+      else callPackage ../development/ocaml-modules/janestreet/janePackage.nix {};
+
+    janeStreet =
+    if lib.versionOlder "4.08" ocaml.version
+    then import ../development/ocaml-modules/janestreet/0.14.nix {
+      inherit self;
+      inherit (pkgs) fetchpatch lib openssl zstd;
+    }
+    else if lib.versionOlder "4.07" ocaml.version
+    then import ../development/ocaml-modules/janestreet/0.12.nix {
+      self = self // {
+        ppxlib = ppxlib.override { version = "0.8.1"; };
+      };
+      inherit (pkgs) openssl;
+    }
+    else import ../development/ocaml-modules/janestreet {
+      self = self // {
+        ppxlib = ppxlib.override { version = "0.8.1"; };
+      };
+      inherit (pkgs) openssl;
+    };
+
+    janeStreet_0_9_0 = import ../development/ocaml-modules/janestreet/old.nix {
+      self = self.janeStreet_0_9_0;
+      super = self // {
+        janePackage = callPackage ../development/ocaml-modules/janestreet/janePackage.nix {
+          defaultVersion = "0.9.0";
+        };
+      };
+      inherit (pkgs) stdenv lib openssl;
+    };
+
+    # Apps / from all-packages
+
+    ocamlnat = callPackage  ../development/ocaml-modules/ocamlnat { };
+
+    omake_rc1 = callPackage ../development/tools/ocaml/omake/0.9.8.6-rc1.nix { };
+
+    google-drive-ocamlfuse = callPackage ../applications/networking/google-drive-ocamlfuse {
+      # needs Base64 module
+      ocaml_extlib = ocaml_extlib.override { minimal = false; };
+    };
+
+    hol_light = callPackage ../applications/science/logic/hol_light { };
+
+  })).overrideScope' liftJaneStreet;
+
+in let inherit (pkgs) callPackage; in rec
+{
+
+  ocamlPackages_4_00_1 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.00.1.nix { });
+
+  ocamlPackages_4_01_0 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.01.0.nix { });
+
+  ocamlPackages_4_02 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.02.nix { });
+
+  ocamlPackages_4_03 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.03.nix { });
+
+  ocamlPackages_4_04 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.04.nix { });
+
+  ocamlPackages_4_05 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.05.nix { });
+
+  ocamlPackages_4_06 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.06.nix { });
+
+  ocamlPackages_4_07 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.07.nix { });
+
+  ocamlPackages_4_08 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.08.nix { });
+
+  ocamlPackages_4_09 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.09.nix { });
+
+  ocamlPackages_4_10 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.10.nix { });
+
+  ocamlPackages_4_11 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.11.nix { });
+
+  ocamlPackages_4_12 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.12.nix { });
+
+  ocamlPackages_4_13 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.13.nix { });
+
+  ocamlPackages_4_14 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.14.nix { });
+
+  ocamlPackages_latest = ocamlPackages_4_13;
+
+  ocamlPackages = ocamlPackages_4_13;
+}
diff --git a/nixpkgs/pkgs/top-level/octave-packages.nix b/nixpkgs/pkgs/top-level/octave-packages.nix
new file mode 100644
index 000000000000..3895d7871f91
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/octave-packages.nix
@@ -0,0 +1,220 @@
+# This file contains the GNU Octave add-on packages set.
+# Each attribute is an Octave library.
+# Expressions for the Octave libraries are supposed to be in `pkgs/development/octave-modules/<name>/default.nix`.
+
+# When contributing a new package, if that package has a dependency on another
+# octave package, then you DO NOT need to explicitly list it as such when
+# performing the callPackage. It will be passed implicitly.
+# In addition, try to use the same dependencies as the ones octave needs, which
+# should ensure greater compatibility between Octave itself and its packages.
+
+# Like python-packages.nix, packages from top-level.nix are not in the scope
+# of the `callPackage` used for packages here. So, when we do need packages
+# from outside, we can `inherit` them from `pkgs`.
+{ pkgs
+, lib
+, stdenv
+, fetchurl
+, newScope
+, octave
+}:
+
+with lib;
+
+makeScope newScope (self:
+  let
+    inherit (octave) blas lapack gfortran python texinfo gnuplot;
+
+    callPackage = self.callPackage;
+
+    buildOctavePackage = callPackage ../development/interpreters/octave/build-octave-package.nix {
+      inherit lib stdenv;
+      inherit octave;
+      inherit computeRequiredOctavePackages;
+    };
+
+    wrapOctave = callPackage ../development/interpreters/octave/wrap-octave.nix {
+      inherit octave;
+      inherit (pkgs) makeSetupHook makeWrapper;
+    };
+
+    # Given a list of required Octave package derivations, get a list of
+    # ALL required Octave packages needed for the ones specified to run.
+    computeRequiredOctavePackages = drvs: let
+      # Check whether a derivation is an octave package
+      hasOctavePackage = drv: drv?isOctavePackage;
+      packages = filter hasOctavePackage drvs;
+    in unique (packages ++ concatLists (catAttrs "requiredOctavePackages" packages));
+
+  in {
+
+    inherit callPackage buildOctavePackage computeRequiredOctavePackages;
+
+    inherit (callPackage ../development/interpreters/octave/hooks { })
+      writeRequiredOctavePackagesHook;
+
+    arduino = callPackage ../development/octave-modules/arduino {
+      inherit (pkgs) arduino-core-unwrapped;
+    };
+
+    audio = callPackage ../development/octave-modules/audio { };
+
+    bim = callPackage ../development/octave-modules/bim { };
+
+    bsltl = callPackage ../development/octave-modules/bsltl { };
+
+    cgi = callPackage ../development/octave-modules/cgi { };
+
+    communications = callPackage ../development/octave-modules/communications { };
+
+    control = callPackage ../development/octave-modules/control { };
+
+    data-smoothing = callPackage ../development/octave-modules/data-smoothing { };
+
+    database = callPackage ../development/octave-modules/database { };
+
+    dataframe = callPackage ../development/octave-modules/dataframe { };
+
+    dicom = callPackage ../development/octave-modules/dicom { };
+
+    divand = callPackage ../development/octave-modules/divand { };
+
+    doctest = callPackage ../development/octave-modules/doctest { };
+
+    econometrics = callPackage ../development/octave-modules/econometrics { };
+
+    fem-fenics = callPackage ../development/octave-modules/fem-fenics {
+      # PLACEHOLDER until KarlJoad gets dolfin packaged.
+      dolfin = null;
+      ffc = null;
+    };
+
+    fits = callPackage ../development/octave-modules/fits { };
+
+    financial = callPackage ../development/octave-modules/financial { };
+
+    fpl = callPackage ../development/octave-modules/fpl { };
+
+    fuzzy-logic-toolkit = callPackage ../development/octave-modules/fuzzy-logic-toolkit { };
+
+    ga = callPackage ../development/octave-modules/ga { };
+
+    general = callPackage ../development/octave-modules/general {
+      nettle = pkgs.nettle;
+    };
+
+    generate_html = callPackage ../development/octave-modules/generate_html { };
+
+    geometry = callPackage ../development/octave-modules/geometry { };
+
+    gsl = callPackage ../development/octave-modules/gsl {
+      inherit (pkgs) gsl;
+    };
+
+    image = callPackage ../development/octave-modules/image { };
+
+    image-acquisition = callPackage ../development/octave-modules/image-acquisition { };
+
+    instrument-control = callPackage ../development/octave-modules/instrument-control { };
+
+    io = callPackage ../development/octave-modules/io {
+      inherit (octave) enableJava;
+    };
+
+    interval = callPackage ../development/octave-modules/interval { };
+
+    level-set = callPackage ../development/octave-modules/level-set { };
+
+    linear-algebra = callPackage ../development/octave-modules/linear-algebra { };
+
+    lssa = callPackage ../development/octave-modules/lssa { };
+
+    ltfat = callPackage ../development/octave-modules/ltfat {
+      inherit (octave) fftw fftwSinglePrec portaudio jdk;
+      inherit (pkgs) fftwFloat fftwLongDouble;
+    };
+
+    mapping = callPackage ../development/octave-modules/mapping { };
+
+    matgeom = callPackage ../development/octave-modules/matgeom { };
+
+    miscellaneous = callPackage ../development/octave-modules/miscellaneous { };
+
+    msh = callPackage ../development/octave-modules/msh {
+      # PLACEHOLDER until KarlJoad gets dolfin packaged.
+      dolfin = null;
+    };
+
+    mvn = callPackage ../development/octave-modules/mvn { };
+
+    nan = callPackage ../development/octave-modules/nan { };
+
+    ncarray = callPackage ../development/octave-modules/ncarray { };
+
+    netcdf = callPackage ../development/octave-modules/netcdf {
+      inherit (pkgs) netcdf;
+    };
+
+    nurbs = callPackage ../development/octave-modules/nurbs { };
+
+    ocl = callPackage ../development/octave-modules/ocl { };
+
+    octclip = callPackage ../development/octave-modules/octclip { };
+
+    octproj = callPackage ../development/octave-modules/octproj { };
+
+    optics = callPackage ../development/octave-modules/optics { };
+
+    optim = callPackage ../development/octave-modules/optim { };
+
+    optiminterp = callPackage ../development/octave-modules/optiminterp { };
+
+    parallel = callPackage ../development/octave-modules/parallel { };
+
+    quaternion = callPackage ../development/octave-modules/quaternion { };
+
+    queueing = callPackage ../development/octave-modules/queueing { };
+
+    signal = callPackage ../development/octave-modules/signal { };
+
+    sockets = callPackage ../development/octave-modules/sockets { };
+
+    sparsersb = callPackage ../development/octave-modules/sparsersb { };
+
+    stk = callPackage ../development/octave-modules/stk { };
+
+    splines = callPackage ../development/octave-modules/splines { };
+
+    statistics = callPackage ../development/octave-modules/statistics { };
+
+    strings = callPackage ../development/octave-modules/strings { };
+
+    struct = callPackage ../development/octave-modules/struct { };
+
+    symbolic = callPackage ../development/octave-modules/symbolic {
+      inherit (octave) python;
+    };
+
+    tisean = callPackage ../development/octave-modules/tisean { };
+
+    tsa = callPackage ../development/octave-modules/tsa { };
+
+    vibes = callPackage ../development/octave-modules/vibes {
+      vibes = null;
+      # TODO: Need to package vibes:
+      # https://github.com/ENSTABretagneRobotics/VIBES
+    };
+
+    video = callPackage ../development/octave-modules/video { };
+
+    vrml = callPackage ../development/octave-modules/vrml {
+      freewrl = null;
+    };
+
+    windows = callPackage ../development/octave-modules/windows { };
+
+    zeromq = callPackage ../development/octave-modules/zeromq {
+      inherit (pkgs) zeromq autoreconfHook;
+    };
+
+  })
diff --git a/nixpkgs/pkgs/top-level/packages-config.nix b/nixpkgs/pkgs/top-level/packages-config.nix
new file mode 100644
index 000000000000..c33f8b2dc2aa
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/packages-config.nix
@@ -0,0 +1,52 @@
+# Used in the generation of package search database.
+{
+  # Ensures no aliases are in the results.
+  allowAliases = false;
+
+  # Enable recursion into attribute sets that nix-env normally doesn't look into
+  # so that we can get a more complete picture of the available packages for the
+  # purposes of the index.
+  packageOverrides = super: with super; lib.mapAttrs (_: set: recurseIntoAttrs set) {
+    inherit (super)
+      apacheHttpdPackages
+      atomPackages
+      fdbPackages
+      fusePackages
+      gns3Packages
+      idrisPackages
+      nodePackages
+      nodePackages_latest
+      platformioPackages
+      quicklispPackagesClisp
+      quicklispPackagesSBCL
+      rPackages
+      roundcubePlugins
+      sconsPackages
+      sourceHanPackages
+      steamPackages
+      ut2004Packages
+      zabbix40
+      zabbix50
+      zeroadPackages
+    ;
+
+    haskellPackages = super.haskellPackages // {
+      # mesos, which this depends on, has been removed from nixpkgs. We are keeping
+      # the error message for now, so users will get an error message they can make
+      # sense of, but need to work around it here.
+      # TODO(@sternenseemann): remove this after branch-off of 22.05, along with the
+      # override in configuration-nix.nix
+      hs-mesos = null;
+    };
+
+    # Make sure haskell.compiler is included, so alternative GHC versions show up,
+    # but don't add haskell.packages.* since they contain the same packages (at
+    # least by name) as haskellPackages.
+    haskell = super.haskell // {
+      compiler = recurseIntoAttrs super.haskell.compiler;
+    };
+
+    # This is an alias which we disallow by default; explicitly allow it
+    emacs27Packages = emacs27.pkgs;
+  };
+}
diff --git a/nixpkgs/pkgs/top-level/perl-packages.nix b/nixpkgs/pkgs/top-level/perl-packages.nix
new file mode 100644
index 000000000000..2a5d49070183
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/perl-packages.nix
@@ -0,0 +1,25475 @@
+/* This file defines the composition for CPAN (Perl) packages.  It has
+   been factored out of all-packages.nix because there are so many of
+   them.  Also, because most Nix expressions for CPAN packages are
+   trivial, most are actually defined here.  I.e. there's no function
+   for each package in a separate file: the call to the function would
+   be almost as much code as the function itself. */
+
+{ config
+, stdenv, lib, buildPackages, pkgs
+, fetchurl, fetchgit, fetchpatch, fetchFromGitHub, fetchFromGitLab
+, perl, overrides, buildPerl, shortenPerlShebang
+, nixosTests
+}:
+
+# cpan2nix assumes that perl-packages.nix will be used only with perl 5.30.3 or above
+assert lib.versionAtLeast perl.version "5.30.3";
+let
+  inherit (lib) maintainers teams;
+  self = _self // (overrides pkgs);
+  _self = with self; {
+
+  inherit perl;
+  perlPackages = self;
+
+  callPackage = pkgs.newScope self;
+
+  # Check whether a derivation provides a perl module.
+  hasPerlModule = drv: drv ? perlModule ;
+
+  requiredPerlModules = drvs: let
+    modules = lib.filter hasPerlModule drvs;
+  in lib.unique ([perl] ++ modules ++ lib.concatLists (lib.catAttrs "requiredPerlModules" modules));
+
+  # Convert derivation to a perl module.
+  toPerlModule = drv:
+    drv.overrideAttrs( oldAttrs: {
+      # Use passthru in order to prevent rebuilds when possible.
+      passthru = (oldAttrs.passthru or {}) // {
+        perlModule = perl;
+        requiredPerlModules = requiredPerlModules drv.propagatedBuildInputs;
+      };
+    });
+
+  buildPerlPackage = callPackage ../development/perl-modules/generic {
+    inherit buildPerl;
+  };
+
+  # Helper functions for packages that use Module::Build to build.
+  buildPerlModule = args:
+    buildPerlPackage ({
+      buildPhase = ''
+        runHook preBuild
+        perl Build.PL --prefix=$out; ./Build build
+        runHook postBuild
+      '';
+      installPhase = ''
+        runHook preInstall
+        ./Build install
+        runHook postInstall
+      '';
+      checkPhase = ''
+        runHook preCheck
+        ./Build test
+        runHook postCheck
+      '';
+    } // args // {
+      preConfigure = ''
+        touch Makefile.PL
+        ${args.preConfigure or ""}
+      '';
+      buildInputs = (args.buildInputs or []) ++ [ ModuleBuild ];
+    });
+
+  /* Construct a perl search path (such as $PERL5LIB)
+
+     Example:
+       pkgs = import <nixpkgs> { }
+       makePerlPath [ pkgs.perlPackages.libnet ]
+       => "/nix/store/n0m1fk9c960d8wlrs62sncnadygqqc6y-perl-Net-SMTP-1.25/lib/perl5/site_perl"
+  */
+  makePerlPath = lib.makeSearchPathOutput "lib" perl.libPrefix;
+
+  /* Construct a perl search path recursively including all dependencies (such as $PERL5LIB)
+
+     Example:
+       pkgs = import <nixpkgs> { }
+       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 (lib.misc.closePropagation deps);
+
+
+  ack = buildPerlPackage {
+    pname = "ack";
+    version = "3.5.0";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/ack-v3.5.0.tar.gz";
+      sha256 = "sha256-ZgU+iE6AM4egLd7g1oq/KhAjn6tlQ2TaszKHMJpyVSE=";
+    };
+
+    outputs = ["out" "man"];
+
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    propagatedBuildInputs = [ FileNext ];
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/ack
+    '';
+
+    # tests fails on nixos and hydra because of different purity issues
+    doCheck = false;
+
+    meta = with lib; {
+      description = "A grep-like tool tailored to working with large trees of source code";
+      homepage    = "https://beyondgrep.com";
+      license     = licenses.artistic2;
+      maintainers = with maintainers; [ lovek323 ];
+    };
+  };
+
+  ActionCircuitBreaker = buildPerlPackage {
+    pname = "Action-CircuitBreaker";
+    version = "0.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HANGY/Action-CircuitBreaker-0.1.tar.gz";
+      sha256 = "3f8f5d726fae537ab336e00a6819ae4a8596e4c5f243e772a536ef2eb6e606b1";
+    };
+    buildInputs = [ ActionRetry TryTiny ];
+    propagatedBuildInputs = [ Moo ];
+    meta = {
+      homepage = "https://github.com/hangy/Action-CircuitBreaker";
+      description = "Module to try to perform an action, with an option to suspend execution after a number of failures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ActionRetry = buildPerlPackage {
+    pname = "Action-Retry";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAMS/Action-Retry-0.24.tar.gz";
+      sha256 = "a3759742c5bef2d1975ab73d35499d8113324919b24936130255cff07d0294f7";
+    };
+    propagatedBuildInputs = [ MathFibonacci ModuleRuntime Moo ];
+    meta = {
+      description = "Module to try to perform an action, with various ways of retrying and sleeping between retries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlgorithmAnnotate = buildPerlPackage {
+    pname = "Algorithm-Annotate";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLKAO/Algorithm-Annotate-0.10.tar.gz";
+      sha256 = "1y92k4nqkscfwpriv8q7c90rjfj85lvwq1k96niv2glk8d37dcf9";
+    };
+    propagatedBuildInputs = [ AlgorithmDiff ];
+  };
+
+  AlgorithmC3 = buildPerlPackage {
+    pname = "Algorithm-C3";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Algorithm-C3-0.11.tar.gz";
+      sha256 = "02ck52cf0yyk57354rd1rp5l0kbfwi1pvg2lh3jadvjxfrkq9x5a";
+    };
+    meta = {
+      description = "A module for merging hierarchies using the C3 algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlgorithmCheckDigits = buildPerlModule {
+    pname = "Algorithm-CheckDigits";
+    version = "1.3.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAMAWE/Algorithm-CheckDigits-v1.3.5.tar.gz";
+      sha256 = "a956d0517180d6d9042f47d73aa6a2728b75fcbd546940d2dbe0a7e7cf428f73";
+    };
+    buildInputs = [ ProbePerl ];
+    meta = {
+      description = "Perl extension to generate and test check digits";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlgorithmDiff = buildPerlPackage {
+    pname = "Algorithm-Diff";
+    version = "1.1903";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TY/TYEMQ/Algorithm-Diff-1.1903.tar.gz";
+      sha256 = "0l8pk7ziz72d022hsn4xldhhb9f5649j5cgpjdibch0xng24ms1h";
+    };
+    buildInputs = [ pkgs.unzip ];
+  };
+
+  AlgorithmLCSS = buildPerlPackage {
+    pname = "Algorithm-LCSS";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JF/JFREEMAN/Algorithm-LCSS-0.01.tar.gz";
+      sha256 = "0y0zc3sq283zpv67vy7a3h3dyvjn5svjxwknanmp38a2g36fyz3i";
+    };
+    propagatedBuildInputs = [ AlgorithmDiff ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AlgorithmMerge = buildPerlPackage {
+    pname = "Algorithm-Merge";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JS/JSMITH/Algorithm-Merge-0.08.tar.gz";
+      sha256 = "1kqn13wd0lfjrf6h19b9kgdqqwp7k2d9yfq5i0wvii0xi8jqh1lw";
+    };
+    propagatedBuildInputs = [ AlgorithmDiff ];
+  };
+
+  AlienBaseModuleBuild = buildPerlModule {
+    pname = "Alien-Base-ModuleBuild";
+    version = "1.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-Base-ModuleBuild-1.15.tar.gz";
+      sha256 = "13c9432cf41b34cb14df2454a03e540e2bd5dc9eb9c82824b6ad0f4c67793afd";
+    };
+    buildInputs = [ Test2Suite ];
+    propagatedBuildInputs = [ AlienBuild ArchiveExtract CaptureTiny Filechdir PathTiny ShellConfigGenerate ShellGuess SortVersions URI ];
+    meta = {
+      homepage = "https://metacpan.org/pod/Alien::Base::ModuleBuild";
+      description = "A Module::Build subclass for building Alien:: modules and their libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlienBuild = buildPerlPackage {
+    pname = "Alien-Build";
+    version = "2.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-Build-2.37.tar.gz";
+      sha256 = "0lgdr4d4hpv9q6i8lzs5lrilrwj8zm1cxzxwdgvl69j8k2zbq01h";
+    };
+    propagatedBuildInputs = [ CaptureTiny FFICheckLib FileWhich Filechdir PathTiny PkgConfig ];
+    buildInputs = [ DevelHide Test2Suite ];
+    meta = {
+      description = "Build external dependencies for use in CPAN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlienGMP = buildPerlPackage {
+    pname = "Alien-GMP";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-GMP-1.16.tar.gz";
+      sha256 = "199x24pl6jnqshgnl066lhdf2fkqa6l1fml9g3qn5grmwn7d8309";
+    };
+    propagatedBuildInputs = [ AlienBuild ];
+    buildInputs = [ pkgs.gmp Alienm4 DevelChecklib IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
+    meta = {
+      description = "Alien package for the GNU Multiple Precision library.";
+      license = with lib.licenses; [ lgpl3Plus ];
+    };
+  };
+
+  AlienLibGumbo = buildPerlModule {
+    pname = "Alien-LibGumbo";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RUZ/Alien-LibGumbo-0.05.tar.gz";
+      sha256 = "0fbe916ab11f680e5c28cd1ac800372323e2a0e06affc6c8b36279fc64d76517";
+    };
+    buildInputs = [ AlienBaseModuleBuild ];
+    propagatedBuildInputs = [ AlienBuild FileShareDir PathClass ];
+    meta = {
+      description = "Gumbo parser library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.AlienLibGumbo.x86_64-darwin
+    };
+  };
+
+  AlienLibxml2 = buildPerlPackage {
+    pname = "Alien-Libxml2";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.17.tar.gz";
+      sha256 = "1cwdqspbq0r0bmw0079z4qzc7chs5aw6jdf3699nxhxmy1255d3k";
+    };
+    propagatedBuildInputs = [ AlienBuild ];
+    buildInputs = [ pkgs.libxml2 MojoDOM58 SortVersions Test2Suite URI ];
+    meta = {
+      description = "Install the C libxml2 library on your system";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  aliased = buildPerlModule {
+    pname = "aliased";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/aliased-0.34.tar.gz";
+      sha256 = "1syyqzy462501kn5ma9gl6xbmcahqcn4qpafhsmpz0nd0x2m4l63";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  asa = buildPerlPackage {
+     pname = "asa";
+     version = "1.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/asa-1.04.tar.gz";
+       sha256 = "0pk783s1h2f45zbmm6a62yfgy71w4sqh8ppgs4cyxfikwxs3p0z5";
+     };
+     meta = {
+       description = "Lets your class/object say it works like something else";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  AlienSDL = buildPerlModule {
+    pname = "Alien-SDL";
+    version = "1.446";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FROGGS/Alien-SDL-1.446.tar.gz";
+      sha256 = "c9aa2c9dc3c63d89773c7d7203f2a46d1b924d0c72d9f801af147a3dc8bc512a";
+    };
+    patches = [ ../development/perl-modules/alien-sdl.patch ];
+
+    installPhase = "./Build install --prefix $out";
+
+    SDL_INST_DIR = pkgs.SDL.dev;
+    buildInputs = [ pkgs.SDL ArchiveExtract ArchiveZip TextPatch ];
+    propagatedBuildInputs = [ CaptureTiny FileShareDir FileWhich ];
+
+    meta = {
+      description = "Get, Build and Use SDL libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AlienTidyp = buildPerlModule {
+    pname = "Alien-Tidyp";
+    version = "1.4.7";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KM/KMX/Alien-Tidyp-v1.4.7.tar.gz";
+      sha256 = "0raapwp4155lqag1kzhsd20z4if10hav9wx4d7mc1xpvf7dcnr5r";
+    };
+
+    buildInputs = [ ArchiveExtract ];
+    TIDYP_DIR = pkgs.tidyp;
+    propagatedBuildInputs = [ FileShareDir ];
+  };
+
+  AlienWxWidgets = buildPerlModule {
+    pname = "Alien-wxWidgets";
+    version = "0.69";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MD/MDOOTSON/Alien-wxWidgets-0.69.tar.gz";
+      sha256 = "0jg2dmkzhj03f6b0vmv597yryfw9cclsdn9ynvvlrzzgpd5lw8jk";
+    };
+    propagatedBuildInputs = [ pkgs.pkg-config pkgs.gtk2 pkgs.wxGTK30 ModulePluggable ];
+    buildInputs = [ LWPProtocolHttps ];
+  };
+
+  Alienm4 = buildPerlPackage {
+    pname = "Alien-m4";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-m4-0.19.tar.gz";
+      sha256 = "1xnh8qa99dcvqcqzbpy0s5jrxvn7wa5ydz3lfd56n358l5jfzns9";
+    };
+    propagatedBuildInputs = [ AlienBuild ];
+    buildInputs = [ pkgs.gnum4 Alienpatch IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
+    meta = {
+      description = "Find or build GNU m4";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Alienpatch = buildPerlPackage {
+    pname = "Alien-patch";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Alien-patch-0.15.tar.gz";
+      sha256 = "1l00mq56596wn09nn7fv552j2aa7sgh46bvx5xlncsnrn8jp5mpy";
+    };
+    propagatedBuildInputs = [ AlienBuild ];
+    buildInputs = [ IOSocketSSL MojoDOM58 NetSSLeay SortVersions Test2Suite URI ];
+    meta = {
+      description = "Find or build patch";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AltCryptRSABigInt = buildPerlPackage {
+    pname = "Alt-Crypt-RSA-BigInt";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANAJ/Alt-Crypt-RSA-BigInt-0.06.tar.gz";
+      sha256 = "76f434cab36999cdf09811345bb39d6b7cbed7e085b02338328c7f46e08b38f3";
+    };
+    propagatedBuildInputs = [ ClassLoader ConvertASCIIArmour DataBuffer DigestMD2 MathBigIntGMP MathPrimeUtil SortVersions TieEncryptedHash ];
+    meta = {
+      homepage = "https://github.com/danaj/Alt-Crypt-RSA-BigInt";
+      description = "RSA public-key cryptosystem, using Math::BigInt";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AnyEvent = buildPerlPackage {
+    pname = "AnyEvent";
+    version = "7.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/AnyEvent-7.17.tar.gz";
+      sha256 = "50beea689c098fe4aaeb83806c40b9fe7f946d5769acf99f849f099091a4b985";
+    };
+    buildInputs = [ CanaryStability ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventAIO = buildPerlPackage {
+    pname ="AnyEvent-AIO";
+    version = "1.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/AnyEvent-AIO-1.1.tar.gz";
+      sha256 = "0svh0mlp17g0ypq8bgs3h3axg8v7h0z45hryacgn6q8mcj65n43b";
+    };
+    propagatedBuildInputs = [ AnyEvent IOAIO ];
+    meta = {
+      description = "Truly asynchronous file and directory I/O";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventBDB = buildPerlPackage rec {
+    pname = "AnyEvent-BDB";
+    version = "1.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/${pname}-${version}.tar.gz";
+      sha256 = "93e36010940464626e5f31b9faedd65e12ed8d1abf16ce052febf23f495aefc8";
+    };
+    buildInputs = [ CanaryStability ];
+    propagatedBuildInputs = [ BDB AnyEvent ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventCacheDNS = buildPerlModule {
+    pname = "AnyEvent-CacheDNS";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PO/POTYL/AnyEvent-CacheDNS-0.08.tar.gz";
+      sha256 = "41c1faf183b61806b55889ceea1237750c1f61b9ce2735fdf33dc05536712dae";
+    };
+    propagatedBuildInputs = [ AnyEvent ];
+    doCheck = false; # does an DNS lookup
+    meta = {
+      homepage = "https://github.com/potyl/perl-AnyEvent-CacheDNS";
+      description = "Simple DNS resolver with caching";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventFastPing = buildPerlPackage {
+    pname = "AnyEvent-FastPing";
+    version = "2.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/AnyEvent-FastPing-2.1.tar.gz";
+      sha256 = "0b3ha864nw0qk22ybhzfgz0r0p69iyj01bi500x9hp6kga7ip4p5";
+    };
+    propagatedBuildInputs = [ AnyEvent commonsense ];
+    meta = {
+    };
+  };
+
+  AnyEventHTTP = buildPerlPackage {
+    pname = "AnyEvent-HTTP";
+    version = "2.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/AnyEvent-HTTP-2.25.tar.gz";
+      sha256 = "5cfa53416124176f6f4cd32b00ea8ca79a2d5df51258683989cd04fe86e25013";
+    };
+    propagatedBuildInputs = [ AnyEvent commonsense ];
+  };
+
+  AnyEventI3 = buildPerlPackage {
+    pname = "AnyEvent-I3";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTPLBG/AnyEvent-I3-0.17.tar.gz";
+      sha256 = "5382c984c9f138395f29f0c00af81aa0c8f4b765582055c73ede4b13f04a6d63";
+    };
+    propagatedBuildInputs = [ AnyEvent JSONXS ];
+    meta = {
+      description = "Communicate with the i3 window manager";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventIRC = buildPerlPackage rec {
+    pname = "AnyEvent-IRC";
+    version = "0.97";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EL/ELMEX/${pname}-${version}.tar.gz";
+      sha256 = "bfd7cf645c3c8c611471057128611447e20f1adf01516c69624cbd8bc77f5bf0";
+    };
+    propagatedBuildInputs = [ AnyEvent ObjectEvent commonsense ];
+    meta = {
+      description = "An event based IRC protocol client API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyEventRabbitMQ = buildPerlPackage {
+    pname = "AnyEvent-RabbitMQ";
+    version = "1.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DL/DLAMBLEY/AnyEvent-RabbitMQ-1.22.tar.gz";
+      sha256 = "98c52a1fe700710f3e5bc55a38b25de625e9b2e8341d278dcf9e1b3f3d19acee";
+    };
+    buildInputs = [ FileShareDirInstall TestException ];
+    propagatedBuildInputs = [ AnyEvent DevelGlobalDestruction FileShareDir ListMoreUtils NetAMQP Readonly namespaceclean ];
+    meta = {
+      description = "An asynchronous and multi channel Perl AMQP client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AnyMoose = buildPerlPackage {
+    pname = "Any-Moose";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Any-Moose-0.27.tar.gz";
+      sha256 = "0dc55mpayrixwx8dwql0vj0jalg4rlb3k64rprc84bl0z8vkx9m8";
+    };
+    propagatedBuildInputs = [ Moose Mouse ];
+  };
+
+  AnyURIEscape = buildPerlPackage {
+    pname = "Any-URI-Escape";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/Any-URI-Escape-0.01.tar.gz";
+      sha256 = "0k4c20bmw32yxksgkc2i44j4vfmzhqcqrq36pv0ab3qhkzn3r0g3";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Load URI::Escape::XS preferentially over URI::Escape";
+    };
+  };
+
+  URIEscapeXS = buildPerlPackage {
+    pname = "URI-Escape-XS";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANKOGAI/URI-Escape-XS-0.14.tar.gz";
+      sha256 = "c39ac50c6c2b831ae4bf08692e6ca5d4a3f9c57dc4d7f9c4cb0663e2c86c2759";
+    };
+    meta = {
+      description = "Drop-In replacement for URI::Escape";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ApacheAuthCookie = buildPerlPackage {
+    pname = "Apache-AuthCookie";
+    version = "3.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHOUT/Apache-AuthCookie-3.30.tar.gz";
+      sha256 = "1f71b94d3d55a950a4b32dae4e90f6e76c8157508a7e2aee50621b179aadb1fb";
+    };
+    buildInputs = [ ApacheTest ];
+    propagatedBuildInputs = [ ClassLoad HTTPBody HashMultiValue WWWFormUrlEncoded ];
+
+    # Fails because /etc/protocols is not available in sandbox and make
+    # getprotobyname('tcp') in ApacheTest fail.
+    doCheck = !stdenv.isLinux;
+
+    meta = {
+      homepage = "https://github.com/mschout/apache-authcookie";
+      description = "Perl Authentication and Authorization via cookies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ApacheDB = buildPerlPackage {
+    pname = "Apache-DB";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LZ/LZE/Apache-DB-0.18.tar.gz";
+      sha256 = "6527f4f1598270bea07bec787b71bdf0ec2b572548be7438cf74f2b9a600bfed";
+    };
+    meta = {
+      description = "Run the interactive Perl debugger under mod_perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ApacheLogFormatCompiler = buildPerlModule {
+    pname = "Apache-LogFormat-Compiler";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZEBURO/Apache-LogFormat-Compiler-0.36.tar.gz";
+      sha256 = "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l";
+    };
+    buildInputs = [ HTTPMessage ModuleBuildTiny TestMockTime TestRequires TryTiny URI ];
+    propagatedBuildInputs = [ POSIXstrftimeCompiler ];
+    # We cannot change the timezone on the fly.
+    prePatch = "rm t/04_tz.t";
+    meta = {
+      homepage = "https://github.com/kazeburo/Apache-LogFormat-Compiler";
+      description = "Compile a log format string to perl-code";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ApacheSession = buildPerlModule {
+    pname = "Apache-Session";
+    version = "1.94";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Apache-Session-1.94.tar.gz";
+      sha256 = "17z9cdsk3vxah1dlix1pi68dlnjplymf4bdqwn50psdgk5lbfsgy";
+    };
+    buildInputs = [ TestDeep TestException ];
+    meta = {
+      description = "A persistence framework for session data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ApacheTest = buildPerlPackage {
+    pname = "Apache-Test";
+    version = "1.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/Apache-Test-1.42.tar.gz";
+      sha256 = "1sxk7dmpg3ib1dkl58ddh7zffnv5danwba7qxp82k54agmyz1086";
+    };
+    doCheck = false;
+    meta = {
+      description = "Test.pm wrapper with helpers for testing Apache";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  AppCLI = buildPerlPackage {
+    pname = "App-CLI";
+    version = "0.50";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PT/PTC/App-CLI-0.50.tar.gz";
+      sha256 = "0ick5agl02rx2pjfxl97d0f9qksy8pjn0asmwm3gn6dm7a1zblsi";
+    };
+    propagatedBuildInputs = [ CaptureTiny ClassLoad ];
+    buildInputs = [ TestKwalitee TestPod ];
+  };
+
+  AppClusterSSH = buildPerlModule {
+    pname = "App-ClusterSSH";
+    version = "4.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DU/DUNCS/App-ClusterSSH-4.16.tar.gz";
+      sha256 = "0y2mzprv47ff4sig2fkvd10jwz2h4x6srncbvx528mk8c2mvhz0v";
+    };
+    propagatedBuildInputs = [ ExceptionClass Tk X11ProtocolOther XMLSimple ];
+    buildInputs = [ DataDump FileWhich Readonly TestDifferences TestTrap ];
+    preCheck = "rm t/30cluster.t"; # do not run failing tests
+    postInstall = ''
+      mkdir -p $out/share/bash-completion/completions
+      mv $out/bin/clusterssh_bash_completion.dist \
+         $out/share/bash-completion/completions/clusterssh_bash_completion
+      substituteInPlace $out/share/bash-completion/completions/clusterssh_bash_completion \
+         --replace '/bin/true' '${pkgs.coreutils}/bin/true' \
+         --replace 'grep' '${pkgs.gnugrep}/bin/grep' \
+         --replace 'sed' '${pkgs.gnused}/bin/sed'
+    '';
+    meta = {
+      description = "A container for functions of the ClusterSSH programs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/duncs/clusterssh/wiki";
+    };
+  };
+
+  AppCmd = buildPerlPackage {
+    pname = "App-Cmd";
+    version = "0.331";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/App-Cmd-0.331.tar.gz";
+      sha256 = "4a5d3df0006bd278880d01f4957aaa652a8f91fe8f66e93adf70fba0c3ecb680";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ CaptureTiny ClassLoad GetoptLongDescriptive IOTieCombine ModulePluggable StringRewritePrefix ];
+    meta = {
+      homepage = "https://github.com/rjbs/App-Cmd";
+      description = "Write command line apps with less suffering";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AppConfig = buildPerlPackage {
+    pname = "AppConfig";
+    version = "1.71";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/AppConfig-1.71.tar.gz";
+      sha256 = "03vvi3mk4833mx2c6dkm9zhvakf02mb2b7wz9pk9xc7c4mq04xqi";
+    };
+    meta = {
+      description = "A bundle of Perl5 modules for reading configuration files and parsing command line arguments";
+    };
+    buildInputs = [ TestPod ];
+  };
+
+  AppFatPacker = buildPerlPackage {
+     pname = "App-FatPacker";
+     version = "0.010008";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MS/MSTROUT/App-FatPacker-0.010008.tar.gz";
+       sha256 = "1kzcbpsf1p7ww45d9fl2w0nfn5jj5pz0r0c649c1lrj5r1nv778j";
+     };
+     meta = {
+       description = "pack your dependencies onto your script file";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  Appcpanminus = buildPerlPackage {
+    pname = "App-cpanminus";
+    version = "1.7045";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7045.tar.gz";
+      sha256 = "1779w07zxlgfk35s24ksr7k9azd5yl8sbb48y1aaph7y4gf4lkmc";
+    };
+    # Use TLS endpoints for downloads and metadata by default
+    preConfigure = ''
+      substituteInPlace bin/cpanm \
+        --replace http://www.cpan.org https://www.cpan.org \
+        --replace http://backpan.perl.org https://backpan.perl.org \
+        --replace http://fastapi.metacpan.org https://fastapi.metacpan.org \
+        --replace http://cpanmetadb.plackperl.org https://cpanmetadb.plackperl.org
+    '';
+    propagatedBuildInputs = [ IOSocketSSL ];
+    meta = {
+      homepage = "https://github.com/miyagawa/cpanminus";
+      description = "Get, unpack, build and install modules from CPAN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Appcpm = buildPerlModule {
+    pname = "App-cpm";
+    version = "0.997006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/App-cpm-0.997006.tar.gz";
+      sha256 = "1mh4bg141qbch0vdvir2l9533zzm3k8hnqx36iwciwzhvpd9hl9s";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ CPAN02PackagesSearch CPANCommonIndex CPANDistnameInfo ClassTiny CommandRunner ExtUtilsInstall ExtUtilsInstallPaths FileCopyRecursive Filepushd HTTPTinyish MenloLegacy Modulecpmfile ModuleCPANfile ParsePMFile ParallelPipes locallib ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  Applify = buildPerlPackage {
+    pname = "Applify";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Applify-0.22.tar.gz";
+      sha256 = "0y644rr7gl49awn27xj556q9i86fddkkn26gnfn52wm19d7aa94a";
+    };
+    meta = {
+      homepage = "https://github.com/jhthorsen/applify";
+      description = "Write object oriented scripts with ease";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AppMusicChordPro = buildPerlPackage {
+    pname = "App-Music-ChordPro";
+    version = "0.977";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/App-Music-ChordPro-0.977.tar.gz";
+      sha256 = "0ggip43cddi5f6rylb07f56dhkfhbcbm621lvcnjfadnn9lrbwqh";
+    };
+    buildInputs = [ PodParser ];
+    propagatedBuildInputs = [ AppPackager FileLoadLines IOString ImageInfo PDFAPI2 StringInterpolateNamed TextLayout ]
+      ++ 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 = "https://www.chordpro.org";
+      description = "A lyrics and chords formatting program";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AppPackager =  buildPerlPackage {
+    pname = "App-Packager";
+    version = "1.430.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/App-Packager-1.430.1.tar.gz";
+      sha256 = "57f4d014458387f9e2ed2dfd8615d1e2545b8a6504b10af22486578d8be374a3";
+    };
+    meta = {
+      description = "Abstraction for Packagers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Appperlbrew = buildPerlModule {
+    pname = "App-perlbrew";
+    version = "0.89";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GU/GUGOD/App-perlbrew-0.89.tar.gz";
+      sha256 = "00krymnsvz5qx7fkn4hpfqlgrqmbkbf45f9jr3vl4yqcyrsmiyhg";
+    };
+    buildInputs = [ pkgs.curl FileWhich IOAll ModuleBuildTiny PathClass TestException TestNoWarnings TestOutput TestSpec TestTempDirTiny ];
+    propagatedBuildInputs = [ CPANPerlReleases CaptureTiny DevelPatchPerl PodParser locallib ];
+
+    doCheck = false;
+
+    meta = {
+      description = "Manage perl installations in your $HOME";
+      license = lib.licenses.mit;
+    };
+  };
+
+  ArchiveAnyLite = buildPerlPackage {
+     pname = "Archive-Any-Lite";
+     version = "0.11";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Archive-Any-Lite-0.11.tar.gz";
+       sha256 = "0w2i50fd81ip674zmnrb15nadw162fdpiw4rampbd94k74jqih8m";
+     };
+     propagatedBuildInputs = [ ArchiveZip ];
+     buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
+     meta = {
+       description = "simple CPAN package extractor";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  AppSqitch = buildPerlModule {
+    version = "1.1.0";
+    pname = "App-Sqitch";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-v1.1.0.tar.gz";
+      sha256 = "ee146cd75d6300837e6ca559bb0bde247d42123c96b2c5d4b2800f38d3e3d1ab";
+    };
+    buildInputs = [ CaptureTiny TestDeep TestDir TestException TestFile TestFileContents TestMockModule TestMockObject TestNoWarnings TestWarn ];
+    propagatedBuildInputs = [ Clone ConfigGitLike DBI DateTime EncodeLocale HashMerge IOPager IPCRun3 IPCSystemSimple ListMoreUtils PathClass PerlIOutf8_strict PodParser StringFormatter StringShellQuote TemplateTiny Throwable TypeTiny URIdb libintl-perl ];
+    doCheck = false;  # Can't find home directory.
+    meta = {
+      homepage = "https://sqitch.org/";
+      description = "Sane database change management";
+      license = lib.licenses.mit;
+    };
+  };
+
+  AppSt = buildPerlPackage {
+    pname = "App-St";
+    version = "1.1.4";
+    src = fetchurl {
+      url = "https://github.com/nferraz/st/archive/v1.1.4.tar.gz";
+      sha256 = "1f4bqm4jiazcxgzzja1i48671za96621k0s3ln87cdacgvv1can0";
+    };
+    postInstall =
+      ''
+        ($out/bin/st --help || true) | grep Usage
+      '';
+    meta = {
+      description = "A command that computes simple statistics";
+      license = lib.licenses.mit;
+      homepage = "https://github.com/nferraz/st";
+      maintainers = [ maintainers.eelco ];
+    };
+  };
+
+  AttributeParamsValidate = buildPerlPackage {
+    pname = "Attribute-Params-Validate";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Attribute-Params-Validate-1.21.tar.gz";
+      sha256 = "586b939ceffdb37188b7c461dd1a8f9f35695184c8703b05c35f6d508c8090f5";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ParamsValidate ];
+    doCheck = false;
+    meta = {
+      description = "Define validation through subroutine attributes";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  ArrayCompare = buildPerlModule {
+    pname = "Array-Compare";
+    version = "3.0.7";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVECROSS/Array-Compare-v3.0.7.tar.gz";
+      sha256 = "1p2kv4p2p5i6a665ax4b8iq1wal4x0g259yv32cc2ypbk7v11qs4";
+    };
+
+    buildInputs = [ TestNoWarnings ];
+    propagatedBuildInputs = [ Moo TypeTiny ];
+  };
+
+  ArrayDiff = buildPerlPackage {
+     pname = "Array-Diff";
+     version = "0.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Array-Diff-0.09.tar.gz";
+       sha256 = "0xsh8k312spzl90xds075qprcaz4r0b93g1bgi9l3rv1k0p3j1l0";
+     };
+     propagatedBuildInputs = [ AlgorithmDiff ClassAccessor ];
+     meta = {
+       description = "Find the differences between two arrays";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ArrayFIFO = buildPerlPackage {
+    pname = "Array-FIFO";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBURKE/Array-FIFO-0.13.tar.gz";
+      sha256 = "be2aeb5f5a9af1a96f0033508a569ca93ad19ad15dc7c6b998e6d7bc740c66f7";
+    };
+    buildInputs = [ TestDeep TestSpec TestTrap ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/dwburke/perl-Array-FIFO";
+      description = "A Simple limitable FIFO array, with sum and average methods";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  AsyncPing = buildPerlPackage {
+    pname = "AsyncPing";
+    version = "2016.1207";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XI/XINFWANG/AsyncPing-2016.1207.tar.gz";
+      sha256 = "0nn9k79gihzr9wfksi03jmdgc2ihsb4952ddz1v70xvsq7z9mgkg";
+    };
+    meta = {
+      description = "ping a huge number of servers in several seconds";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  ArchiveCpio = buildPerlPackage {
+    pname = "Archive-Cpio";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PI/PIXEL/Archive-Cpio-0.10.tar.gz";
+      sha256 = "246fb31669764e78336b2191134122e07c44f2d82dc4f37d552ab28f8668bed3";
+    };
+    meta = {
+      description = "Module for manipulations of cpio archives";
+      # See https://rt.cpan.org/Public/Bug/Display.html?id=43597#txn-569710
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ArchiveExtract = buildPerlPackage {
+    pname = "Archive-Extract";
+    version = "0.86";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Archive-Extract-0.86.tar.gz";
+      sha256 = "9acd09cdb8e8cf0b6d08210a3b80342300c89a359855319bf6b00c14c4aab687";
+    };
+    meta = {
+      description = "Generic archive extracting mechanism";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ArchiveTar = buildPerlPackage {
+    pname = "Archive-Tar";
+    version = "2.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Archive-Tar-2.38.tar.gz";
+      sha256 = "c5e48f53514288185830ced93bf3e16fbdf5cddce97ded1d1d8a9b0a21ea287b";
+    };
+    meta = {
+      description = "Manipulates TAR archives";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ArchiveTarWrapper = buildPerlPackage {
+     pname = "Archive-Tar-Wrapper";
+     version = "0.38";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AR/ARFREITAS/Archive-Tar-Wrapper-0.38.tar.gz";
+       sha256 = "0ymknznhk5ky7f835l0l5wfkx8kl0vfm0hvhijvgyp5rm3dd1wqr";
+     };
+     propagatedBuildInputs = [ FileWhich IPCRun LogLog4perl ];
+     meta = {
+       description = "API wrapper around the 'tar' utility";
+     };
+  };
+
+  ArchiveZip = buildPerlPackage {
+    pname = "Archive-Zip";
+    version = "1.68";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/Archive-Zip-1.68.tar.gz";
+      sha256 = "0l663s3a68p8r2qjy4pn1g05lx0i8js8wpz7qqln3bsvg1fihklq";
+    };
+    buildInputs = [ TestMockModule ];
+    meta = {
+      description = "Provide an interface to ZIP archive files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AstroFITSHeader = buildPerlModule rec {
+    pname = "Astro-FITS-Header";
+    version = "3.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TJ/TJENNESS/${pname}-${version}.tar.gz";
+      sha256 = "530d59ef0c0935f9862d187187a2d7583b12c639bb67db14f983322b161892d9";
+    };
+    meta = {
+      homepage = "https://github.com/timj/perl-Astro-FITS-Header/tree/master";
+      description = "Object-oriented interface to FITS HDUs";
+      license = lib.licenses.free;
+    };
+  };
+
+  AudioScan = buildPerlPackage {
+    pname = "Audio-Scan";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGRUNDMA/Audio-Scan-1.01.tar.gz";
+      sha256 = "0jk3djnk6yf0jsjh8qk3mj8bkx4avp6i4czcpr5xrbf7f41744l3";
+    };
+    buildInputs = [ pkgs.zlib TestWarn ];
+    NIX_CFLAGS_COMPILE = "-I${pkgs.zlib.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.zlib.out}/lib -lz";
+    meta = {
+      description = "Fast C metadata and tag reader for all common audio file formats";
+      license = lib.licenses.gpl2;
+    };
+  };
+
+  AuthenDecHpwd = buildPerlModule {
+    pname = "Authen-DecHpwd";
+    version = "2.007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Authen-DecHpwd-2.007.tar.gz";
+      sha256 = "f43a93bb02b41f7327d92f9e963b69505f67350a52e8f50796f98afc4fb3f177";
+    };
+    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 = lib.licenses.gpl1Plus;
+    };
+  };
+
+  AuthenHtpasswd = buildPerlPackage {
+    pname = "Authen-Htpasswd";
+    version = "0.171";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTROUT/Authen-Htpasswd-0.171.tar.gz";
+      sha256 = "0rw06hwpxg388d26l0jvirczx304f768ijvc20l4b2ll7xzg9ymm";
+    };
+    propagatedBuildInputs = [ ClassAccessor CryptPasswdMD5 DigestSHA1 IOLockedFile ];
+    meta = {
+      description = "Interface to read and modify Apache .htpasswd files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AuthenKrb5 = buildPerlModule {
+    pname = "Authen-Krb5";
+    version = "1.905";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IO/IOANR/Authen-Krb5-1.905.tar.gz";
+      sha256 = "0kgpl0x1qxq1p2ccxy8qqkrvqba2gq6aq6p931qnz9812nxh0yyp";
+    };
+    perlPreHook = "export LD=$CC";
+    propagatedBuildInputs = [ pkgs.libkrb5 ];
+    meta = {
+      description = "XS bindings for Kerberos 5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ DevelChecklib FileWhich PkgConfig ];
+  };
+
+  AuthenKrb5Admin = buildPerlPackage rec {
+    pname = "Authen-Krb5-Admin";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SJ/SJQUINNEY/Authen-Krb5-Admin-0.17.tar.gz";
+      sha256 = "5dd49cacd983efd61a8c3f1a56571bb73785eb155908b5d7bec97eed78df0c54";
+    };
+    propagatedBuildInputs = [ pkgs.krb5Full.dev AuthenKrb5 ];
+    # The following ENV variables are required by Makefile.PL to find
+    # programs in krb5Full.dev. It is not enough to just specify the
+    # path to krb5-config as this tool returns the prefix of krb5Full,
+    # which implies a working value for KRB5_LIBDIR, but not the others.
+    perlPreHook = ''
+      export KRB5_CONFTOOL=${pkgs.krb5Full.dev}/bin/krb5-config
+      export KRB5_BINDIR=${pkgs.krb5Full.dev}/bin
+      export KRB5_INCDIR=${pkgs.krb5Full.dev}/include
+    '';
+    # Tests require working Kerberos infrastructure so replace with a
+    # simple attempt to exercise the module.
+    checkPhase = ''
+      perl -I blib/lib -I blib/arch -MAuthen::Krb5::Admin -e 'print "1..1\nok 1\n"'
+    '';
+    meta = {
+      description = "Perl extension for MIT Kerberos 5 admin interface";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  AuthenModAuthPubTkt = buildPerlPackage {
+    pname = "Authen-ModAuthPubTkt";
+    version = "0.1.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGORDON/Authen-ModAuthPubTkt-0.1.1.tar.gz";
+      sha256 = "7996e1a42c51216003ccf03c4b5250286b4c55684257971851f5ece9161dc7dd";
+    };
+    propagatedBuildInputs = [ pkgs.openssl IPCRun3 ];
+    patchPhase = ''
+      sed -i 's|my $openssl_bin = "openssl";|my $openssl_bin = "${pkgs.openssl}/bin/openssl";|' lib/Authen/ModAuthPubTkt.pm
+      # -dss1 doesn't exist for dgst in openssl 1.1, -sha1 can also handle DSA keys now
+      sed -i 's|-dss1|-sha1|' lib/Authen/ModAuthPubTkt.pm
+    '';
+    meta = {
+      description = "Generate Tickets (Signed HTTP Cookies) for mod_auth_pubtkt protected websites";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AuthenOATH = buildPerlPackage {
+    pname = "Authen-OATH";
+    version = "2.0.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/Authen-OATH-2.0.1.tar.gz";
+      sha256 = "1a813dbdc05c3fbd9dd39dbcfd85e2cfb0ba3d0f652cf6b26ec83ab8146ddc77";
+    };
+    buildInputs = [ TestNeeds ];
+    propagatedBuildInputs = [ DigestHMAC Moo TypeTiny ];
+    meta = {
+      homepage = "https://github.com/oalders/authen-oath";
+      description = "OATH One Time Passwords";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AuthenPassphrase = buildPerlModule {
+    pname = "Authen-Passphrase";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Authen-Passphrase-0.008.tar.gz";
+      sha256 = "55db4520617d859d88c0ee54965da815b7226d792b8cdc8debf92073559e0463";
+    };
+    propagatedBuildInputs = [ AuthenDecHpwd CryptDES CryptEksblowfish CryptMySQL CryptPasswdMD5 CryptUnixCryptXS DataEntropy DigestMD4 ModuleRuntime ];
+    meta = {
+      description = "Hashed passwords/passphrases as objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AuthenRadius = buildPerlPackage {
+    pname = "Authen-Radius";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PO/PORTAONE/Authen-Radius-0.32.tar.gz";
+      sha256 = "0h0p4djscwixpbgbxrs9vsyx1vl7cm9r4j15cx11hfn86yc8y83v";
+    };
+    buildInputs = [ TestNoWarnings ];
+    propagatedBuildInputs = [ DataHexDump NetIP ];
+    meta = {
+      description = "Provide simple Radius client facilities  ";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  AuthenSASL = buildPerlPackage {
+    pname = "Authen-SASL";
+    version = "2.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GB/GBARR/Authen-SASL-2.16.tar.gz";
+      sha256 = "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536";
+    };
+    propagatedBuildInputs = [ DigestHMAC ];
+    meta = {
+      description = "SASL Authentication framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AuthenSASLSASLprep = buildPerlModule {
+    pname = "Authen-SASL-SASLprep";
+    version = "1.100";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFAERBER/Authen-SASL-SASLprep-1.100.tar.gz";
+      sha256 = "a4cccc34bb3f53acf0ba78c9fc61af8d156d109d1c10487ba5988a55077d1f70";
+    };
+    buildInputs = [ TestNoWarnings ];
+    propagatedBuildInputs = [ UnicodeStringprep ];
+    meta = {
+      description = "A Stringprep Profile for User Names and Passwords (RFC 4013)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AuthenSCRAM = buildPerlPackage {
+    pname = "Authen-SCRAM";
+    version = "0.011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Authen-SCRAM-0.011.tar.gz";
+      sha256 = "45108c239a7373d00941dcf0d171acd03e7c16a63ce6f7d9568ff052b17cf5a8";
+    };
+    buildInputs = [ TestFailWarnings TestFatal ];
+    propagatedBuildInputs = [ AuthenSASLSASLprep CryptURandom Moo PBKDF2Tiny TypeTiny namespaceclean ];
+    meta = {
+      homepage = "https://github.com/dagolden/Authen-SCRAM";
+      description = "Salted Challenge Response Authentication Mechanism (RFC 5802)";
+      license = lib.licenses.asl20;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  AuthenSimple = buildPerlPackage {
+    pname = "Authen-Simple";
+    version = "0.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHANSEN/Authen-Simple-0.5.tar.gz";
+      sha256 = "02cddab47f8bf1a1cbd4c9bf8d258f6d05111499c33f8315e7244812f72613aa";
+    };
+    propagatedBuildInputs = [ ClassAccessor ClassDataInheritable CryptPasswdMD5 ParamsValidate ];
+    meta = {
+      description = "Simple Authentication";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  AuthenSimplePasswd = buildPerlModule {
+     pname = "Authen-Simple-Passwd";
+     version = "0.6";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/C/CH/CHANSEN/Authen-Simple-Passwd-0.6.tar.gz";
+       sha256 = "1ckl2ry9r5nb1rcn1ik2l5b5pp1i3g4bmllsmzb0zpwy4lvbqmfg";
+     };
+     propagatedBuildInputs = [ AuthenSimple ];
+     meta = {
+       description = "Simple Passwd authentication";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  autobox = buildPerlPackage {
+    pname = "autobox";
+    version = "3.0.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHOCOLATE/autobox-v3.0.1.tar.gz";
+      sha256 = "c303b7fccfaa1ff4d4c429ab3f15e5ca2a77554ef8c9fc3b8c62ba859e874c98";
+    };
+    propagatedBuildInputs = [ ScopeGuard ];
+    meta = {
+      description = "Call methods on native types";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ IPCSystemSimple TestFatal ];
+  };
+
+  Autodia = buildPerlPackage {
+    pname = "Autodia";
+    version = "2.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TE/TEEJAY/Autodia-2.14.tar.gz";
+      sha256 = "08pl5y18nsvy8ihfzdsbd8rz6a8al09wqfna07zdjfdyib42b0dc";
+    };
+    propagatedBuildInputs = [ TemplateToolkit XMLSimple ];
+
+    meta = {
+      description = "AutoDia, create UML diagrams from source code";
+
+      longDescription = ''
+        AutoDia is a modular application that parses source code, XML or data
+        and produces an XML document in Dia format (or images via graphviz
+        and vcg).  Its goal is to be a UML / DB Schema diagram autocreation
+        package.  The diagrams its creates are standard UML diagrams showing
+        dependencies, superclasses, packages, classes and inheritances, as
+        well as the methods, etc of each class.
+
+        AutoDia supports any language that a Handler has been written for,
+        which includes C, C++, Java, Perl, Python, and more.
+      '';
+
+      homepage = "http://www.aarontrevena.co.uk/opensource/autodia/";
+      license = lib.licenses.gpl2Plus;
+    };
+    buildInputs = [ DBI ];
+  };
+
+  autovivification = buildPerlPackage {
+    pname = "autovivification";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VP/VPIT/autovivification-0.18.tar.gz";
+      sha256 = "01giacr2sx6b9bgfz6aqw7ndcnf08j8n6kwhm7880a94hmb9g69d";
+    };
+    meta = {
+      description = "Lexically disable autovivification";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BarcodeZBar = buildPerlPackage {
+    pname = "Barcode-ZBar";
+    version = "0.04pre";
+    # The meta::cpan version of this module has been unmaintained from 2009
+    # This uses an updated version from the ZBar repo that works with the current ZBar library
+    src = "${pkgs.zbar.src}/perl";
+    postPatch = ''
+      substituteInPlace Makefile.PL --replace "-lzbar" "-L${pkgs.zbar.lib}/lib -lzbar"
+      rm t/Processor.t
+    '';
+    buildInputs =[ ExtUtilsMakeMaker ];
+    propagatedBuildInputs = [ pkgs.zbar PerlMagick ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      homepage = "https://github.com/mchehab/zbar/tree/master/perl";
+      description = "Perl interface to the ZBar Barcode Reader";
+      license = with lib.licenses; [ gpl2Plus ];
+    };
+  };
+
+  BC = buildPerlPackage {
+    pname = "B-C";
+    version = "1.57";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/B-C-1.57.tar.gz";
+      sha256 = "1zs9a4gl63icja055kncgyny6xk1nsk6payfbzczkba3sc8sclh4";
+    };
+    propagatedBuildInputs = [ BFlags IPCRun Opcodes ];
+    meta = {
+      homepage = "https://github.com/rurban/perl-compiler";
+      description = "Perl compiler";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    doCheck = false; /* test fails */
+  };
+
+  BCOW = buildPerlPackage {
+    pname = "B-COW";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AT/ATOOMIC/B-COW-0.004.tar.gz";
+      sha256 = "0lazb25jzhdha4dmrkdxn1pw1crc6iqzspvcq315p944xmsvgbzw";
+    };
+    meta = {
+      description = "B::COW additional B helpers to check COW status";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BFlags = buildPerlPackage {
+    pname = "B-Flags";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/B-Flags-0.17.tar.gz";
+      sha256 = "1chhgkaw2h3qniz71dykynggqp0r6b6mi2f4nh4x3ghm2g89gny1";
+    };
+    meta = {
+      description = "Friendlier flags for B";
+    };
+  };
+
+  BeanstalkClient = buildPerlPackage {
+    pname = "Beanstalk-Client";
+    version = "1.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GB/GBARR/Beanstalk-Client-1.07.tar.gz";
+      sha256 = "3188ab1127f2caba97df65c84f69db0ec70c64e5d70f296f9a2674fa79c112cc";
+    };
+    propagatedBuildInputs = [ ClassAccessor YAMLSyck ];
+    meta = {
+      description = "Client to communicate with beanstalkd server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BerkeleyDB = buildPerlPackage {
+    pname = "BerkeleyDB";
+    version = "0.64";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/BerkeleyDB-0.64.tar.gz";
+      sha256 = "0jvllgyk7ai8zxziaxpxar0n2054y01dq3qn40xc86lwakl8ap2k";
+    };
+
+    preConfigure = ''
+      echo "LIB = ${pkgs.db.out}/lib" > config.in
+      echo "INCLUDE = ${pkgs.db.dev}/include" >> config.in
+    '';
+  };
+
+  BDB = buildPerlPackage rec {
+    pname = "BDB";
+    version = "1.92";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/${pname}-${version}.tar.gz";
+      sha256 = "a3f2ca9d2baefc1aaa40908b2f9cb9292fda3e7d797e38bbd78eabb9d9daeb6b";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.db4.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.db4.out}/lib -ldb";
+    buildInputs = [ pkgs.db4 ];
+    propagatedBuildInputs = [ commonsense ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BHooksEndOfScope = buildPerlPackage {
+    pname = "B-Hooks-EndOfScope";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/B-Hooks-EndOfScope-0.24.tar.gz";
+      sha256 = "1imcqxp23yc80a7p0h56sja9glbrh4qyhgzljqd4g9habpz3vah3";
+    };
+    propagatedBuildInputs = [ ModuleImplementation SubExporterProgressive ];
+    meta = {
+      description = "Execute code after a scope finished compilation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BHooksOPCheck = buildPerlPackage {
+    pname = "B-Hooks-OP-Check";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/B-Hooks-OP-Check-0.22.tar.gz";
+      sha256 = "1kfdv25gn6yik8jrwik4ajp99gi44s6idcvyyrzhiycyynzd3df7";
+    };
+    buildInputs = [ ExtUtilsDepends ];
+    meta = {
+      description = "Wrap OP check callbacks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BitVector = buildPerlPackage {
+    pname = "Bit-Vector";
+    version = "7.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/ST/STBEY/Bit-Vector-7.4.tar.gz";
+      sha256 = "09m96p8c0ipgz42li2ywdgy0vxb57mb5nf59j9gw7yzc3xkslv9w";
+    };
+    propagatedBuildInputs = [ CarpClan ];
+  };
+
+  BKeywords = buildPerlPackage rec {
+    pname = "B-Keywords";
+    version = "1.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-${version}.tar.gz";
+      sha256 = "0i2ksp0w9wv1qc22hrdl3k48cww64syhmv8zf6x0kgyd4081hr56";
+    };
+    meta = {
+      description = "Lists of reserved barewords and symbol names";
+      license = with lib.licenses; [ artistic1 gpl2 ];
+    };
+  };
+
+  boolean = buildPerlPackage {
+    pname = "boolean";
+    version = "0.46";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/boolean-0.46.tar.gz";
+      sha256 = "95c088085c3e83bf680fe6ce16d8264ec26310490f7d1680e416ea7a118f156a";
+    };
+    meta = {
+      homepage = "https://github.com/ingydotnet/boolean-pm";
+      description = "Boolean support for Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BoostGeometryUtils = buildPerlModule {
+    pname = "Boost-Geometry-Utils";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AA/AAR/Boost-Geometry-Utils-0.15.tar.gz";
+      sha256 = "1jnihz3029x51a455nxa0jx2z125x38q3vkkggsgdlrvawzxsm00";
+    };
+    patches = [
+      # Fix out of memory error on Perl 5.19.4 and later.
+      ../development/perl-modules/boost-geometry-utils-fix-oom.patch
+    ];
+    perlPreHook = "export LD=$CC";
+    buildInputs = [ ExtUtilsCppGuess ExtUtilsTypemapsDefault ExtUtilsXSpp ModuleBuildWithXSpp ];
+  };
+
+  BotTraining = buildPerlPackage {
+    pname = "Bot-Training";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AV/AVAR/Bot-Training-0.07.tar.gz";
+      sha256 = "ee66bbf814f0dc3d1e80680e050fad10b1e018fed7929f653ed40e088b2aa295";
+    };
+    buildInputs = [ FileSlurp ];
+    propagatedBuildInputs = [ ClassLoad DirSelf FileShareDir ModulePluggable MooseXGetopt namespaceclean  ];
+    meta = {
+      homepage = "https://metacpan.org/release/Bot-Training";
+      description = "Plain text training material for bots like Hailo and AI::MegaHAL";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BotTrainingMegaHAL = buildPerlPackage {
+    pname = "Bot-Training-MegaHAL";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AV/AVAR/Bot-Training-MegaHAL-0.03.tar.gz";
+      sha256 = "956072aff04f216e5c3b8196965b5d80d4d47695d77ecaabd56e59d65f22bf60";
+    };
+    buildInputs = [ FileShareDirInstall ];
+    propagatedBuildInputs = [ BotTraining ];
+    meta = {
+      homepage = "https://metacpan.org/release/Bot-Training-MegaHAL";
+      description = "Provide megahal.trn via Bot::Training";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BotTrainingStarCraft = buildPerlPackage {
+    pname = "Bot-Training-StarCraft";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AV/AVAR/Bot-Training-StarCraft-0.03.tar.gz";
+      sha256 = "e7ceb8d01c62e732dd89bfe5f4d83e781c1cd912542d177c22e761b7c8614d5e";
+    };
+    buildInputs = [ FileShareDirInstall ];
+    propagatedBuildInputs = [ BotTraining ];
+    meta = {
+      homepage = "https://metacpan.org/release/Bot-Training-StarCraft";
+      description = "Provide starcraft.trn via Bot::Training";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BSDResource = buildPerlPackage {
+    pname = "BSD-Resource";
+    version = "1.2911";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHI/BSD-Resource-1.2911.tar.gz";
+      sha256 = "0g8c7825ng2m0yz5sy6838rvfdl8j3vm29524wjgf66ccfhgn74x";
+    };
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "BSD process resource limit and priority functions";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  BSON = buildPerlPackage {
+    pname = "BSON";
+    version = "1.12.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MONGODB/BSON-v1.12.2.tar.gz";
+      sha256 = "f4612c0c354310741b99ab6d26451226823150ca27109b1b391232d5cfdda6db";
+    };
+    buildInputs = [ JSONMaybeXS PathTiny TestDeep TestFatal ];
+    propagatedBuildInputs = [ CryptURandom Moo TieIxHash boolean namespaceclean ];
+    meta = {
+      homepage = "https://github.com/mongodb-labs/mongo-perl-bson";
+      description = "BSON serialization and deserialization (EOL)";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  BSONXS = buildPerlPackage {
+    pname = "BSON-XS";
+    version = "0.8.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MONGODB/BSON-XS-v0.8.4.tar.gz";
+      sha256 = "28f7d338fd78b6f9c9a6080be9de3f5cb23d888b96ebf6fcbface9f2966aebf9";
+    };
+    buildInputs = [ ConfigAutoConf JSONMaybeXS PathTiny TestDeep TestFatal TieIxHash ];
+    propagatedBuildInputs = [ BSON boolean JSONXS JSONPP CpanelJSONXS ];
+    meta = {
+      homepage = "https://github.com/mongodb-labs/mongo-perl-bson-xs";
+      description = "XS implementation of MongoDB's BSON serialization (EOL)";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  BUtils = buildPerlPackage {
+     pname = "B-Utils";
+     version = "0.27";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/B-Utils-0.27.tar.gz";
+       sha256 = "1spzhmk3z6c4blmra3kn84nq20fira2b3vjg86m0j085lgv56zzr";
+     };
+     propagatedBuildInputs = [ TaskWeaken ];
+     buildInputs = [ ExtUtilsDepends ];
+     meta = {
+       description = "Helper functions for op tree manipulation";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  BusinessHours = buildPerlPackage {
+    pname = "Business-Hours";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Business-Hours-0.13.tar.gz";
+      sha256 = "1hiybixagj3i1hsnfr134jgs9wv4azkwq6kijr9zlkxqzczzw1x8";
+    };
+    propagatedBuildInputs = [ SetIntSpan ];
+    meta = {
+      description = "Calculate business hours in a time period";
+    };
+  };
+
+  BusinessISBN = buildPerlPackage {
+    pname = "Business-ISBN";
+    version = "3.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Business-ISBN-3.005.tar.gz";
+      sha256 = "0aifzqj3xvxi8x0103ddpb2bagfsz15c71k69vdpcqy582pgnc35";
+    };
+    propagatedBuildInputs = [ BusinessISBNData ];
+    meta = {
+      description = "Parse and validate ISBNs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BusinessISBNData = buildPerlPackage {
+    pname = "Business-ISBN-Data";
+    version = "20191107";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Business-ISBN-Data-20191107.tar.gz";
+      sha256 = "03faqnxx7qxgr2dcdra2iq60ziilpkas2ra41cs8klwky5j4yk44";
+    };
+    meta = {
+      description = "Data pack for Business::ISBN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BusinessISMN = buildPerlPackage {
+    pname = "Business-ISMN";
+    version = "1.201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Business-ISMN-1.201.tar.gz";
+      sha256 = "1cpcfyaz1fl6fnm076jx2jsphw147wj6aszj2yzqrgsncjhk2cja";
+    };
+    propagatedBuildInputs = [ TieCycle ];
+    meta = {
+      description = "Work with International Standard Music Numbers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BusinessISSN = buildPerlPackage {
+    pname = "Business-ISSN";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Business-ISSN-1.004.tar.gz";
+      sha256 = "97ecab15d24d11e2852bf0b28f84c8798bd38402a0a69e17be0e6689b272715e";
+    };
+    meta = {
+      description = "Work with International Standard Serial Numbers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  BytesRandomSecure = buildPerlPackage {
+    pname = "Bytes-Random-Secure";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVIDO/Bytes-Random-Secure-0.29.tar.gz";
+      sha256 = "53bbd339e6a11efca07c619a615c7c188a68bb2be849a1cb7efc3dd4d9ae85ae";
+    };
+    propagatedBuildInputs = [ CryptRandomSeed MathRandomISAAC ];
+    meta = {
+      description = "Perl extension to generate cryptographically-secure random bytes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  BytesRandomSecureTiny = buildPerlPackage {
+    pname = "Bytes-Random-Secure-Tiny";
+    version = "1.011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVIDO/Bytes-Random-Secure-Tiny-1.011.tar.gz";
+      sha256 = "03d967b5f82846909137d5ab9984ac570ac10a4401e0c602f3d2208c465ac982";
+    };
+    meta = {
+      description = "A tiny Perl extension to generate cryptographically-secure random bytes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CacheCache = buildPerlPackage {
+    pname = "Cache-Cache";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Cache-Cache-1.08.tar.gz";
+      sha256 = "1s6i670dc3yb6ngvdk48y6szdk5n1f4icdcjv2vi1l2xp9fzviyj";
+    };
+    propagatedBuildInputs = [ DigestSHA1 Error IPCShareLite ];
+    doCheck = false; # randomly fails
+  };
+
+  CacheFastMmap = buildPerlPackage {
+    pname = "Cache-FastMmap";
+    version = "1.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBM/Cache-FastMmap-1.54.tar.gz";
+      sha256 = "0lkrsr582h714jpmh5dv4szz5f7rm466xqxbavj7l9w0p40f4him";
+    };
+    buildInputs = [ TestDeep ];
+  };
+
+  CacheKyotoTycoon = buildPerlModule {
+    pname = "Cache-KyotoTycoon";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Cache-KyotoTycoon-0.16.tar.gz";
+      sha256 = "0z4lnc3jfqx8rykm998q2jy5wkhb8p5pir80g9lqpi4lb0ilic6c";
+    };
+    propagatedBuildInputs = [ Furl URI ];
+    buildInputs = [ FileWhich TestRequires TestSharedFork TestTCP ];
+    meta = {
+      description = "KyotoTycoon client library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CacheMemcached = buildPerlPackage {
+    pname = "Cache-Memcached";
+    version = "1.30";
+    src = fetchurl {
+      url =
+      "mirror://cpan/authors/id/D/DO/DORMANDO/Cache-Memcached-1.30.tar.gz";
+      sha256 = "1aa2mjn5767b13063nnsrwcikrnbspby7j1c5q007bzaq0gcbcri";
+    };
+    propagatedBuildInputs = [ StringCRC32 ];
+  };
+
+  CacheMemcachedFast = buildPerlPackage {
+    pname = "Cache-Memcached-Fast";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RAZ/Cache-Memcached-Fast-0.26.tar.gz";
+      sha256 = "16m0xafidycrlcvbv3zmbr5pzvqyqyr2qb0khpry99nc4bcld3jy";
+    };
+    meta = {
+      description = "Perl client for B<memcached>, in C language";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CacheMemory = buildPerlModule {
+    pname = "Cache";
+    version = "2.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Cache-2.11.tar.gz";
+      sha256 = "14m513f4g02daklmnvdm7vqh3w3ick65wvmvqnmnc4cqfybdilp1";
+    };
+    propagatedBuildInputs = [ DBFile FileNFSLock HeapFibonacci IOString TimeDate ];
+    doCheck = false; # can time out
+  };
+
+  CacheSimpleTimedExpiry = buildPerlPackage {
+    pname = "Cache-Simple-TimedExpiry";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JESSE/Cache-Simple-TimedExpiry-0.27.tar.gz";
+      sha256 = "4e78b7e4dd231b5571a48cd0ee1b63953f5e34790c9d020e1595a7c7d0abbe49";
+    };
+    meta = {
+      description = "A lightweight cache with timed expiration";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Cairo = buildPerlPackage {
+    pname = "Cairo";
+    version = "1.108";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Cairo-1.108.tar.gz";
+      sha256 = "1nh5iya63q6j2w0cdi24x2ygpi8k8wwccnbh8cisnx8nqmywnhk0";
+    };
+    buildInputs = [ pkgs.cairo ];
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net/";
+      description = "Perl interface to the cairo 2D vector graphics library";
+      license = lib.licenses.lgpl21Plus;
+    };
+    propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig ];
+  };
+
+  CairoGObject = buildPerlPackage {
+    pname = "Cairo-GObject";
+    version = "1.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Cairo-GObject-1.005.tar.gz";
+      sha256 = "0l2wcz77ndmbgvxx34gdm919a3dxh9fixqr47p50n78ysx2692cd";
+    };
+    buildInputs = [ pkgs.cairo ];
+    meta = {
+      description = "Integrate Cairo into the Glib type system";
+      license = lib.licenses.lgpl21Plus;
+    };
+    propagatedBuildInputs = [ Cairo Glib ];
+  };
+
+  CallContext = buildPerlPackage {
+    pname = "Call-Context";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FELIPE/Call-Context-0.03.tar.gz";
+      sha256 = "0ee6bf46bc72755adb7a6b08e79d12e207de5f7809707b3c353b58cb2f0b5a26";
+    };
+    meta = {
+      description = "Sanity-check calling context";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  cam_pdf = buildPerlModule {
+    pname = "CAM-PDF";
+    version = "1.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CD/CDOLAN/CAM-PDF-1.60.tar.gz";
+      sha256 = "12dv5ssf3y7yjz9mrrqnfzx8nf4ydk1qijf5fx59495671zzqsp7";
+    };
+    propagatedBuildInputs = [ CryptRC4 TextPDF ];
+  };
+
+  capitalization = buildPerlPackage {
+     pname = "capitalization";
+     version = "0.03";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/capitalization-0.03.tar.gz";
+       sha256 = "0g7fpckydzxsf8mjkfbyj0pv42dzym4hwbizqahnh7wlfbaicdgi";
+     };
+     propagatedBuildInputs = [ DevelSymdump ];
+     meta = {
+     };
+  };
+
+  CanaryStability = buildPerlPackage {
+    pname = "Canary-Stability";
+    version = "2013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Canary-Stability-2013.tar.gz";
+      sha256 = "a5c91c62cf95fcb868f60eab5c832908f6905221013fea2bce3ff57046d7b6ea";
+    };
+    meta = {
+      license = lib.licenses.gpl1Plus;
+    };
+  };
+
+  CaptchaReCAPTCHA = buildPerlPackage {
+    pname = "Captcha-reCaptcha";
+    version = "0.99";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SU/SUNNYP/Captcha-reCaptcha-0.99.tar.gz";
+      sha256 = "14j3lk6fhfzda5d3d7z6f373ng3fzxazzwpjyziysrhic1v3b4mq";
+    };
+    propagatedBuildInputs = [ HTMLTiny LWP ];
+  };
+
+  CaptureTiny = buildPerlPackage {
+    pname = "Capture-Tiny";
+    version = "0.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Capture-Tiny-0.48.tar.gz";
+      sha256 = "069yrikrrb4vqzc3hrkkfj96apsh7q0hg8lhihq97lxshwz128vc";
+    };
+    meta = {
+      description = "Capture STDOUT and STDERR from Perl, XS or external programs";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  CarpAlways = buildPerlPackage {
+    pname = "Carp-Always";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FERREIRA/Carp-Always-0.16.tar.gz";
+      sha256 = "1wb6b0qjga7kvn4p8df6k4g1pl2yzaqiln1713xidh3i454i3alq";
+    };
+    meta = {
+      description = "Warns and dies noisily with stack backtraces";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestBase ];
+  };
+
+  CarpAssert = buildPerlPackage {
+    pname = "Carp-Assert";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Carp-Assert-0.21.tar.gz";
+      sha256 = "0km5fc6r6whxh6h5yd7g1j0bi96sgk0gkda6cardicrw9qmqwkwj";
+    };
+    meta = {
+    };
+  };
+
+  CarpAssertMore = buildPerlPackage {
+    pname = "Carp-Assert-More";
+    version = "1.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Carp-Assert-More-1.24.tar.gz";
+      sha256 = "0axjfl1hp7s4lcfxjj41zcp397dzhjqzd95innzxnz914xkc2p5s";
+    };
+    propagatedBuildInputs = [ CarpAssert ];
+    meta = {
+      license = lib.licenses.artistic2;
+    };
+    buildInputs = [ TestException ];
+  };
+
+  CarpClan = buildPerlPackage {
+    pname = "Carp-Clan";
+    version = "6.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Carp-Clan-6.08.tar.gz";
+      sha256 = "0237xx3rqa72sr4vdvws9r1m453h5f25bl85mdjmmk128kir4py7";
+    };
+    meta = {
+      description = "Report errors from perspective of caller of a \"clan\" of modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Carton = buildPerlPackage {
+    pname = "Carton";
+    version = "1.0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Carton-v1.0.34.tar.gz";
+      sha256 = "77d42b92732bcfc18a59d341e56ce476205b1c4d380eab3a07224f5745c23e45";
+    };
+    propagatedBuildInputs = [ MenloLegacy PathTiny TryTiny ];
+    meta = {
+      homepage = "https://github.com/perl-carton/carton";
+      description = "Perl module dependency manager (aka Bundler for Perl)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystActionRenderView = buildPerlPackage {
+    pname = "Catalyst-Action-RenderView";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Action-RenderView-0.16.tar.gz";
+      sha256 = "8565203950a057d43ecd64e9593715d565c2fbd8b02c91f43c53b2111acd3948";
+    };
+    propagatedBuildInputs = [ CatalystRuntime DataVisitor ];
+    meta = {
+      description = "Sensible default end action";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ HTTPRequestAsCGI ];
+  };
+
+  CatalystActionREST = buildPerlPackage {
+    pname = "Catalyst-Action-REST";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JJ/JJNAPIORK/Catalyst-Action-REST-1.21.tar.gz";
+      sha256 = "ccf81bba5200d3a0ad6901f923af173a3d4416618aea08a6938baaffdef4cb20";
+    };
+    buildInputs = [ TestRequires ];
+    propagatedBuildInputs = [ CatalystRuntime URIFind ];
+    meta = {
+      description = "Automated REST Method Dispatching";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystAuthenticationCredentialHTTP = buildPerlModule {
+    pname = "Catalyst-Authentication-Credential-HTTP";
+    version = "1.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Catalyst-Authentication-Credential-HTTP-1.018.tar.gz";
+      sha256 = "0ad5clfiyllnf37an99n139cxhhxf5g5rh8cxashsjv4xrnq38bg";
+    };
+    buildInputs = [ ModuleBuildTiny TestException TestMockObject TestNeeds ];
+    propagatedBuildInputs = [ CatalystPluginAuthentication ClassAccessor DataUUID StringEscape ];
+    meta = {
+      description = "HTTP Basic and Digest authentication";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystAuthenticationStoreHtpasswd = buildPerlModule {
+    pname = "Catalyst-Authentication-Store-Htpasswd";
+    version = "1.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Catalyst-Authentication-Store-Htpasswd-1.006.tar.gz";
+      sha256 = "0kw0w2g1qmym896bgnqr1bfhvgb6xja39mv10701ipp8fmi8bzf7";
+    };
+    buildInputs = [ ModuleBuildTiny TestLongString TestSimple13 TestWWWMechanize TestWWWMechanizeCatalyst ];
+    propagatedBuildInputs = [ AuthenHtpasswd CatalystPluginAuthentication ];
+  };
+
+  CatalystAuthenticationStoreDBIxClass = buildPerlPackage {
+    pname = "Catalyst-Authentication-Store-DBIx-Class";
+    version = "0.1506";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/Catalyst-Authentication-Store-DBIx-Class-0.1506.tar.gz";
+      sha256 = "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw";
+    };
+    propagatedBuildInputs = [ CatalystModelDBICSchema CatalystPluginAuthentication ];
+    meta = {
+      description = "A storage class for Catalyst Authentication using DBIx::Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestWarn ];
+  };
+
+  CatalystAuthenticationStoreLDAP = buildPerlPackage {
+    pname = "Catalyst-Authentication-Store-LDAP";
+    version = "1.016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/Catalyst-Authentication-Store-LDAP-1.016.tar.gz";
+      sha256 = "0cm399vxqqf05cjgs1j5v3sk4qc6nmws5nfhf52qvpbwc4m82mq8";
+    };
+    propagatedBuildInputs = [ perlldap CatalystPluginAuthentication ClassAccessor ];
+    buildInputs = [ TestMockObject TestException NetLDAPServerTest ];
+    meta = {
+      description= "Authentication from an LDAP Directory";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  CatalystComponentInstancePerContext = buildPerlPackage {
+    pname = "Catalyst-Component-InstancePerContext";
+    version = "0.001001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRODITI/Catalyst-Component-InstancePerContext-0.001001.tar.gz";
+      sha256 = "7f63f930e1e613f15955c9e6d73873675c50c0a3bc2a61a034733361ed26d271";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ];
+    meta = {
+      description = "Moose role to create only one instance of component per context";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystControllerHTMLFormFu = buildPerlPackage {
+    pname = "Catalyst-Controller-HTML-FormFu";
+    version = "2.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NIGELM/Catalyst-Controller-HTML-FormFu-2.04.tar.gz";
+      sha256 = "f13fb9b3b3b00b35f06abc31614461c8d7346fbe07fb569c71e8d586e5eb5ddc";
+    };
+    buildInputs = [ CatalystActionRenderView CatalystPluginSession CatalystPluginSessionStateCookie CatalystPluginSessionStoreFile CatalystViewTT CodeTidyAllPluginPerlAlignMooseAttributes PodCoverageTrustPod PodTidy TemplateToolkit TestCPANMeta TestDifferences TestEOL TestKwalitee TestLongString TestMemoryCycle TestNoTabs TestPAUSEPermissions TestPod TestPodCoverage TestWWWMechanize TestWWWMechanizeCatalyst ];
+    propagatedBuildInputs = [ CatalystComponentInstancePerContext HTMLFormFuMultiForm RegexpAssemble ];
+    meta = {
+      description = "Catalyst integration for HTML::FormFu";
+      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.' */
+  };
+
+  CatalystControllerPOD = buildPerlModule {
+    pname = "Catalyst-Controller-POD";
+    version = "1.0.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLER/Catalyst-Controller-POD-1.0.0.tar.gz";
+      sha256 = "ee2a4bb3ed78baa1464335408f284345b6ba0ef6576ad7bfbd7b656c788a39f9";
+    };
+    buildInputs = [ ModuleInstall TestLongString TestWWWMechanize TestWWWMechanizeCatalyst ];
+    propagatedBuildInputs = [ CatalystPluginStaticSimple ClassAccessor FileSlurp JSONXS ListMoreUtils PodPOMViewTOC XMLSimple ];
+    meta = {
+      description = "Serves PODs right from your Catalyst application";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  CatalystDevel = buildPerlPackage {
+    pname = "Catalyst-Devel";
+    version = "1.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-Devel-1.42.tar.gz";
+      sha256 = "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky";
+    };
+    buildInputs = [ FileShareDirInstall TestFatal ];
+    propagatedBuildInputs = [ CatalystActionRenderView CatalystPluginConfigLoader CatalystPluginStaticSimple ConfigGeneral FileChangeNotify FileCopyRecursive ModuleInstall TemplateToolkit ];
+    meta = {
+      homepage = "http://wiki.catalystframework.org/wiki/";
+      description = "Catalyst Development Tools";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystDispatchTypeRegex = buildPerlModule {
+    pname = "Catalyst-DispatchType-Regex";
+    version = "5.90035";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MG/MGRIMES/Catalyst-DispatchType-Regex-5.90035.tar.gz";
+      sha256 = "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ];
+    meta = {
+      description = "Regex DispatchType";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystManual = buildPerlPackage {
+    pname = "Catalyst-Manual";
+    version = "5.9011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-Manual-5.9011.tar.gz";
+      sha256 = "0g61za6844ya0lk0bpvw43sj0jd553aks3hqw21hbh03b6b377mk";
+    };
+    meta = {
+      description = "The Catalyst developer's manual";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystModelDBICSchema = buildPerlPackage {
+    pname = "Catalyst-Model-DBIC-Schema";
+    version = "0.65";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GB/GBJK/Catalyst-Model-DBIC-Schema-0.65.tar.gz";
+      sha256 = "26a911ef5ef7ffc81b6ce65c3156f71fb35083c456ad27e6d82d2dc02493eeea";
+    };
+    buildInputs = [ DBDSQLite TestException TestRequires ];
+    propagatedBuildInputs = [ CatalystComponentInstancePerContext CatalystXComponentTraits DBIxClassSchemaLoader MooseXMarkAsMethods MooseXNonMoose MooseXTypesLoadableClass TieIxHash ];
+    meta = {
+      description = "DBIx::Class::Schema Model Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystRuntime = buildPerlPackage {
+    pname = "Catalyst-Runtime";
+    version = "5.90128";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-Runtime-5.90128.tar.gz";
+      sha256 = "1yb0caagdrl7c1ldkwaz6w2qpgj8wcibzhqh6yscarjzmw6kppx6";
+    };
+    buildInputs = [ TestFatal TypeTiny ];
+    propagatedBuildInputs = [ CGISimple CGIStruct ClassC3AdoptNEXT DataDump HTTPBody ModulePluggable MooseXEmulateClassAccessorFast MooseXGetopt MooseXMethodAttributes MooseXRoleWithOverloading PathClass PerlIOutf8_strict PlackMiddlewareFixMissingBodyInRedirect PlackMiddlewareMethodOverride PlackMiddlewareRemoveRedundantBody PlackMiddlewareReverseProxy PlackTestExternalServer SafeIsa StringRewritePrefix TaskWeaken TextSimpleTable TreeSimpleVisitorFactory URIws ];
+    meta = {
+      homepage = "http://wiki.catalystframework.org/wiki/";
+      description = "The Catalyst Framework Runtime";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginAccessLog = buildPerlPackage {
+    pname = "Catalyst-Plugin-AccessLog";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARODLAND/Catalyst-Plugin-AccessLog-1.10.tar.gz";
+      sha256 = "873db8e4e72a994e3e17aeb53d2b837e6d524b4b8b0f3539f262135c88cc2120";
+    };
+    propagatedBuildInputs = [ CatalystRuntime DateTime ];
+    meta = {
+      description = "Request logging from within Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginAuthentication = buildPerlPackage {
+    pname = "Catalyst-Plugin-Authentication";
+    version = "0.10023";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Authentication-0.10023.tar.gz";
+      sha256 = "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ CatalystPluginSession ];
+    meta = {
+      description = "Infrastructure plugin for the Catalyst authentication framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginAuthorizationACL = buildPerlPackage {
+    pname = "Catalyst-Plugin-Authorization-ACL";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/Catalyst-Plugin-Authorization-ACL-0.16.tar.gz";
+      sha256 = "0z4328rr6l9xi45hyv6q9pwwamp0864q6skcp29jrz9f919ycdra";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ClassThrowable ];
+    buildInputs = [ CatalystPluginAuthentication CatalystPluginAuthorizationRoles CatalystPluginSession CatalystPluginSessionStateCookie TestWWWMechanizeCatalyst ];
+  };
+
+  CatalystPluginAuthorizationRoles = buildPerlPackage {
+    pname = "Catalyst-Plugin-Authorization-Roles";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Authorization-Roles-0.09.tar.gz";
+      sha256 = "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ CatalystPluginAuthentication SetObject UNIVERSALisa ];
+    meta = {
+      description = "Role based authorization for Catalyst based on Catalyst::Plugin::Authentication";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginCache = buildPerlPackage {
+    pname = "Catalyst-Plugin-Cache";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Cache-0.12.tar.gz";
+      sha256 = "1q23aipvrl888h06ldr4mmjbykz0j4rqwipxg1jv094kki2fspr9";
+    };
+    buildInputs = [ ClassAccessor TestDeep TestException ];
+    propagatedBuildInputs = [ CatalystRuntime ];
+    meta = {
+      description = "Flexible caching support for Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginCacheHTTP = buildPerlPackage {
+    pname = "Catalyst-Plugin-Cache-HTTP";
+    version = "0.001000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRAF/Catalyst-Plugin-Cache-HTTP-0.001000.tar.gz";
+      sha256 = "0v5iphbq4csc4r6wkvxnqlh97p8g0yhjky9qqmsdyqczn87agbba";
+    };
+    buildInputs = [ CatalystRuntime TestLongString TestSimple13 TestWWWMechanize TestWWWMechanizeCatalyst ];
+    propagatedBuildInputs = [ ClassAccessor HTTPMessage MROCompat ];
+    meta = {
+      description = "HTTP/1.1 cache validators for Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginCaptcha = buildPerlPackage {
+    pname = "Catalyst-Plugin-Captcha";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DI/DIEGOK/Catalyst-Plugin-Captcha-0.04.tar.gz";
+      sha256 = "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa";
+    };
+    propagatedBuildInputs = [ CatalystPluginSession GDSecurityImage ];
+    meta = {
+      description = "Create and validate Captcha for Catalyst";
+    };
+  };
+
+  CatalystPluginConfigLoader = buildPerlPackage {
+    pname = "Catalyst-Plugin-ConfigLoader";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-Plugin-ConfigLoader-0.35.tar.gz";
+      sha256 = "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ConfigAny DataVisitor ];
+  };
+
+  CatalystPluginFormValidator = buildPerlPackage {
+    pname = "Catalyst-Plugin-FormValidator";
+    version = "0.094";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DH/DHOSS/Catalyst-Plugin-FormValidator-0.094.tar.gz";
+      sha256 = "5834f11bf5c9f4b5d336d65c7ce6639b76ce7bfe7a2875eb048d7ea1c82ce05a";
+    };
+    propagatedBuildInputs = [ CatalystRuntime DataFormValidator ];
+    meta = {
+      description = "Data::FormValidator";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginFormValidatorSimple = buildPerlPackage {
+    pname = "Catalyst-Plugin-FormValidator-Simple";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DH/DHOSS/Catalyst-Plugin-FormValidator-Simple-0.15.tar.gz";
+      sha256 = "486c6a0e8f410fd017279f4804ab9e35ba46321d33a0a9721fe1e08a391de7a0";
+    };
+    propagatedBuildInputs = [ CatalystPluginFormValidator FormValidatorSimple ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginLogHandler = buildPerlModule {
+    pname = "Catalyst-Plugin-Log-Handler";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEPE/Catalyst-Plugin-Log-Handler-0.08.tar.gz";
+      sha256 = "0db3c3a57b4ee3d789ba5129890e2858913fef00d8185bdc9c5d7fde31e043ef";
+    };
+    propagatedBuildInputs = [ ClassAccessor LogHandler MROCompat ];
+    meta = {
+      description = "Catalyst Plugin for Log::Handler";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginPrometheusTiny = buildPerlPackage {
+    pname = "Catalyst-Plugin-PrometheusTiny";
+    version = "0.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYSPETE/Catalyst-Plugin-PrometheusTiny-0.006.tar.gz";
+      sha256 = "1hd2nv21c2mq3yvhsys4a276bdwr5igs4b73m99v7ymzpabvjf9b";
+    };
+    buildInputs = [ HTTPMessage Plack SubOverride TestDeep ];
+    propagatedBuildInputs = [ CatalystRuntime Moose PrometheusTiny PrometheusTinyShared ];
+    meta = {
+      description = "Prometheus metrics for Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginSession = buildPerlPackage {
+    pname = "Catalyst-Plugin-Session";
+    version = "0.41";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JJ/JJNAPIORK/Catalyst-Plugin-Session-0.41.tar.gz";
+      sha256 = "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5";
+    };
+    buildInputs = [ TestDeep TestException TestWWWMechanizePSGI ];
+    propagatedBuildInputs = [ CatalystRuntime ObjectSignature ];
+    meta = {
+      description = "Generic Session plugin - ties together server side storage and client side state required to maintain session data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginSessionDynamicExpiry = buildPerlPackage {
+    pname = "Catalyst-Plugin-Session-DynamicExpiry";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Session-DynamicExpiry-0.04.tar.gz";
+      sha256 = "7707c56734cdb1512f733dc400fadf6f4c53cb217b58207857824dad6780a079";
+    };
+    propagatedBuildInputs = [ CatalystPluginSession ];
+    meta = {
+      description = "Per-session custom expiry times";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginSessionStateCookie = buildPerlPackage {
+    pname = "Catalyst-Plugin-Session-State-Cookie";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-Plugin-Session-State-Cookie-0.18.tar.gz";
+      sha256 = "1skvw3i9wv02kz1bz937zh7wfxvhf54i8zppln3ly6bcp6rcgcg9";
+    };
+    propagatedBuildInputs = [ CatalystPluginSession ];
+  };
+
+  CatalystPluginSessionStoreFastMmap = buildPerlPackage {
+    pname = "Catalyst-Plugin-Session-Store-FastMmap";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Session-Store-FastMmap-0.16.tar.gz";
+      sha256 = "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs";
+    };
+    propagatedBuildInputs = [ CacheFastMmap CatalystPluginSession ];
+  };
+
+  CatalystPluginSessionStoreFile = buildPerlPackage {
+    pname = "Catalyst-Plugin-Session-Store-File";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FL/FLORA/Catalyst-Plugin-Session-Store-File-0.18.tar.gz";
+      sha256 = "54738e3ce76f8be8b66947092d28973c73d79d1ee19b5d92b057552f8ff09b4f";
+    };
+    propagatedBuildInputs = [ CacheCache CatalystPluginSession ClassDataInheritable ];
+    meta = {
+      description = "File storage backend for session data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginSmartURI = buildPerlPackage {
+    pname = "Catalyst-Plugin-SmartURI";
+    version = "0.041";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/Catalyst-Plugin-SmartURI-0.041.tar.gz";
+      sha256 = "0msz3w2vfdb5w4ixi5llq66xlhm0181gjz9xj8yj0lalk232326b";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ClassC3Componentised ];
+    buildInputs = [ CatalystActionREST TestWarnings TimeOut URISmartURI ];
+    meta = {
+      description = "Configurable URIs for Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginStackTrace = buildPerlPackage {
+    pname = "Catalyst-Plugin-StackTrace";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-StackTrace-0.12.tar.gz";
+      sha256 = "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ];
+    meta = {
+      description = "Display a stack trace on the debug screen";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginStaticSimple = buildPerlPackage {
+    pname = "Catalyst-Plugin-Static-Simple";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/Catalyst-Plugin-Static-Simple-0.36.tar.gz";
+      sha256 = "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn";
+    };
+    patches = [ ../development/perl-modules/catalyst-plugin-static-simple-etag.patch ];
+    propagatedBuildInputs = [ CatalystRuntime MIMETypes MooseXTypes ];
+    meta = {
+      description = "Make serving static pages painless";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystPluginStatusMessage = buildPerlPackage {
+    pname = "Catalyst-Plugin-StatusMessage";
+    version = "1.002000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HK/HKCLARK/Catalyst-Plugin-StatusMessage-1.002000.tar.gz";
+      sha256 = "649c894ab16f9f48ada8f9cc599a7ecbb8891ab3761ff6fd510520c6de407c1f";
+    };
+    propagatedBuildInputs = [ CatalystRuntime strictures ];
+    meta = {
+      description = "Handle passing of status messages between screens of a web application";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystViewCSV = buildPerlPackage {
+    pname = "Catalyst-View-CSV";
+    version = "1.7";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MC/MCB/Catalyst-View-CSV-1.7.tar.gz";
+      sha256 = "e41326b6099891f244b432921ed10096ac619f32b8c4f8b41633313bd54662db";
+    };
+    buildInputs = [ CatalystActionRenderView CatalystModelDBICSchema CatalystPluginConfigLoader CatalystXComponentTraits ConfigGeneral DBDSQLite DBIxClass TestException ];
+    propagatedBuildInputs = [ CatalystRuntime TextCSV ];
+    meta = {
+      description = "CSV view class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystViewDownload = buildPerlPackage {
+    pname = "Catalyst-View-Download";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAUDEON/Catalyst-View-Download-0.09.tar.gz";
+      sha256 = "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs";
+    };
+    buildInputs = [ CatalystRuntime TestLongString TestSimple13 TestWWWMechanize TestWWWMechanizeCatalyst TextCSV XMLSimple ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystViewJSON = buildPerlPackage {
+    pname = "Catalyst-View-JSON";
+    version = "0.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-View-JSON-0.37.tar.gz";
+      sha256 = "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ];
+    meta = {
+      description = "JSON view for your data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystViewTT = buildPerlPackage {
+    pname = "Catalyst-View-TT";
+    version = "0.45";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Catalyst-View-TT-0.45.tar.gz";
+      sha256 = "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8";
+    };
+    propagatedBuildInputs = [ CatalystRuntime ClassAccessor TemplateTimer ];
+    meta = {
+      description = "Template View Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystXComponentTraits = buildPerlPackage {
+    pname = "CatalystX-Component-Traits";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/CatalystX-Component-Traits-0.19.tar.gz";
+      sha256 = "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88";
+    };
+    propagatedBuildInputs = [ CatalystRuntime MooseXTraitsPluggable ];
+  };
+
+  CatalystXRoleApplicator = buildPerlPackage {
+    pname = "CatalystX-RoleApplicator";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HD/HDP/CatalystX-RoleApplicator-0.005.tar.gz";
+      sha256 = "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2";
+    };
+    propagatedBuildInputs = [ CatalystRuntime MooseXRelatedClassRoles ];
+  };
+
+  CatalystTraitForRequestProxyBase = buildPerlPackage {
+    pname = "Catalyst-TraitFor-Request-ProxyBase";
+    version = "0.000005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Catalyst-TraitFor-Request-ProxyBase-0.000005.tar.gz";
+      sha256 = "a7bf0faa7e12ca5df625d9f5fc710f11bfd16ba5385837e48d42b3d286c9710a";
+    };
+    buildInputs = [ CatalystRuntime CatalystXRoleApplicator HTTPMessage ];
+    propagatedBuildInputs = [ Moose URI namespaceautoclean ];
+    meta = {
+      description = "Replace request base with value passed by HTTP proxy";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CatalystXScriptServerStarman = buildPerlPackage {
+    pname = "CatalystX-Script-Server-Starman";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABRAXXA/CatalystX-Script-Server-Starman-0.03.tar.gz";
+      sha256 = "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6";
+    };
+    patches = [
+      # See Nixpkgs issues #16074 and #17624
+      ../development/perl-modules/CatalystXScriptServerStarman-fork-arg.patch
+    ];
+    buildInputs = [ TestWWWMechanizeCatalyst ];
+    propagatedBuildInputs = [ CatalystRuntime MooseXTypes PodParser Starman ];
+    meta = {
+      description = "Replace the development server with Starman";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CDB_File = buildPerlPackage {
+    pname = "CDB_File";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/CDB_File-1.05.tar.gz";
+      sha256 = "0jzbm59b9q51k00djr1b8c4vjvjkwb577r946vi5s09rasfq8r45";
+    };
+    meta = {
+      homepage = "https://github.com/toddr/CDB_File";
+      description = "Perl extension for access to cdb databases";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFatal TestWarnings ];
+    propagatedBuildInputs = [ BCOW ];
+  };
+
+  Catmandu = buildPerlModule {
+    pname = "Catmandu";
+    version = "1.2013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NICS/Catmandu-1.2013.tar.gz";
+      sha256 = "0sh4qqjh53rhqcpbvq3pyg0k1ybs8qxivhc1an6w5hjar2bihwiq";
+    };
+    propagatedBuildInputs = [ AnyURIEscape AppCmd CGIExpand ConfigOnion CpanelJSONXS DataCompare DataUtil IOHandleUtil LWP ListMoreUtils LogAny MIMETypes ModuleInfo MooXAliases ParserMGC PathIteratorRule PathTiny StringCamelCase TextCSV TextHogan Throwable TryTinyByClass URITemplate UUIDTiny YAMLLibYAML namespaceclean ];
+    buildInputs = [ LogAnyAdapterLog4perl LogLog4perl TestDeep TestException TestLWPUserAgent TestPod ];
+    meta = {
+      description = "a data toolkit";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/LibreCat/Catmandu";
+    };
+  };
+
+  CDDB_get = buildPerlPackage {
+    pname = "CDDB_get";
+    version = "2.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FO/FONKIE/CDDB_get-2.28.tar.gz";
+      sha256 = "1jfrwvfasylcafbvb0jjm94ad4v6k99a7rf5i4qwzhg4m0gvmk5x";
+    };
+    meta = {
+      description = "Get the CDDB info for an audio cd";
+      license = lib.licenses.artistic1;
+      maintainers = [ maintainers.endgame ];
+    };
+  };
+
+  CDDBFile = buildPerlPackage {
+    pname = "CDDB-File";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TM/TMTM/CDDB-File-1.05.tar.gz";
+      sha256 = "1jf7xhd4w9iwabhz2wajh6fid3nyvkid9q5gdhyff52w86f45rpb";
+    };
+    meta = {
+      description = "Parse a CDDB/freedb data file";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+
+  CGI = buildPerlPackage {
+    pname = "CGI";
+    version = "4.51";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEEJO/CGI-4.51.tar.gz";
+      sha256 = "02k0p8zwbn0fz9r39rg8jvbmky8fwdg6kznklzk557rg07kiblhb";
+    };
+    buildInputs = [ TestDeep TestNoWarnings TestWarn ];
+    propagatedBuildInputs = [ HTMLParser ];
+    meta = {
+      description = "Handle Common Gateway Interface requests and responses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CGICompile = buildPerlModule {
+     pname = "CGI-Compile";
+     version = "0.25";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RK/RKITOVER/CGI-Compile-0.25.tar.gz";
+       sha256 = "198f94r9xjxgn0hvwy5f93xfa8jlw7d9v3v8z7qbh7mxvzp78jzl";
+     };
+     propagatedBuildInputs = [ Filepushd SubName ];
+     buildInputs = [ CGI CaptureTiny ModuleBuildTiny SubIdentify Switch TestNoWarnings TestRequires TryTiny ];
+     meta = {
+       description = "Compile .cgi scripts to a code reference like ModPerl::Registry";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/CGI-Compile";
+     };
+  };
+
+  CGICookieXS = buildPerlPackage {
+    pname = "CGI-Cookie-XS";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGENT/CGI-Cookie-XS-0.18.tar.gz";
+      sha256 = "1iixvnm0l1q24vdlnayb4vd8fns2bdlhm6zb7fpi884ppm5cp6a6";
+    };
+  };
+
+  CGIEmulatePSGI = buildPerlPackage {
+    pname = "CGI-Emulate-PSGI";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/CGI-Emulate-PSGI-0.23.tar.gz";
+      sha256 = "dd5b6c353f08fba100dae09904284f7f73f8328d31f6a67b2c136fad728d158b";
+    };
+    buildInputs = [ TestRequires ];
+    propagatedBuildInputs = [ CGI ];
+    meta = {
+      homepage = "https://github.com/tokuhirom/p5-cgi-emulate-psgi";
+      description = "PSGI adapter for CGI";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CGIExpand = buildPerlPackage {
+    pname = "CGI-Expand";
+    version = "2.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOWMANBS/CGI-Expand-2.05.tar.gz";
+      sha256 = "1ad48nd067j5irjampxpw3zvzpg8wpnpan6szkdc5h64wccd30kf";
+    };
+    meta = {
+      description = "Convert flat hash to nested data using TT2's dot convention";
+    };
+    buildInputs = [ TestException ];
+  };
+
+  CGIFast = buildPerlPackage {
+    pname = "CGI-Fast";
+    version = "2.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEEJO/CGI-Fast-2.15.tar.gz";
+      sha256 = "e5342df3dc593edfb724c7afe850b1a0ee753f4d733f5193e037b04633dfeece";
+    };
+    propagatedBuildInputs = [ CGI FCGI ];
+    doCheck = false;
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CGIFormBuilder = buildPerlPackage {
+    pname = "CGI-FormBuilder";
+    version = "3.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BIGPRESH/CGI-FormBuilder-3.10.tar.gz";
+      sha256 = "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf";
+    };
+
+    propagatedBuildInputs = [ CGI ];
+  };
+
+  CGIMinimal = buildPerlModule {
+    pname = "CGI-Minimal";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SN/SNOWHARE/CGI-Minimal-1.30.tar.gz";
+      sha256 = "b94d50821b02611da6ee5423193145078c4dbb282f2b162a4b0d58094997bc47";
+    };
+    meta = {
+      description = "A lightweight CGI form processing package";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CGIPSGI = buildPerlPackage {
+    pname = "CGI-PSGI";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/CGI-PSGI-0.15.tar.gz";
+      sha256 = "c50dcb10bf8486a9843baed032ad89d879ff2f41c993342dead62f947a598d91";
+    };
+    propagatedBuildInputs = [ CGI ];
+    meta = {
+      description = "Adapt CGI.pm to the PSGI protocol";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CGISession = buildPerlModule {
+    pname = "CGI-Session";
+    version = "4.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-4.48.tar.gz";
+      sha256 = "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6";
+    };
+    propagatedBuildInputs = [ CGI ];
+  };
+
+  CGISimple = buildPerlModule {
+    pname = "CGI-Simple";
+    version = "1.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/CGI-Simple-1.25.tar.gz";
+      sha256 = "0zpl7sa8jvv3zba2vcxf3qsrjk7kk2vcznfdpmxydw06x8vczrp5";
+    };
+    propagatedBuildInputs = [ IOStringy ];
+    meta = {
+      description = "A Simple totally OO CGI interface that is CGI.pm compliant";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestException TestNoWarnings ];
+  };
+
+  CGIStruct = buildPerlPackage {
+    pname = "CGI-Struct";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FU/FULLERMD/CGI-Struct-1.21.tar.gz";
+      sha256 = "d13d8da7fdcd6d906054e4760fc28a718aec91bd3cf067a58927fb7cb1c09d6c";
+    };
+    buildInputs = [ TestDeep ];
+    meta = {
+      description = "Build structures from CGI data";
+      license = lib.licenses.bsd2;
+    };
+  };
+
+  CHI = buildPerlPackage {
+    pname = "CHI";
+    version = "0.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JS/JSWARTZ/CHI-0.60.tar.gz";
+      sha256 = "c7f1a2b3570a8fede484e933f89ba1729e0abd05935791d146c522dd120ee851";
+    };
+    preConfigure = ''
+      # fix error 'Unescaped left brace in regex is illegal here in regex'
+      substituteInPlace lib/CHI/t/Driver/Subcache/l1_cache.pm --replace 'qr/CHI stats: {' 'qr/CHI stats: \{'
+    '';
+    buildInputs = [ TestClass TestDeep TestException TestWarn TimeDate ];
+    propagatedBuildInputs = [ CarpAssert ClassLoad DataUUID DigestJHash HashMoreUtils JSONMaybeXS ListMoreUtils LogAny Moo MooXTypesMooseLikeNumeric StringRewritePrefix TaskWeaken TimeDuration TimeDurationParse ];
+    meta = {
+      description = "Unified cache handling interface";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Chart = buildPerlPackage {
+    pname = "Chart";
+    version = "2.4.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHARTGRP/Chart-2.4.10.tar.gz";
+      sha256 = "84bd99a1a0ce72477b15e35881e6120398bb3f553aeeb5e8d72b088520e4f6bf";
+    };
+    propagatedBuildInputs = [ GD ];
+    meta = {
+        description = "A series of charting modules";
+        license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CiscoIPPhone = buildPerlPackage {
+    pname = "Cisco-IPPhone";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRPALMER/Cisco-IPPhone-0.05.tar.gz";
+      sha256 = "b03ca263f8f41a6ec545c5393213a3146d36bd45335ade99af51dd42ab6ee16d";
+    };
+    meta = {
+      description = "Package for creating Cisco IPPhone XML objects";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  CLASS = buildPerlPackage {
+    pname = "CLASS";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/CLASS-1.00.tar.gz";
+      sha256 = "c5185620815701b3fec21314ccd8c5693e6bfd519431527da3370a8164220671";
+    };
+    meta = {
+      homepage = "https://metacpan.org/pod/CLASS";
+      description = "Alias for __PACKAGE__";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ClassAccessor = buildPerlPackage {
+    pname = "Class-Accessor";
+    version = "0.51";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KASEI/Class-Accessor-0.51.tar.gz";
+      sha256 = "07215zzr4ydf49832vn54i3gf2q5b97lydkv8j56wb2svvjs64mz";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassAccessorChained = buildPerlModule {
+    pname = "Class-Accessor-Chained";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Class-Accessor-Chained-0.01.tar.gz";
+      sha256 = "1lilrjy1s0q5hyr0888kf0ifxjyl2iyk4vxil4jsv0sgh39lkgx5";
+    };
+    propagatedBuildInputs = [ ClassAccessor ];
+  };
+
+  ClassAccessorGrouped = buildPerlPackage {
+    pname = "Class-Accessor-Grouped";
+    version = "0.10014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Class-Accessor-Grouped-0.10014.tar.gz";
+      sha256 = "35d5b03efc09f67f3a3155c9624126c3e162c8e3ca98ff826db358533a44c4bb";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ ModuleRuntime ];
+    meta = {
+      description = "Lets you build groups of accessors";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassAccessorLite = buildPerlPackage {
+    pname = "Class-Accessor-Lite";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/Class-Accessor-Lite-0.08.tar.gz";
+      sha256 = "75b3b8ec8efe687677b63f0a10eef966e01f60735c56656ce75cbb44caba335a";
+    };
+    meta = {
+      description = "A minimalistic variant of Class::Accessor";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassAutouse = buildPerlPackage {
+    pname = "Class-Autouse";
+    version = "2.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADAMK/Class-Autouse-2.01.tar.gz";
+      sha256 = "c05b3236c05719d819c20db0fdeb6d0954747e43d7a738294eed7fbcf36ecf1b";
+    };
+    meta = {
+      description = "Run-time load a class the first time you call a method in it";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassBase = buildPerlPackage {
+    pname = "Class-Base";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YANICK/Class-Base-0.09.tar.gz";
+      sha256 = "117dmsrb30a09zlrv919fb5h5rg8r4asa24i99k04n2habgbv9g1";
+    };
+    propagatedBuildInputs = [ Clone ];
+  };
+
+  ClassC3 = buildPerlPackage {
+    pname = "Class-C3";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Class-C3-0.35.tar.gz";
+      sha256 = "0gp3czp6y0jxx4448kz37f7gdxq4vw514bvc0l98rk4glvqkq1c4";
+    };
+    propagatedBuildInputs = [ AlgorithmC3 ];
+    meta = {
+      description = "A pragma to use the C3 method resolution order algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassC3AdoptNEXT = buildPerlModule {
+    pname = "Class-C3-Adopt-NEXT";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Class-C3-Adopt-NEXT-0.14.tar.gz";
+      sha256 = "1xsbydmiskpa1qbmnf6n39cb83nlb432xgkad9kfhxnvm8jn4rw5";
+    };
+    buildInputs = [ ModuleBuildTiny TestException ];
+    propagatedBuildInputs = [ MROCompat ];
+    meta = {
+      description = "Make NEXT suck less";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassC3Componentised = buildPerlPackage {
+    pname = "Class-C3-Componentised";
+    version = "1.001002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Class-C3-Componentised-1.001002.tar.gz";
+      sha256 = "14wn1g45z3b5apqq7dcai5drk01hfyqydsd2m6hsxzhyvi3b2l9h";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ ClassC3 ClassInspector MROCompat ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassClassgenclassgen = buildPerlPackage {
+    pname = "Class-Classgen-classgen";
+    version = "3.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHLUE/Class-Classgen-classgen-3.03.tar.gz";
+      sha256 = "9b65d41b991538992e816b32cc4fa9b4a4a0bb3e9c10e7eebeff82658dbbc8f6";
+    };
+  };
+
+  ClassContainer = buildPerlModule {
+    pname = "Class-Container";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KW/KWILLIAMS/Class-Container-0.13.tar.gz";
+      sha256 = "f5d495b1dfb826d5c0c45d03b4d0e6b6047cbb06cdbf6be15fd4dc902aeeb70b";
+    };
+    propagatedBuildInputs = [ ParamsValidate ];
+    meta = {
+      description = "Glues object frameworks together transparently";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassDataAccessor = buildPerlPackage {
+    pname = "Class-Data-Accessor";
+    version = "0.04004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLACO/Class-Data-Accessor-0.04004.tar.gz";
+      sha256 = "0578m3rplk41059rkkjy1009xrmrdivjnv8yxadwwdk1vzidc8n1";
+    };
+  };
+
+  ClassDataInheritable = buildPerlPackage {
+    pname = "Class-Data-Inheritable";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz";
+      sha256 = "0jpi38wy5xh6p1mg2cbyjjw76vgbccqp46685r27w8hmxb7gwrwr";
+    };
+  };
+
+  ClassEHierarchy = buildPerlPackage {
+    pname = "Class-EHierarchy";
+    version = "2.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORLISS/Class-EHierarchy/Class-EHierarchy-2.01.tar.gz";
+      sha256 = "637ab76beb3832a9b071b999a1b15bf05d297df6a662ccb1a8004f2987308382";
+    };
+    meta = {
+      description = "Base class for hierarchally ordered objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  ClassFactory = buildPerlPackage {
+    pname = "Class-Factory";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/Class-Factory-1.06.tar.gz";
+      sha256 = "c37a2d269eb935f36a23e113480ae0946fa7c12a12781396a1226c8e435f30f5";
+    };
+  };
+
+  ClassFactoryUtil = buildPerlModule {
+    pname = "Class-Factory-Util";
+    version = "1.7";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Class-Factory-Util-1.7.tar.gz";
+      sha256 = "09ifd6v0c94vr20n9yr1dxgcp7hyscqq851szdip7y24bd26nlbc";
+    };
+    meta = {
+      description = "Provide utility methods for factory classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassGomor = buildPerlModule {
+    pname = "Class-Gomor";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GO/GOMOR/Class-Gomor-1.03.tar.gz";
+      sha256 = "02r0zylv8c5cb34j0w2kmf8hfw6g6bymfif7z65skzz9kkm3rns7";
+    };
+    meta = {
+      description = "another class and object builder";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  ClassInspector = buildPerlPackage {
+    pname = "Class-Inspector";
+    version = "1.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Class-Inspector-1.36.tar.gz";
+      sha256 = "0kk900bp8iq7bw5jyllfb31gvf93mmp24n4x90j7qs3jlhimsafc";
+    };
+    meta = {
+      description = "Get information about a class and its structure";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassISA = buildPerlPackage {
+    pname = "Class-ISA";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Class-ISA-0.36.tar.gz";
+      sha256 = "0r5r574i6wgxm8zsq4bc34d0dzprrh6h6mpp1nhlks1qk97g65l8";
+    };
+  };
+
+  ClassIterator = buildPerlPackage {
+    pname = "Class-Iterator";
+    version = "0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TE/TEXMEC/Class-Iterator-0.3.tar.gz";
+      sha256 = "db1ba87ca9107f161fe9c1e9e7e267c0026defc26fe3e73bcad8ab8ffc18ef9d";
+    };
+    meta = {
+    };
+  };
+
+  ClassLoader = buildPerlPackage rec {
+    pname = "Class-Loader";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPUL/Class-Loader-2.03.tar.gz";
+      sha256 = "4fef2076ead60423454ff1f4e82859a9a9b9942b5fb8eee0c98b9c63c9f2b8e7";
+    };
+    meta = {
+      description = "Load modules and create objects on demand";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassMakeMethods = buildPerlPackage {
+    pname = "Class-MakeMethods";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EV/EVO/Class-MakeMethods-1.01.tar.gz";
+      sha256 = "0ricb0mn0i06ngfhq5y035yx8i7ahlx83yyqwixqmv6hg4p79b5c";
+    };
+    preConfigure = ''
+      # fix error 'Unescaped left brace in regex is illegal here in regex'
+      substituteInPlace tests/xemulator/class_methodmaker/Test.pm --replace 's/(TEST\s{)/$1/g' 's/(TEST\s\{)/$1/g'
+    '';
+  };
+
+  ClassMethodMaker = buildPerlPackage {
+    pname = "Class-MethodMaker";
+    version = "2.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCHWIGON/class-methodmaker/Class-MethodMaker-2.24.tar.gz";
+      sha256 = "0a03i4k3a33qqwhykhz5k437ld5mag2vq52vvsy03gbynb65ivsy";
+    };
+    # Remove unnecessary, non-autoconf, configure script.
+    prePatch = "rm configure";
+    meta = {
+      description = "A module for creating generic methods";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassMethodModifiers = buildPerlPackage {
+    pname = "Class-Method-Modifiers";
+    version = "2.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Class-Method-Modifiers-2.13.tar.gz";
+      sha256 = "0qzx83mgd71hlc2m1kpw15dqsjzjq7b2cj3sdgg45a0q23vhfn5b";
+    };
+    buildInputs = [ TestFatal TestNeeds ];
+    meta = {
+      homepage = "https://github.com/moose/Class-Method-Modifiers";
+      description = "Provides Moose-like method modifiers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassMix = buildPerlModule {
+    pname = "Class-Mix";
+    version = "0.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Class-Mix-0.006.tar.gz";
+      sha256 = "8747f643893914f8c44979f1716d0c1ec8a41394796555447944e860f1ff7c0b";
+    };
+    propagatedBuildInputs = [ ParamsClassify ];
+    meta = {
+      description = "Dynamic class mixing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassReturnValue = buildPerlPackage {
+    pname = "Class-ReturnValue";
+    version = "0.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JESSE/Class-ReturnValue-0.55.tar.gz";
+      sha256 = "ed3836885d78f734ccd7a98550ec422a616df7c31310c1b7b1f6459f5fb0e4bd";
+    };
+    propagatedBuildInputs = [ DevelStackTrace ];
+    meta = {
+      description = "A smart return value object";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassSingleton = buildPerlPackage {
+    pname = "Class-Singleton";
+    version = "1.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/Class-Singleton-1.6.tar.gz";
+      sha256 = "1942j9g0b4c88nvs3jghh3y31mlhbpwrx35xdcb2jaaiv7q17fi7";
+    };
+  };
+
+  ClassThrowable = buildPerlPackage {
+    pname = "Class-Throwable";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KM/KMX/Class-Throwable-0.13.tar.gz";
+      sha256 = "1kmwzdxvp9ca2z44vl0ygkfygdbxqkilzjd8vqhc4vdmvbh136nw";
+    };
+  };
+
+  ClassTiny = buildPerlPackage {
+     pname = "Class-Tiny";
+     version = "1.008";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Class-Tiny-1.008.tar.gz";
+       sha256 = "05anh4hn8va46xwbdx7rqxnhb8i1lingb614lywzr89gj5iql1gf";
+     };
+     meta = {
+       description = "Minimalist class construction";
+       license = with lib.licenses; [ asl20 ];
+       homepage = "https://github.com/dagolden/Class-Tiny";
+     };
+  };
+
+  ClassLoad = buildPerlPackage {
+    pname = "Class-Load";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Class-Load-0.25.tar.gz";
+      sha256 = "2a48fa779b5297e56156380e8b32637c6c58decb4f4a7f3c7350523e11275f8f";
+    };
+    buildInputs = [ TestFatal TestNeeds ];
+    propagatedBuildInputs = [ DataOptList PackageStash ];
+    meta = {
+      homepage = "https://github.com/moose/Class-Load";
+      description = "A working (require \"Class::Name\") and more";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassLoadXS = buildPerlPackage {
+    pname = "Class-Load-XS";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Class-Load-XS-0.10.tar.gz";
+      sha256 = "5bc22cf536ebfd2564c5bdaf42f0d8a4cee3d1930fc8b44b7d4a42038622add1";
+    };
+    buildInputs = [ TestFatal TestNeeds ];
+    propagatedBuildInputs = [ ClassLoad ];
+    meta = {
+      homepage = "https://github.com/moose/Class-Load-XS";
+      description = "XS implementation of parts of Class::Load";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  ClassObservable = buildPerlPackage {
+    pname = "Class-Observable";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CW/CWINTERS/Class-Observable-1.04.tar.gz";
+      sha256 = "3ef18733a0f03c113f3bcf8ac50476e09ca1fe6234f4aaacaa24dfca95168094";
+    };
+    propagatedBuildInputs = [ ClassISA ];
+  };
+
+  ClassStd = buildPerlModule {
+    pname = "Class-Std";
+    version = "0.013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Class-Std-0.013.tar.gz";
+      sha256 = "bcd6d82f6c8af0fe069fced7dd165a4795b0b6e92351c7d4e5a1ab9a14fc35c6";
+    };
+    meta = {
+      description = "Support for creating standard 'inside-out' classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassStdFast = buildPerlModule {
+    pname = "Class-Std-Fast";
+    version = "0.0.8";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AC/ACID/Class-Std-Fast-v0.0.8.tar.gz";
+      sha256 = "1057rz95jsr66gam472i4zdv04v7bmzph3m3jwq1hwx3qrikgm0v";
+    };
+    propagatedBuildInputs = [ ClassStd ];
+    checkInputs = [ TestPod TestPodCoverage ];
+    meta = with lib; {
+      description = "Faster but less secure than Class::Std";
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassUnload = buildPerlPackage {
+    pname = "Class-Unload";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/Class-Unload-0.11.tar.gz";
+      sha256 = "0pqa98z3ij6a3v9wkmvc8b410kv30y0xxqf0i6if3lp4lx3rgqjj";
+    };
+    propagatedBuildInputs = [ ClassInspector ];
+    buildInputs = [ TestRequires ];
+  };
+
+  ClassVirtual = buildPerlPackage {
+    pname = "Class-Virtual";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/Class-Virtual-0.08.tar.gz";
+      sha256 = "c6499b42d3b4e5c6488a5e82fbc28698e6c9860165072dddfa6749355a9cfbb2";
+    };
+    propagatedBuildInputs = [ CarpAssert ClassDataInheritable ClassISA ];
+    meta = {
+      description = "Base class for virtual base classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ClassXSAccessor = buildPerlPackage {
+    pname = "Class-XSAccessor";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Class-XSAccessor-1.19.tar.gz";
+      sha256 = "1wm6013il899jnm0vn50a7iv9v6r4nqywbqzj0csyf8jbwwnpicr";
+    };
+    meta = {
+      description = "Generate fast XS accessors without runtime compilation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CLDRNumber = buildPerlModule {
+    pname = "CLDR-Number";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PA/PATCH/CLDR-Number-0.19.tar.gz";
+      sha256 = "c6716488e65fe779ff79a83f0f2036ad94463efe3d0f349c6b99112975bd85fc";
+    };
+    buildInputs = [ SoftwareLicense TestDifferences TestException TestWarn ];
+    propagatedBuildInputs =
+      [ ClassMethodModifiers MathRound Moo namespaceclean ];
+    meta = {
+      homepage = "https://github.com/patch/cldr-number-pm5";
+      description = "Localized number formatters using the Unicode CLDR";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CLIHelpers = buildPerlPackage {
+    pname = "CLI-Helpers";
+    version = "1.8";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BL/BLHOTSKY/CLI-Helpers-1.8.tar.gz";
+      sha256 = "1hgiynpy7q4gbx1d9pwnzdzil36k13vjxhscalj710ikcddvjz92";
+    };
+    buildInputs = [ PodCoverageTrustPod TestPerlCritic ];
+    propagatedBuildInputs = [ CaptureTiny RefUtil SubExporter TermReadKey YAML ];
+    meta = {
+      homepage = "https://github.com/reyjrar/CLI-Helpers";
+      description = "Subroutines for making simple command line scripts";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  Clipboard = buildPerlModule {
+    pname = "Clipboard";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Clipboard-0.26.tar.gz";
+      sha256 = "886ae43dc8538f9bfc4e07fdbcf09b7fbd6ee59c31f364618c859de14953c58a";
+    };
+    meta = {
+      description = "Clipboard - Copy and Paste with any OS";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ CGI ];
+    # Disable test on darwin because MacPasteboard fails when not logged in interactively.
+    # Mac OS error -4960 (coreFoundationUnknownErr): The unknown error at lib/Clipboard/MacPasteboard.pm line 3.
+    # Mac-Pasteboard-0.009.readme: 'NOTE that Mac OS X appears to restrict pasteboard access to processes that are logged in interactively.
+    #     Ssh sessions and cron jobs can not create the requisite pasteboard handles, giving coreFoundationUnknownErr (-4960)'
+    doCheck = !stdenv.isDarwin;
+  };
+
+
+  Clone = buildPerlPackage {
+    pname = "Clone";
+    version = "0.45";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AT/ATOOMIC/Clone-0.45.tar.gz";
+      sha256 = "1rm9g68fklni63jdkrlgqq6yfj95fm33p2bq90p475gsi8sfxdnb";
+    };
+    meta = {
+      description = "Recursively copy Perl datatypes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ BCOW ];
+  };
+
+  CloneChoose = buildPerlPackage {
+     pname = "Clone-Choose";
+     version = "0.010";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/H/HE/HERMES/Clone-Choose-0.010.tar.gz";
+       sha256 = "0cin2bjn5z8xhm9v4j7pwlkx88jnvz8al0njdjwyvs6fb0glh8sn";
+     };
+     buildInputs = [ Clone ClonePP TestWithoutModule ];
+     meta = {
+       description = "Choose appropriate clone utility";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ClonePP = buildPerlPackage {
+     pname = "Clone-PP";
+     version = "1.08";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Clone-PP-1.08.tar.gz";
+       sha256 = "0y7m25fksiavzg4xj4cm9zkz8rmnk4iqy7lm01m4nmyqlna3082p";
+     };
+     meta = {
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  CodeTidyAll = buildPerlPackage {
+     pname = "Code-TidyAll";
+     version = "0.78";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DR/DROLSKY/Code-TidyAll-0.78.tar.gz";
+       sha256 = "1dmr6zkgcnc6cam204f00g5yly46cplbn9k45ginw02rv10vnpij";
+     };
+     propagatedBuildInputs = [ CaptureTiny ConfigINI FileWhich Filepushd IPCRun3 IPCSystemSimple ListCompare ListSomeUtils LogAny Moo ScopeGuard SpecioLibraryPathTiny TextDiff TimeDate TimeDurationParse ];
+     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 lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  CodeTidyAllPluginPerlAlignMooseAttributes = buildPerlPackage {
+     pname = "Code-TidyAll-Plugin-Perl-AlignMooseAttributes";
+     version = "0.01";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/J/JS/JSWARTZ/Code-TidyAll-Plugin-Perl-AlignMooseAttributes-0.01.tar.gz";
+       sha256 = "1r8w5kfm17j1dyrrsjhwww423zzdzhx1i3d3brl32wzhasgf47cd";
+     };
+     propagatedBuildInputs = [ CodeTidyAll TextAligner ];
+     meta = {
+       description = "TidyAll plugin to sort and align Moose-style attributes";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ColorLibrary = buildPerlPackage {
+    pname = "Color-Library";
+    version = "0.021";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROKR/Color-Library-0.021.tar.gz";
+      sha256 = "58cbf7e333d3a4a40297abc43412b321da449c6816020e4fa6625ab079fc90a5";
+    };
+    buildInputs = [ TestMost TestWarn TestException TestDeep TestDifferences ModulePluggable ];
+    propagatedBuildInputs = [ ClassAccessor ClassDataInheritable ];
+    meta = {
+      description = "An easy-to-use and comprehensive named-color library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CommandRunner = buildPerlModule {
+    pname = "Command-Runner";
+    version = "0.103";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/Command-Runner-0.103.tar.gz";
+      sha256 = "0f180b5c3b3fc9db7b83d4a5fdd959db34f7d6d2472f817dbf8b4b795a9dc82a";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ CaptureTiny StringShellQuote Win32ShellQuote ];
+    meta = {
+      homepage = "https://github.com/skaji/Command-Runner";
+      description = "Run external commands and Perl code refs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  commonsense = buildPerlPackage {
+    pname = "common-sense";
+    version = "3.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/common-sense-3.75.tar.gz";
+      sha256 = "0zhfp8f0czg69ycwn7r6ayg6idm5kyh2ai06g5s6s07kli61qsm8";
+    };
+    meta = {
+      description = "Implements some sane defaults for Perl programs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CompressBzip2 = buildPerlPackage {
+    pname = "Compress-Bzip2";
+    version = "2.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Compress-Bzip2-2.28.tar.gz";
+      sha256 = "859f835c3f5c998810d8b2a6f9e282ff99d6cb66ccfa55cae7e66dafb035116e";
+    };
+    meta = {
+      description = "Interface to Bzip2 compression library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+   CompressLZF = buildPerlPackage rec {
+    pname = "Compress-LZF";
+    version = "3.8";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/${pname}-${version}.tar.gz";
+      sha256 = "5d1f5df48ce13b4dee1cc9f278ecdbf8177877b0b98815a4eb3c91c3466716f2";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CompressRawBzip2 = buildPerlPackage {
+    pname = "Compress-Raw-Bzip2";
+    version = "2.101";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/Compress-Raw-Bzip2-2.101.tar.gz";
+      sha256 = "1n5q01akpsw1skn59c3nivwjfqcn00wzdj8gx4q0wac8sd7i76qc";
+    };
+
+    # Don't build a private copy of bzip2.
+    BUILD_BZIP2 = false;
+    BZIP2_LIB = "${pkgs.bzip2.out}/lib";
+    BZIP2_INCLUDE = "${pkgs.bzip2.dev}/include";
+
+    meta = {
+      description = "Low-Level Interface to bzip2 compression library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CompressRawLzma = buildPerlPackage {
+    pname = "Compress-Raw-Lzma";
+    version = "2.101";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/Compress-Raw-Lzma-2.101.tar.gz";
+      sha256 = "bb267fd31981eda11f444038f8a0fca4b94a51ae61b2db71246abf6a4d322a36";
+    };
+    preConfigure = ''
+      cat > config.in <<EOF
+        INCLUDE      = ${pkgs.xz.dev}/include
+        LIB          = ${pkgs.xz.out}/lib
+      EOF
+    '';
+    meta = {
+      homepage = "https://github.com/pmqs/Compress-Raw-Lzma";
+      description = "Low-Level Interface to lzma compression library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CompressRawZlib = buildPerlPackage {
+    pname = "Compress-Raw-Zlib";
+    version = "2.101";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.101.tar.gz";
+      sha256 = "1cmb39dw928jssa3fzk4pxb7sw8q1zyx3yikgq01nz17x0ara6wx";
+    };
+
+    preConfigure = ''
+      cat > config.in <<EOF
+        BUILD_ZLIB   = False
+        INCLUDE      = ${pkgs.zlib.dev}/include
+        LIB          = ${pkgs.zlib.out}/lib
+        OLD_ZLIB     = False
+        GZIP_OS_CODE = AUTO_DETECT
+      EOF
+    '';
+
+    doCheck = !stdenv.isDarwin;
+
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CompressUnLZMA = buildPerlPackage {
+    pname = "Compress-unLZMA";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FERREIRA/Compress-unLZMA-0.05.tar.gz";
+      sha256 = "1f0pcpcjjj60whqc5sc5jd0dd7z3si4fnp268w4ykmcjini03s2d";
+    };
+  };
+
+  ConfigAny = buildPerlPackage {
+    pname = "Config-Any";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Config-Any-0.32.tar.gz";
+      sha256 = "0l31sg7dwh4dwwnql42hp7arkhcm15bhsgfg4i6xvbjzy9f2mnk8";
+    };
+    propagatedBuildInputs = [ ModulePluggable ];
+    meta = {
+      description = "Load configuration from different file formats, transparently";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigAutoConf = buildPerlPackage {
+    pname = "Config-AutoConf";
+    version = "0.319";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/Config-AutoConf-0.319.tar.gz";
+      sha256 = "0gm3l0qyrgiia67lsmzjfb6ihgbdx1lidli7w47lq9jk4v66ckrh";
+    };
+    propagatedBuildInputs = [ CaptureTiny ];
+    meta = {
+      description = "A module to implement some of AutoConf macros in pure perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigGeneral = buildPerlPackage {
+    pname = "Config-General";
+    version = "2.63";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TL/TLINDEN/Config-General-2.63.tar.gz";
+      sha256 = "1bbg3wp0xcpj04cmm86j1x0j5968jqi5s2c87qs7dgmap1vzk6qa";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigGitLike = buildPerlPackage {
+    pname = "Config-GitLike";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/Config-GitLike-1.18.tar.gz";
+      sha256 = "f7ae7440f3adab5b9ff9aa57216d84fd4a681009b9584e32da42f8bb71e332c5";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ Moo MooXTypesMooseLike ];
+    meta = {
+      description = "Git-compatible config file parsing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigGrammar = buildPerlPackage {
+    pname = "Config-Grammar";
+    version = "1.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSCHWEI/Config-Grammar-1.13.tar.gz";
+      sha256 = "a8b3a3a2c9c8c43b92dc401bf2709d6514f15b467fd4f72c48d356335771d6e3";
+    };
+    meta = {
+      homepage = "https://github.com/schweikert/Config-Grammar";
+      description = "A grammar-based, user-friendly config parser";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigINI = buildPerlPackage {
+    pname = "Config-INI";
+    version = "0.025";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Config-INI-0.025.tar.gz";
+      sha256 = "628bf76d5b91f89dde22d4813ec033026ebf71b772bb61ccda909da00c869732";
+    };
+    propagatedBuildInputs = [ MixinLinewise ];
+    meta = {
+      homepage = "https://github.com/rjbs/Config-INI";
+      description = "Simple .ini-file format";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigIdentity = buildPerlPackage {
+     pname = "Config-Identity";
+     version = "0.0019";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Config-Identity-0.0019.tar.gz";
+       sha256 = "1a0jx12pxwpbnkww4xg4lav8j6ls89hrdimhj4a697k56zdhnli9";
+     };
+     propagatedBuildInputs = [ FileHomeDir IPCRun ];
+     buildInputs = [ TestDeep ];
+     meta = {
+       description = "Load (and optionally decrypt via GnuPG) user/pass identity information ";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/dagolden/Config-Identity";
+     };
+  };
+
+  ConfigIniFiles = buildPerlPackage {
+    pname = "Config-IniFiles";
+    version = "3.000003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Config-IniFiles-3.000003.tar.gz";
+      sha256 = "3c457b65d98e5ff40bdb9cf814b0d5983eb0c53fb8696bda3ba035ad2acd6802";
+    };
+    propagatedBuildInputs = [ IOStringy ];
+    meta = {
+      description = "A module for reading .ini-style configuration files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  ConfigMerge = buildPerlPackage {
+    pname = "Config-Merge";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DRTECH/Config-Merge-1.04.tar.gz";
+      sha256 = "a932477b43ae5fb04a16f071a891da7bd2086c10c680592f2888fa9d9972cccf";
+    };
+    buildInputs = [ YAML ];
+    propagatedBuildInputs = [ ConfigAny ];
+    meta = {
+      description = "Load a configuration directory tree containing YAML, JSON, XML, Perl, INI or Config::General files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigOnion = buildPerlPackage {
+    pname = "Config-Onion";
+    version = "1.007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSHEROH/Config-Onion-1.007.tar.gz";
+      sha256 = "1bx81nakvgj9m7x1q7pnra2cm1rzfdyf7fm2wmlj92qkivvdszrj";
+    };
+    propagatedBuildInputs = [ ConfigAny HashMergeSimple Moo ];
+    buildInputs = [ TestException YAML ];
+    meta = {
+      description = "Layered configuration, because configs are like ogres";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigMVP = buildPerlPackage {
+    pname = "Config-MVP";
+    version = "2.200011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Config-MVP-2.200011.tar.gz";
+      sha256 = "23c95666fc43c4adaebcc093b1b56091efc2a6aa2d75366a216d18eda96ad716";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ModulePluggable MooseXOneArgNew RoleHasMessage RoleIdentifiable Throwable TieIxHash ];
+    meta = {
+      homepage = "https://github.com/rjbs/Config-MVP";
+      description = "Multivalue-property package-oriented configuration";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigMVPReaderINI = buildPerlPackage {
+    pname = "Config-MVP-Reader-INI";
+    version = "2.101463";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Config-MVP-Reader-INI-2.101463.tar.gz";
+      sha256 = "0iflnsh0sgihff3ra8sr7awiiscmqvrp1anaskkwksqi6yzidab9";
+    };
+    propagatedBuildInputs = [ ConfigINI ConfigMVP ];
+    meta = {
+      homepage = "https://github.com/rjbs/Config-MVP-Reader-INI";
+      description = "An MVP config reader for .ini files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigProperties = buildPerlPackage {
+    pname = "Config-Properties";
+    version = "1.80";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Config-Properties-1.80.tar.gz";
+      sha256 = "5d04395be7e14e970a03ea952fb7629ae304d97c031f90cc1c29bd0a6a62fc40";
+    };
+    meta = {
+      description = "Read and write property files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConfigSimple = buildPerlPackage {
+    pname = "Config-Simple";
+    version = "4.58";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHERZODR/Config-Simple-4.58.tar.gz";
+      sha256 = "1d7dhvis1i03xlj8z3g5l8mz88kf7dn13zngbjhq94qgdxq9b6fx";
+    };
+    meta = {
+      description = "Simple configuration file class";
+    };
+  };
+
+  ConfigStd = buildPerlModule {
+    pname = "Config-Std";
+    version = "0.903";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BRICKER/Config-Std-0.903.tar.gz";
+      sha256 = "b7709ff663bd279d264ab9c2f51e9e9588479a3367a8c4cfc18659c2a11480fe";
+    };
+    propagatedBuildInputs = [ ClassStd ];
+    meta = {
+      description = "Load and save configuration files in a standard format";
+    };
+  };
+
+  ConfigTiny = buildPerlPackage {
+    pname = "Config-Tiny";
+    version = "2.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Config-Tiny-2.24.tgz";
+      sha256 = "0cjj2f0pj9y3cx1lgk2qp6arsnyaacf7kj6v33iqczn59f798r0h";
+    };
+    buildInputs = [ TestPod ];
+  };
+
+  ConfigVersioned = buildPerlPackage {
+    pname = "Config-Versioned";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRSCOTTY/Config-Versioned-1.01.tar.gz";
+      sha256 = "bc9a4ae3738bd89f86a07bca673627ca3c92ba969737cd6dbc7ab7ad17cd2348";
+    };
+    propagatedBuildInputs = [ ConfigStd GitPurePerl ];
+    doCheck = false;
+    meta = {
+      description = "Simple, versioned access to configuration data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Connector = buildPerlPackage {
+    pname = "Connector";
+    version = "1.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRSCOTTY/Connector-1.35.tar.gz";
+      sha256 = "0jnwcvjibywdfq4x5n3np9fxvpsgqq6vjpn72sfa2xfdwrp7dna1";
+    };
+    buildInputs = [ ConfigMerge ConfigStd ConfigVersioned DBDSQLite DBI IOSocketSSL JSON LWP LWPProtocolHttps ProcSafeExec TemplateToolkit YAML ];
+    propagatedBuildInputs = [ LogLog4perl Moose ];
+    prePatch = ''
+      # Attempts to use network.
+      rm t/01-proxy-http.t
+      rm t/01-proxy-proc-safeexec.t
+    '';
+    meta = {
+      description = "A generic connection to a hierarchical-structured data set";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConstFast = buildPerlModule {
+     pname = "Const-Fast";
+     version = "0.014";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/L/LE/LEONT/Const-Fast-0.014.tar.gz";
+       sha256 = "1nwlldgrx86yn7y6a53cqgvzm2ircsvxg1addahlcy6510x9a1gq";
+     };
+     propagatedBuildInputs = [ SubExporterProgressive ];
+     buildInputs = [ ModuleBuildTiny TestFatal ];
+     meta = {
+       description = "Facility for creating read-only scalars, arrays, and hashes";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ConvertASCIIArmour = buildPerlPackage {
+    pname = "Convert-ASCII-Armour";
+    version = "1.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPUL/Convert-ASCII-Armour-1.4.tar.gz";
+      sha256 = "97e8acb6eb2a2a91af7d6cf0d2dff6fa42aaf939fc7d6d1c6057a4f0df52c904";
+    };
+    meta = {
+      description = "Convert binary octets into ASCII armoured messages";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ConvertASN1 = buildPerlPackage {
+    pname = "Convert-ASN1";
+    version = "0.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TIMLEGGE/Convert-ASN1-0.33.tar.gz";
+      sha256 = "0xk0s2rnwjb7ydhwfinpjcbw25im54b8cs7r9hj3m7n7412h1pqz";
+    };
+  };
+
+  ConvertBase32 = buildPerlPackage {
+    pname = "Convert-Base32";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IK/IKEGAMI/Convert-Base32-0.06.tar.gz";
+      sha256 = "4ba82c167c41f455aa8284738727e4c94a2ebcb1c4ce797f6fda07245a642115";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      homepage = "https://metacpan.org/pod/Convert::Base32";
+      description = "Encoding and decoding of base32 strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ConvertBencode = buildPerlPackage rec {
+    pname = "Convert-Bencode";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OR/ORCLEV/Convert-Bencode-1.03.tar.gz";
+      sha256 = "0v2ywj18px67mg97xnrdq9mnlzgqvj92pr2g47g9c9b9cpw3v7r6";
+    };
+    meta = {
+      description = "Functions for converting to/from bencoded strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConvertColor = buildPerlModule {
+    pname = "Convert-Color";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Convert-Color-0.11.tar.gz";
+      sha256 = "b41217c72931034ba4417d7a9e1e2999f04580d4e6b31c70993fedccc2440d38";
+    };
+    buildInputs = [ TestNumberDelta ];
+    propagatedBuildInputs = [ ListUtilsBy ModulePluggable ];
+    meta = {
+      description = "Color space conversions and named lookups";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ConvertUU = buildPerlPackage rec {
+    pname = "Convert-UU";
+    version = "0.5201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDK/Convert-UU-0.5201.tar.gz";
+      sha256 = "92329ce1c32b5952c48e1223db018c8c58ceafef03bfa0fd4817cd89c355a3bd";
+    };
+    meta = {
+      description = "Perl module for uuencode and uudecode";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  constantboolean = buildPerlModule {
+    pname = "constant-boolean";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/constant-boolean-0.02.tar.gz";
+      sha256 = "1s8gxfg4xqp543aqanv5lbp64vqqyw6ic4x3fm4imkk1h3amjb6d";
+    };
+    propagatedBuildInputs = [ SymbolUtil ];
+  };
+
+  curry = buildPerlPackage {
+     pname = "curry";
+     version = "1.001000";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MS/MSTROUT/curry-1.001000.tar.gz";
+       sha256 = "1m2n3w67cskh8ic6vf6ik0fmap9zma875kr5rhyznr1041wn064b";
+     };
+     meta = {
+       description = "Create automatic curried method call closures for any class or object";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  constant-defer = buildPerlPackage {
+    pname = "constant-defer";
+    version = "6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/constant-defer-6.tar.gz";
+      sha256 = "1ykgk0rd05p7kyrdxbv047fj7r0b4ix9ibpkzxp6h8nak0qjc8bv";
+    };
+  };
+
+  ContextPreserve = buildPerlPackage {
+    pname = "Context-Preserve";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Context-Preserve-0.03.tar.gz";
+      sha256 = "07zxgmb11bn4zj3w9g1zwbb9iv4jyk5q7hc0nv59knvv5i64m489";
+    };
+    buildInputs = [ TestException TestSimple13 ];
+  };
+
+  CookieBaker = buildPerlModule {
+    pname = "Cookie-Baker";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZEBURO/Cookie-Baker-0.11.tar.gz";
+      sha256 = "59275f474e07c0aa3611e3e684b894e7db913333d8214420be63f12ec18cd7ab";
+    };
+    buildInputs = [ ModuleBuildTiny TestTime ];
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      homepage = "https://github.com/kazeburo/Cookie-Baker";
+      description = "Cookie string generator / parser";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CookieXS = buildPerlPackage {
+    pname = "Cookie-XS";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGENT/Cookie-XS-0.11.tar.gz";
+      sha256 = "1616rcn2qn1cwiv3rxb8mq5fmwxpj4gya1lxxxq2w952h03p3fd3";
+    };
+    propagatedBuildInputs = [ CGICookieXS ];
+  };
+
+  Coro = buildPerlPackage {
+     pname = "Coro";
+     version = "6.57";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Coro-6.57.tar.gz";
+       sha256 = "1ihl2zaiafr2k5jzj46j44j8vxqs23fqcsahypmi23jl6f0f8a0r";
+     };
+     propagatedBuildInputs = [ AnyEvent Guard commonsense ];
+     buildInputs = [ CanaryStability ];
+     meta = {
+     };
+  };
+
+  CoroEV = buildPerlPackage rec {
+    pname = "CoroEV";
+    version = "6.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Coro-${version}.tar.gz";
+      sha256 = "43d79c027170fcda4ca0ee92734605bc95e122686f5071b94d90764c81ae8a30";
+    };
+    buildInputs = [ CanaryStability ];
+    propagatedBuildInputs = [ AnyEvent Coro EV Guard commonsense ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    preConfigure = ''
+      cd EV
+    '';
+  };
+
+  Corona = buildPerlPackage {
+     pname = "Corona";
+     version = "0.1004";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Corona-0.1004.tar.gz";
+       sha256 = "0g5gpma3998rn61qfjv5csv2nrdi4sc84ipkb4k6synyhfgd3xgz";
+     };
+     propagatedBuildInputs = [ NetServerCoro Plack ];
+     buildInputs = [ TestSharedFork TestTCP ];
+     meta = {
+       description = "Coro based PSGI web server";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  CPAN = buildPerlPackage {
+    pname = "CPAN";
+    version = "2.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDK/CPAN-2.29.tar.gz";
+      sha256 = "1f55672efd505a9baacfa1924d115362120aa6bf8efab7a17c7cb090b17ccc41";
+    };
+    propagatedBuildInputs = [ ArchiveZip CPANChecksums CPANPerlReleases CompressBzip2 Expect FileHomeDir FileWhich LWP LogLog4perl ModuleSignature TermReadKey TextGlob YAML YAMLLibYAML YAMLSyck IOSocketSSL ];
+    meta = {
+      description = "Query, download and build perl modules from CPAN sites";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANMini = buildPerlPackage {
+    pname = "CPAN-Mini";
+    version = "1.111016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/CPAN-Mini-1.111016.tar.gz";
+      sha256 = "5a297afc3e367ad80811464d4eb7e4dd3caff8ba499cdd2b558f6279443a7657";
+    };
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    propagatedBuildInputs = [ FileHomeDir LWPProtocolHttps ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CpanelJSONXS = buildPerlPackage {
+    pname = "Cpanel-JSON-XS";
+    version = "4.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Cpanel-JSON-XS-4.25.tar.gz";
+      sha256 = "061940vyj9y3rzwq47z2a3f5i5rfpa90ccz7fgz228zr7njkvfpr";
+    };
+    meta = {
+      description = "CPanel fork of JSON::XS, fast and correct serializing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPAN02PackagesSearch = buildPerlModule {
+    pname = "CPAN-02Packages-Search";
+    version = "0.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/CPAN-02Packages-Search-0.001.tar.gz";
+      sha256 = "02dgqplar99a2i2b08pnapznyp4il70wsvpm8163ywwfwqn1ap37";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ TieHandleOffset ];
+    meta = {
+      homepage = "https://github.com/skaji/CPAN-02Packages-Search";
+      description = "Search packages in 02packages.details.txt";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  CPANChanges = buildPerlPackage {
+    pname = "CPAN-Changes";
+    version = "0.400002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/CPAN-Changes-0.400002.tar.gz";
+      sha256 = "01eedea90d07468cb58e4a50bfa3bb1d4eeda9073596add1118fc359153abe8d";
+    };
+    meta = {
+      description = "Read and write Changes files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANChecksums = buildPerlPackage {
+    pname = "CPAN-Checksums";
+    version = "2.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDK/CPAN-Checksums-2.14.tar.gz";
+      sha256 = "4080716c5da7e03b504e3cc0ea1fd5ef9ed6915f6fb737564e9e13d355a89e39";
+    };
+    propagatedBuildInputs = [ CompressBzip2 DataCompare ModuleSignature ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANCommonIndex = buildPerlPackage {
+    pname = "CPAN-Common-Index";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/CPAN-Common-Index-0.010.tar.gz";
+      sha256 = "c43ddbb22fd42b06118fe6357f53700fbd77f531ba3c427faafbf303cbf4eaf0";
+    };
+    buildInputs = [ TestDeep TestFailWarnings TestFatal ];
+    propagatedBuildInputs = [ CPANDistnameInfo ClassTiny TieHandleOffset URI ];
+    meta = {
+      homepage = "https://github.com/Perl-Toolchain-Gang/CPAN-Common-Index";
+      description = "Common library for searching CPAN modules, authors and distributions";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  CPANDistnameInfo = buildPerlPackage {
+     pname = "CPAN-DistnameInfo";
+     version = "0.12";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz";
+       sha256 = "0d94kx596w7k328cvq4y96z1gz12hdhn3z1mklkbrb7fyzlzn91g";
+     };
+     meta = {
+       description = "Extract distribution name and version from a distribution filename";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  CPANMetaCheck = buildPerlPackage {
+    pname = "CPAN-Meta-Check";
+    version = "0.014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/CPAN-Meta-Check-0.014.tar.gz";
+      sha256 = "07rmdbz1rbnb7w33vswn1wixlyh947sqr93xrvcph1hwzhmmg818";
+    };
+    buildInputs = [ TestDeep ];
+    meta = {
+      description = "Verify requirements in a CPAN::Meta object";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANPerlReleases = buildPerlPackage {
+    pname = "CPAN-Perl-Releases";
+    version = "5.20201120";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/CPAN-Perl-Releases-5.20201120.tar.gz";
+      sha256 = "1qsjm26556kqxyvj85c7j37mh2xw78fm3i7f58mpqkfawxip4q3k";
+    };
+    meta = {
+      homepage = "https://github.com/bingos/cpan-perl-releases";
+      description = "Mapping Perl releases on CPAN to the location of the tarballs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANPLUS = buildPerlPackage {
+    pname = "CPANPLUS";
+    version = "0.9908";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/CPANPLUS-0.9908.tar.gz";
+      sha256 = "1m4xas67fax947kahvg4jsnsr2r1i58c5g3f1bixh7krgnsarxjq";
+    };
+    propagatedBuildInputs = [ ArchiveExtract ModulePluggable ObjectAccessor PackageConstants TermUI ];
+    meta = {
+      homepage = "https://github.com/jib/cpanplus-devel";
+      description = "Ameliorated interface to the CPAN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CPANUploader = buildPerlPackage {
+    pname = "CPAN-Uploader";
+    version = "0.103015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/CPAN-Uploader-0.103015.tar.gz";
+      sha256 = "1idvkxqzc53hjs808gc6z6873bg4gn6zz499df0wppi56vz7w24f";
+    };
+    propagatedBuildInputs = [ FileHomeDir GetoptLongDescriptive LWPProtocolHttps TermReadKey ];
+    meta = {
+      homepage = "https://github.com/rjbs/cpan-uploader";
+      description = "Upload things to the CPAN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptArgon2 = perlPackages.buildPerlModule {
+    pname = "Crypt-Argon2";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Argon2-0.010.tar.gz";
+      sha256 = "3ea1c006f10ef66fd417e502a569df15c4cc1c776b084e35639751c41ce6671a";
+    };
+    nativeBuildInputs = [ pkgs.ld-is-cc-hook ];
+    meta = {
+      description = "Perl interface to the Argon2 key derivation functions";
+      license = lib.licenses.cc0;
+    };
+  };
+
+  CryptBlowfish = buildPerlPackage {
+    pname = "Crypt-Blowfish";
+    version = "2.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DP/DPARIS/Crypt-Blowfish-2.14.tar.gz";
+      sha256 = "1cb7g8cyfs9alrfdykxhs8m6azj091fmcycz6p5vkxbbzcgl7cs6";
+    };
+  };
+
+  CryptCAST5_PP = buildPerlPackage {
+    pname = "Crypt-CAST5_PP";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBMATH/Crypt-CAST5_PP-1.04.tar.gz";
+      sha256 = "cba98a80403fb898a14c928f237f44816b4848641840ce2517363c2c071b5327";
+    };
+    meta = {
+      description = "CAST5 block cipher in pure Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptCBC = buildPerlPackage {
+    pname = "Crypt-CBC";
+    version = "2.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LD/LDS/Crypt-CBC-2.33.tar.gz";
+      sha256 = "0ig698lmpjz7fslnznxm0609lvlnvf4f3s370082nzycnqhxww3a";
+    };
+  };
+
+  CryptCurve25519 = buildPerlPackage {
+    pname = "Crypt-Curve25519";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AJ/AJGB/Crypt-Curve25519-0.06.tar.gz";
+      sha256 = "1ir0gfxm8i7r9zyfs2zvil5jgwirl7j6cb9cm1p2kjpfnhyp0j4z";
+    };
+    patches = [
+      (fetchpatch {
+        url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-perl/Crypt-Curve25519/files/Crypt-Curve25519-0.60.0-fmul-fixedvar.patch?id=cec727ad614986ca1e6b9468eea7f1a5a9183382";
+        sha256 = "0l005jzxp6q6vyl3p43ji47if0v9inscnjl0vxaqzf6c17akgbhf";
+      })
+    ];
+    meta = {
+      description = "Generate shared secret using elliptic-curve Diffie-Hellman function";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptDES = buildPerlPackage {
+    pname = "Crypt-DES";
+    version = "2.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DP/DPARIS/Crypt-DES-2.07.tar.gz";
+      sha256 = "1rypxlhpd1jc0c327aghgl9y6ls47drmpvn0a40b4k3vhfsypc9d";
+    };
+  };
+
+  CryptDES_EDE3 = buildPerlPackage {
+    pname = "Crypt-DES_EDE3";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BT/BTROTT/Crypt-DES_EDE3-0.01.tar.gz";
+      sha256 = "9cb2e04b625e9cc0833cd499f76fd12556583ececa782a9758a55e3f969748d6";
+    };
+    propagatedBuildInputs = [ CryptDES ];
+    meta = {
+      description = "Triple-DES EDE encryption/decryption";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptDH = buildPerlPackage {
+    pname = "Crypt-DH";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MITHALDU/Crypt-DH-0.07.tar.gz";
+      sha256 = "0pvzlgwpx8fzdy64ki15155vhsj30i9zxmw6i4p7irh17d1g7368";
+    };
+    propagatedBuildInputs = [ MathBigIntGMP ];
+  };
+
+  CryptDHGMP = buildPerlPackage {
+    pname = "Crypt-DH-GMP";
+    version = "0.00012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DM/DMAKI/Crypt-DH-GMP-0.00012.tar.gz";
+      sha256 = "0f5gdprcql4kwzgxl2s6ngcfg1jl45lzcqh7dkv5bkwlwmxa9rsi";
+    };
+    buildInputs = [ pkgs.gmp DevelChecklib TestRequires ];
+    NIX_CFLAGS_COMPILE = "-I${pkgs.gmp.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
+  };
+
+  CryptDSA = buildPerlPackage {
+    pname = "Crypt-DSA";
+    version = "1.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADAMK/Crypt-DSA-1.17.tar.gz";
+      sha256 = "d1b8585f6bf746f76e5dc5da3641d325ed656bc2e5f344b54514b55c31009a03";
+    };
+    propagatedBuildInputs = [ DataBuffer DigestSHA1 FileWhich ];
+    meta = {
+      description = "DSA Signatures and Key Generation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptECB = buildPerlPackage {
+    pname = "Crypt-ECB";
+    version = "2.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AP/APPEL/Crypt-ECB-2.22.tar.gz";
+      sha256 = "f5af62e908cd31a34b2b813135a0718016fd003ffa0021ffbdd84c50158267aa";
+    };
+    meta = with lib; {
+      description = "Use block ciphers using ECB mode";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptEksblowfish = buildPerlModule {
+    pname = "Crypt-Eksblowfish";
+    version = "0.009";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Crypt-Eksblowfish-0.009.tar.gz";
+      sha256 = "3cc7126d5841107237a9be2dc5c7fbc167cf3c4b4ce34678a8448b850757014c";
+    };
+    propagatedBuildInputs = [ ClassMix ];
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+  };
+
+  CryptFormat = buildPerlPackage {
+    pname = "Crypt-Format";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FELIPE/Crypt-Format-0.10.tar.gz";
+      sha256 = "89ddc010a6c91d5be7a1874a528eed6eda39f2c401c18e63d80ddfbf7127e2dd";
+    };
+    buildInputs = [ TestException TestFailWarnings ];
+    meta = {
+      description = "Conversion utilities for encryption applications";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptIDEA = buildPerlPackage {
+    pname = "Crypt-IDEA";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DP/DPARIS/Crypt-IDEA-1.10.tar.gz";
+      sha256 = "0690lzlyjqgmnb94dq7dm5n6pgybg10fkpgfycgzr814370pig9k";
+    };
+  };
+
+  CryptJWT = buildPerlPackage {
+    pname = "Crypt-JWT";
+    version = "0.029";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIK/Crypt-JWT-0.029.tar.gz";
+      sha256 = "0fccff29065a0098eef151deeb33c12c0d68e16a1cb4e7465b26ebbd4c18cd2f";
+    };
+    propagatedBuildInputs = [ CryptX JSON ];
+    meta = {
+      description = "JSON Web Token";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptPassphrase = buildPerlPackage {
+    pname = "Crypt-Passphrase";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Passphrase-0.003.tar.gz";
+      sha256 = "685aa090f8179a86d6896212ccf8ccfde7a79cce857199bb14e2277a10d240ad";
+    };
+    meta = {
+      description = "A module for managing passwords in a cryptographically agile manner";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptPassphraseArgon2 = buildPerlPackage {
+    pname = "Crypt-Passphrase-Argon2";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Passphrase-Argon2-0.003.tar.gz";
+      sha256 = "sha256-cCkLtb3GfBcBKN8+UWexfQS7eTkzqubAWnWGfao/OTg=";
+    };
+    propagatedBuildInputs = with perlPackages; [ CryptArgon2 CryptPassphrase ];
+    meta = {
+      description = "An Argon2 encoder for Crypt::Passphrase";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptPassphraseBcrypt = buildPerlPackage {
+    pname = "Crypt-Passphrase-Bcrypt";
+    version = "0.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Passphrase-Bcrypt-0.001.tar.gz";
+      sha256 = "sha256-M44nA4RH/eAjznyaC1dPR+4zeQRKDAgxrJRx8UMNxMU=";
+    };
+    propagatedBuildInputs = [ CryptEksblowfish CryptPassphrase ];
+    meta = {
+      homepage = "https://github.com/Leont/crypt-passphrase-bcrypt";
+      description = "A bcrypt encoder for Crypt::Passphrase";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptPasswdMD5 = buildPerlModule {
+    pname = "Crypt-PasswdMD5";
+    version = "1.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Crypt-PasswdMD5-1.40.tgz";
+      sha256 = "0j0r74f18nk63phddzqbf7wqma2ci4p4bxvrwrxsy0aklbp6lzdp";
+    };
+  };
+
+  CryptPKCS10 = buildPerlModule {
+    pname = "Crypt-PKCS10";
+    version = "2.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRSCOTTY/Crypt-PKCS10-2.001.tar.gz";
+      sha256 = "f7945b76a2d8f4d8ecf627b2eb8ea4f41d001e6a915efe82e71d6b97fea3ffa9";
+    };
+    buildInputs = [ pkgs.unzip ModuleBuildTiny ];
+    propagatedBuildInputs = [ ConvertASN1 ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptRandomSeed = buildPerlPackage {
+    pname = "Crypt-Random-Seed";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANAJ/Crypt-Random-Seed-0.03.tar.gz";
+      sha256 = "593da54b522c09cc26bbcc0e4e49c1c8e688a6fd33b0726af801d722a5c8d0f1";
+    };
+    propagatedBuildInputs = [ CryptRandomTESHA2 ];
+    meta = {
+      homepage = "https://github.com/danaj/Crypt-Random-Seed";
+      description = "Provide strong randomness for seeding";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptRandom = buildPerlPackage rec {
+    pname = "Crypt-Random";
+    version = "1.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPUL/Crypt-Random-1.52.tar.gz";
+      sha256 = "a93c06de409e6f2eb2e9868ea6d4e653d99f2f7900b2c1831e1f65ace0c4ef84";
+    };
+    propagatedBuildInputs = [ ClassLoader MathPari StatisticsChiSquare ];
+    meta = {
+      description = "Interface to /dev/random and /dev/urandom";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptRandomSource = buildPerlModule {
+    pname = "Crypt-Random-Source";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Crypt-Random-Source-0.14.tar.gz";
+      sha256 = "1rpdds3sy5l1fhngnkrsgwsmwd54wpicx3i9ds69blcskwkcwkpc";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestSimple13 ];
+    propagatedBuildInputs = [ CaptureTiny ModuleFind Moo SubExporter TypeTiny namespaceclean ];
+    meta = {
+      description = "Get weak or strong random data from pluggable sources";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptRandomTESHA2 = buildPerlPackage {
+    pname = "Crypt-Random-TESHA2";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANAJ/Crypt-Random-TESHA2-0.01.tar.gz";
+      sha256 = "a0912b42c52be173da528d5527e40d967324bc04ac78d9fc2ddc91ff16fe9633";
+    };
+    meta = {
+      homepage = "https://github.com/danaj/Crypt-Random-TESHA2";
+      description = "Random numbers using timer/schedule entropy, aka userspace voodoo entropy";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptRC4 = buildPerlPackage {
+    pname = "Crypt-RC4";
+    version = "2.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SI/SIFUKURT/Crypt-RC4-2.02.tar.gz";
+      sha256 = "1sp099cws0q225h6j4y68hmfd1lnv5877gihjs40f8n2ddf45i2y";
+    };
+  };
+
+  CryptRandPasswd = buildPerlPackage {
+    pname = "Crypt-RandPasswd";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Crypt-RandPasswd-0.06.tar.gz";
+      sha256 = "0ca8544371wp4vvqsa19lnhl02hczpkbwkgsgm65ziwwim3r1gdi";
+    };
+  };
+
+  CryptRIPEMD160 = buildPerlPackage {
+    pname = "Crypt-RIPEMD160";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Crypt-RIPEMD160-0.08.tar.gz";
+      sha256 = "0cmj620kfg08yvh81bq1sbabdyyc3g9pc6vlngxdxjgn0xvcil9l";
+    };
+    meta = {
+      homepage = "https://wiki.github.com/toddr/Crypt-RIPEMD160";
+      description = "Perl extension for the RIPEMD-160 Hash function";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptMySQL = buildPerlModule {
+    pname = "Crypt-MySQL";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IK/IKEBE/Crypt-MySQL-0.04.tar.gz";
+      sha256 = "93ebdfaaefcfe9ab683f0121c85f24475d8197f0bcec46018219e4111434dde3";
+    };
+    propagatedBuildInputs = [ DigestSHA1 ];
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+  };
+
+  CryptRijndael = buildPerlPackage {
+    pname = "Crypt-Rijndael";
+    version = "1.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Crypt-Rijndael-1.15.tar.gz";
+      sha256 = "0qs1b6ma4sj0ip5d8544fzgc1bbankc4qlmznp8hay8dk5arp650";
+    };
+  };
+
+  CryptUnixCryptXS = buildPerlPackage {
+    pname = "Crypt-UnixCrypt_XS";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BORISZ/Crypt-UnixCrypt_XS-0.11.tar.gz";
+      sha256 = "1ajg3x6kwxy4x9p3nw1j36qjxpjvdpi9wkca5gfd86y9q8939sv2";
+    };
+  };
+
+  CryptURandom = buildPerlPackage {
+    pname = "Crypt-URandom";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DD/DDICK/Crypt-URandom-0.36.tar.gz";
+      sha256 = "81fec9921adc5d3c91cbe0ad8cb2bb89b045c4fb0de9cb3c43f17e58e477f8a1";
+    };
+    meta = {
+      description = "Provide non blocking randomness";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptScryptKDF = buildPerlModule {
+    pname = "Crypt-ScryptKDF";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIK/Crypt-ScryptKDF-0.010.tar.gz";
+      sha256 = "7d16ee95cce3eb54c174673a7299f4c086fba3ac85f847d0e134feed5f776017";
+    };
+    propagatedBuildInputs = [ CryptOpenSSLRandom ];
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "Scrypt password based key derivation function";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/DCIT/perl-Crypt-ScryptKDF";
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptSmbHash = buildPerlPackage {
+    pname = "Crypt-SmbHash";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BJ/BJKUIT/Crypt-SmbHash-0.12.tar.gz";
+      sha256 = "0dxivcqmabkhpz5xzph6rzl8fvq9xjy26b2ci77pv5gsmdzari38";
+    };
+  };
+
+  CryptSodium = buildPerlPackage {
+    pname = "Crypt-Sodium";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MG/MGREGORO/Crypt-Sodium-0.11.tar.gz";
+      sha256 = "0y3c24zv4iwnvlf9zwxambk8ddram54fm6l1m5yhbskc0nhp6z4h";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.libsodium.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.libsodium.out}/lib -lsodium";
+    meta = {
+      homepage = "https://metacpan.org/release/Crypt-Sodium";
+      description = "Perl bindings for libsodium (NaCL)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptTwofish = buildPerlPackage {
+    pname = "Crypt-Twofish";
+    version = "2.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AM/AMS/Crypt-Twofish-2.18.tar.gz";
+      sha256 = "00fms8v94wr3lmn1nqjcfw30p5scsyr4s3dah8ijm5w7c5fmb0aq";
+    };
+    meta = {
+      description = "The Twofish Encryption Algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptOpenPGP = buildPerlPackage {
+    pname = "Crypt-OpenPGP";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SROMANOV/Crypt-OpenPGP-1.12.tar.gz";
+      sha256 = "e8a7ff2a993b76a69ad6dffdbe55755be5678b84e6ec494dcd9ab966f766f50e";
+    };
+    patches = [
+      # See https://github.com/NixOS/nixpkgs/pull/93599
+      ../development/perl-modules/crypt-openpgp-remove-impure-keygen-tests.patch
+    ];
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ AltCryptRSABigInt CryptCAST5_PP CryptDES_EDE3 CryptDSA CryptIDEA CryptRIPEMD160 CryptRijndael CryptTwofish FileHomeDir LWP ];
+
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+    doCheck = false; /* test fails with 'No random source available!' */
+  };
+
+  CryptOpenSSLAES = buildPerlPackage {
+    pname = "Crypt-OpenSSL-AES";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TT/TTAR/Crypt-OpenSSL-AES-0.02.tar.gz";
+      sha256 = "b66fab514edf97fc32f58da257582704a210c2b35e297d5c31b7fa2ffd08e908";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
+    meta = with lib; {
+      description = "Perl wrapper around OpenSSL's AES library";
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptOpenSSLBignum = buildPerlPackage {
+    pname = "Crypt-OpenSSL-Bignum";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KM/KMX/Crypt-OpenSSL-Bignum-0.09.tar.gz";
+      sha256 = "1p22znbajq91lbk2k3yg12ig7hy5b4vy8igxwqkmbm4nhgxp4ki3";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
+  };
+
+  CryptOpenSSLGuess = buildPerlPackage {
+     pname = "Crypt-OpenSSL-Guess";
+     version = "0.11";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AK/AKIYM/Crypt-OpenSSL-Guess-0.11.tar.gz";
+       sha256 = "0rvi9l4ljcbhwwvspq019nfq2h2v746dk355h2nwnlmqikiihsxa";
+     };
+     meta = {
+       description = "Guess OpenSSL include path";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/akiym/Crypt-OpenSSL-Guess";
+     };
+  };
+
+  CryptOpenSSLRandom = buildPerlPackage {
+    pname = "Crypt-OpenSSL-Random";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Crypt-OpenSSL-Random-0.15.tar.gz";
+      sha256 = "1x6ffps8q7mnawmcfq740llzy7i10g3319vap0wiw4d33fm6z1zh";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
+    buildInputs = [ CryptOpenSSLGuess ];
+  };
+
+  CryptOpenSSLRSA = buildPerlPackage {
+    pname = "Crypt-OpenSSL-RSA";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Crypt-OpenSSL-RSA-0.31.tar.gz";
+      sha256 = "4173403ad4cf76732192099f833fbfbf3cd8104e0246b3844187ae384d2c5436";
+    };
+    propagatedBuildInputs = [ CryptOpenSSLRandom ];
+    NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
+    buildInputs = [ CryptOpenSSLGuess ];
+  };
+
+  CryptOpenSSLX509 = buildPerlPackage rec {
+    pname = "Crypt-OpenSSL-X509";
+    version = "1.813";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JO/JONASBN/Crypt-OpenSSL-X509-1.813.tar.gz";
+      sha256 = "684bd888d2ed4c748f8f6dd8e87c14afa2974b12ee01faa082ad9cfa1e321e62";
+    };
+    NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto";
+    meta = {
+      homepage = "https://github.com/dsully/perl-crypt-openssl-x509";
+      description = "Perl extension to OpenSSL's X509 API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptPBKDF2 = buildPerlPackage {
+    pname = "Crypt-PBKDF2";
+    version = "0.161520";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARODLAND/Crypt-PBKDF2-0.161520.tar.gz";
+      sha256 = "97dfa79a309a086e184a4e61047f8a10ffb3db051025e7d222a25f19130ba417";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ DigestHMAC DigestSHA3 Moo TypeTiny namespaceautoclean strictures ];
+    meta = {
+      homepage = "https://metacpan.org/release/Crypt-PBKDF2";
+      description = "The PBKDF2 password hash algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptPerl = buildPerlPackage {
+    pname = "Crypt-Perl";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FELIPE/Crypt-Perl-0.34.tar.gz";
+      sha256 = "0e1cb223df0041f6d9b010f11e6f97a97ab55a118a273938eb4fe85d403f1b11";
+    };
+    checkInputs = [ pkgs.openssl MathBigIntGMP ];
+    buildInputs = [ CallContext FileSlurp FileWhich TestClass TestDeep TestException TestFailWarnings TestNoWarnings ];
+    propagatedBuildInputs = [ BytesRandomSecureTiny ClassAccessor ConvertASN1 CryptFormat MathProvablePrime SymbolGet TryTiny ];
+    meta = {
+      description = "Cryptography in pure Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  CryptEd25519 = buildPerlPackage {
+    pname = "Crypt-Ed25519";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Crypt-Ed25519-1.04.tar.gz";
+      sha256 = "1jwh6b8b2ppvzxaljz287zakj4q3ip4zq121i23iwh26wxhlll2q";
+    };
+
+    nativeBuildInputs = [ CanaryStability ];
+
+    meta = {
+      description = "Minimal Ed25519 bindings";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.thoughtpolice ];
+    };
+    buildInputs = [ CanaryStability ];
+  };
+
+  CryptSSLeay = buildPerlPackage {
+    pname = "Crypt-SSLeay";
+    version = "0.73_06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NA/NANIS/Crypt-SSLeay-0.73_06.tar.gz";
+      sha256 = "0b159lw3ia5r87qsgff3qhdnz3l09xcz04rbk4ji7fbyr12wmv7q";
+    };
+
+    makeMakerFlags = "--libpath=${pkgs.openssl.out}/lib --incpath=${pkgs.openssl.dev}/include";
+    buildInputs = [ PathClass ];
+    propagatedBuildInputs = [ BytesRandomSecure LWPProtocolHttps ];
+  };
+
+  CSSDOM = buildPerlPackage {
+    pname = "CSS-DOM";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SP/SPROUT/CSS-DOM-0.17.tar.gz";
+      sha256 = "09phb6c9czpcp9imq06khm54kspsx6hnvfrjxramx663ygmpifb5";
+    };
+    propagatedBuildInputs = [ Clone ];
+  };
+
+  CSSMinifier = buildPerlPackage {
+    pname = "CSS-Minifier";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMICHAUX/CSS-Minifier-0.01.tar.gz";
+      sha256 = "0Kk0m46LfoOrcM+IVM+7Qv8pwfbHyCmPIlfdIaoMf+8=";
+    };
+    meta = with lib; {
+      description = "Perl extension for minifying CSS";
+      license = licenses.artistic1;
+      maintainers = teams.determinatesystems.members;
+    };
+  };
+
+  CSSMinifierXS = buildPerlModule {
+    pname = "CSS-Minifier-XS";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz";
+      sha256 = "1myswrmh0sqp5xjpp03x45z8arfmgkjx0srl3r6kjsyzl1zrk9l8";
+    };
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    meta = {
+      description = "XS based CSS minifier";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CSSSquish = buildPerlPackage {
+    pname = "CSS-Squish";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TS/TSIBLEY/CSS-Squish-0.10.tar.gz";
+      sha256 = "65fc0d69acd1fa33d9a4c3b09cce0fbd737d747b1fcc4e9d87ebd91050cbcb4e";
+    };
+    buildInputs = [ TestLongString ];
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Compact many CSS files into one big file";
+    };
+  };
+
+  Curses = buildPerlPackage {
+    pname = "Curses";
+    version = "1.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GI/GIRAFFED/Curses-1.37.tar.gz";
+      sha256 = "086vaj4wh5473hbp5f4amk6l0yzm66yxdcd2znz5pcqrmpiplw3l";
+    };
+    propagatedBuildInputs = [ pkgs.ncurses ];
+    NIX_CFLAGS_LINK = "-lncurses";
+    meta = {
+      description = "Perl bindings to ncurses";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  CursesUI = buildPerlPackage {
+    pname = "Curses-UI";
+    version = "0.9609";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MD/MDXI/Curses-UI-0.9609.tar.gz";
+      sha256 = "1bqf4h8z70f78nzqq5yj4ahvsbhxxal6bc2g301l9qdn2fjjgf0a";
+    };
+    meta = {
+      description = "curses based OO user interface framework";
+      license = lib.licenses.artistic1;
+    };
+    propagatedBuildInputs = [ Curses TermReadKey ];
+  };
+
+  CursesUIGrid = buildPerlPackage {
+    pname = "Curses-UI-Grid";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADRIANWIT/Curses-UI-Grid-0.15.tar.gz";
+      sha256 = "0820ca4a9fb949ba8faf97af574018baeffb694e980c5087bb6522aa70b9dbec";
+    };
+    propagatedBuildInputs = [ CursesUI TestPod TestPodCoverage ];
+    meta = {
+      description = "Create and manipulate data in grid model";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptX = buildPerlPackage {
+    pname = "CryptX";
+    version = "0.069";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIK/CryptX-0.069.tar.gz";
+      sha256 = "b5503a35046a973174234a823dba63403b080957c4a370d60d66aa7c7587d850";
+    };
+    meta = {
+      description = "Crypto toolkit";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  CryptX509 = buildPerlPackage {
+    pname = "Crypt-X509";
+    version = "0.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRSCOTTY/Crypt-X509-0.53.tar.gz";
+      sha256 = "d2ff614f9457dc87ab277b81bced3532c3ed309b73b9a61aaefbe9488c9e660f";
+    };
+    propagatedBuildInputs = [ ConvertASN1 ];
+    meta = {
+      description = "Parse a X.509 certificate";
+    };
+  };
+
+  CwdGuard = buildPerlModule {
+    pname = "Cwd-Guard";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZEBURO/Cwd-Guard-0.05.tar.gz";
+      sha256 = "0xwf4rmii55k3lp19mpbh00mbgby7rxdk2lk84148bjhp6i7rz3s";
+    };
+    meta = {
+      description = "Temporary changing working directory (chdir)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestRequires ];
+  };
+
+  DataClone = buildPerlPackage {
+    pname = "Data-Clone";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GF/GFUJI/Data-Clone-0.004.tar.gz";
+      sha256 = "0g1qhi5qyk4fp0pwyaw90vxiyyn8las0i8ghzrnr4srai1wy3r9g";
+    };
+    buildInputs = [ TestRequires ];
+    meta = {
+      description = "Polymorphic data cloning";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataCompare = buildPerlPackage {
+    pname = "Data-Compare";
+    version = "1.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Data-Compare-1.27.tar.gz";
+      sha256 = "1gg8rqbv3x6a1lrpabv6vnlab53zxmpwz2ygad9fcx4gygqj12l1";
+    };
+    propagatedBuildInputs = [ Clone FileFindRule ];
+  };
+
+  DataDump = buildPerlPackage {
+    pname = "Data-Dump";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Data-Dump-1.23.tar.gz";
+      sha256 = "0r9ba52b7p8nnn6nw0ygm06lygi8g68piri78jmlqyrqy5gb0lxg";
+    };
+    meta = {
+      description = "Pretty printing of data structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataDumperAutoEncode = buildPerlModule {
+    pname = "Data-Dumper-AutoEncode";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BAYASHI/Data-Dumper-AutoEncode-1.00.tar.gz";
+      sha256 = "2d9a0262ad443d321dc489ef6dfa7b3eed11a2708a75d397d371bb2585e5eca1";
+    };
+    buildInputs = [ ModuleBuildPluggable ModuleBuildPluggableCPANfile ];
+    propagatedBuildInputs = [ IOInteractiveTiny ];
+    meta = {
+      description = "Dump with recursive encoding";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DataDumperConcise = buildPerlPackage {
+    pname = "Data-Dumper-Concise";
+    version = "2.023";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Data-Dumper-Concise-2.023.tar.gz";
+      sha256 = "a6c22f113caf31137590def1b7028a7e718eface3228272d0672c25e035d5853";
+    };
+    meta = {
+      description = "Less indentation and newlines plus sub deparsing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataEntropy = buildPerlModule {
+    pname = "Data-Entropy";
+    version = "0.007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Data-Entropy-0.007.tar.gz";
+      sha256 = "2611c4a1a3038594d79ea4ed14d9e15a9af8f77105f51667795fe4f8a53427e4";
+    };
+    propagatedBuildInputs = [ CryptRijndael DataFloat HTTPLite ParamsClassify ];
+  };
+
+  DataFloat = buildPerlModule {
+    pname = "Data-Float";
+    version = "0.013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Data-Float-0.013.tar.gz";
+      sha256 = "e2b1523d858930b8bbdbd196f08235f5e678b84919ba87712e26313b9c27518a";
+    };
+  };
+
+  DataFormValidator = buildPerlPackage {
+    pname = "Data-FormValidator";
+    version = "4.88";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DF/DFARRELL/Data-FormValidator-4.88.tar.gz";
+      sha256 = "c1a539f91c92cbcd8a8d83597ec9a7643fcd8ccf5a94e15382c3765289170066";
+    };
+    propagatedBuildInputs = [ DateCalc EmailValid FileMMagic ImageSize MIMETypes RegexpCommon ];
+    meta = {
+      description = "Validates user input (usually from an HTML form) based on input profile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ CGI ];
+  };
+
+  DataGUID = buildPerlPackage {
+    pname = "Data-GUID";
+    version = "0.049";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Data-GUID-0.049.tar.gz";
+      sha256 = "0yx7d4qwsr9n85gslip0y3mdwr5fkncfbwxz7si2a17x95yl7bxq";
+    };
+    propagatedBuildInputs = [ DataUUID SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/Data-GUID";
+      description = "Globally unique identifiers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataHexDump = buildPerlPackage {
+    pname = "Data-HexDump";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FT/FTASSIN/Data-HexDump-0.02.tar.gz";
+      sha256 = "1a9d843e7f667c1c6f77c67af5d77e7462ff23b41937cb17454d03535cd9be70";
+    };
+    meta = {
+      description = "Hexadecimal Dumper";
+      maintainers = with maintainers; [ AndersonTorres ];
+    };
+  };
+
+  DataHexdumper = buildPerlPackage {
+    pname = "Data-Hexdumper";
+    version = "3.0001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Data-Hexdumper-3.0001.tar.gz";
+      sha256 = "f9243cbe8affed5045fe4df505726a7a7289471e30c51ac065b3ed6ce0d1a604";
+    };
+    meta = {
+      description = "Make binary data human-readable";
+      license = with lib.licenses; [ artistic1 gpl2 ];
+    };
+  };
+
+  DataHierarchy = buildPerlPackage {
+    pname = "Data-Hierarchy";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLKAO/Data-Hierarchy-0.34.tar.gz";
+      sha256 = "1vfrkygdaq0k7006i83jwavg9wgszfcyzbl9b7fp37z2acmyda5k";
+    };
+    buildInputs = [ TestException ];
+  };
+
+  DataICal = buildPerlPackage {
+    pname = "Data-ICal";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Data-ICal-0.24.tar.gz";
+      sha256 = "7331c7c84886c53337c0db823615e0e7134a8f13efd284e5c20726d5bcd52dff";
+    };
+    buildInputs = [ TestLongString TestNoWarnings TestWarn ];
+    propagatedBuildInputs = [ ClassReturnValue TextvFileasData ];
+    meta = {
+      description = "Generates iCalendar (RFC 2445) calendar files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataIEEE754 = buildPerlPackage {
+    pname = "Data-IEEE754";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/Data-IEEE754-0.02.tar.gz";
+      sha256 = "07b73dlxd0qmxgkkrpa2xr61y18v3adlf1qgnl9k90kj8q9spx66";
+    };
+    buildInputs = [ TestBits ];
+    meta = {
+      description = "Pack and unpack big-endian IEEE754 floats and doubles";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  DataInteger = buildPerlModule {
+    pname = "Data-Integer";
+    version = "0.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Data-Integer-0.006.tar.gz";
+      sha256 = "0m53zxhx9sn49yqh7azlpyy9m65g54v8cd2ha98y77337gg7xdv3";
+    };
+  };
+
+  DataMessagePack = buildPerlModule {
+    pname = "Data-MessagePack";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYOHEX/Data-MessagePack-1.01.tar.gz";
+      sha256 = "8fa0ed0101d04e661821a7b78e8d62ce3e19b299275bbfed178e2ba8912663ea";
+    };
+    buildInputs = [ ModuleBuildXSUtil TestRequires ];
+    meta = {
+      homepage = "https://github.com/msgpack/msgpack-perl";
+      description = "MessagePack serializing/deserializing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.DataMessagePack.x86_64-darwin
+    };
+  };
+
+  DataOptList = buildPerlPackage {
+    pname = "Data-OptList";
+    version = "0.110";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Data-OptList-0.110.tar.gz";
+      sha256 = "1hzmgr2imdg1fc3hmwx0d56fhsdfyrgmgx7jb4jkyiv6575ifq9n";
+    };
+    propagatedBuildInputs = [ ParamsUtil SubInstall ];
+    meta = {
+      homepage = "https://github.com/rjbs/data-optlist";
+      description = "Parse and validate simple name/value option pairs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataPage = buildPerlPackage {
+    pname = "Data-Page";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Data-Page-2.03.tar.gz";
+      sha256 = "12rxrr2b11qjk0c437cisw2kfqkafw1awcng09cv6yhzglb55yif";
+    };
+    propagatedBuildInputs = [ ClassAccessorChained ];
+    buildInputs = [ TestException ];
+  };
+
+  DataPagePageset = buildPerlModule {
+    pname = "Data-Page-Pageset";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHUNZI/Data-Page-Pageset-1.02.tar.gz";
+      sha256 = "142isi8la383dbjxj7lfgcbmmrpzwckcc4wma6rdl8ryajsipb6f";
+    };
+    buildInputs = [ ClassAccessor DataPage TestException ];
+    meta = {
+      description = "change long page list to be shorter and well navigate";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataPassword = buildPerlPackage {
+    pname = "Data-Password";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RAZINF/Data-Password-1.12.tar.gz";
+      sha256 = "830cde81741ff384385412e16faba55745a54a7cc019dd23d7ed4f05d551a961";
+    };
+  };
+
+  DataPerl = buildPerlPackage {
+    pname = "Data-Perl";
+    version = "0.002011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/Data-Perl-0.002011.tar.gz";
+      sha256 = "8d34dbe314cfa2d99bd9aae546bbde94c38bb05b74b07c89bde1673a6f6c55f4";
+    };
+    buildInputs = [ TestDeep TestFatal TestOutput ];
+    propagatedBuildInputs = [ ClassMethodModifiers ListMoreUtils ModuleRuntime RoleTiny strictures ];
+    meta = {
+      homepage = "https://github.com/mattp-/Data-Perl";
+      description = "Base classes wrapping fundamental Perl data types";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataPrinter = buildPerlPackage {
+    pname = "Data-Printer";
+    version = "0.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GARU/Data-Printer-0.40.tar.gz";
+      sha256 = "0njjh8zp5afc4602jrnmg89icj7gfsil6i955ypcqxc2gl830sb0";
+    };
+    propagatedBuildInputs = [ ClonePP FileHomeDir PackageStash SortNaturally ];
+    meta = {
+      description = "colored pretty-print of Perl data structures and objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataRandom = buildPerlPackage {
+    pname = "Data-Random";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BAREFOOT/Data-Random-0.13.tar.gz";
+      sha256 = "eb590184a8db28a7e49eab09e25f8650c33f1f668b6a472829de74a53256bfc0";
+    };
+    buildInputs = [ FileShareDirInstall TestMockTime ];
+    meta = {
+      description = "Perl module to generate random data";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataSection = buildPerlPackage {
+    pname = "Data-Section";
+    version = "0.200007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Data-Section-0.200007.tar.gz";
+      sha256 = "1pmlxca0a8sv2jjwvhwgqavq6iwys6kf457lby4anjp3f1dpx4yd";
+    };
+    propagatedBuildInputs = [ MROCompat SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/data-section";
+      description = "Read multiple hunks of data out of your DATA section";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFailWarnings ];
+  };
+
+  DataSectionSimple = buildPerlPackage {
+    pname = "Data-Section-Simple";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Data-Section-Simple-0.07.tar.gz";
+      sha256 = "0b3035ffdb909aa1f7ded6b608fa9d894421c82c097d51e7171170d67579a9cb";
+    };
+    buildInputs = [ TestRequires ];
+    meta = {
+      homepage = "https://github.com/miyagawa/Data-Section-Simple";
+      description = "Read data from __DATA__";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataSerializer = buildPerlModule {
+    pname = "Data-Serializer";
+    version = "0.65";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEELY/Data-Serializer-0.65.tar.gz";
+      sha256 = "048zjy8valnil8yawa3vrxr005rz95gpfwvmy2jq0g830195l58j";
+    };
+    meta = {
+      description = "Modules that serialize data structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataSExpression = buildPerlPackage {
+    pname = "Data-SExpression";
+    version = "0.41";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NELHAGE/Data-SExpression-0.41.tar.gz";
+      sha256 = "8162426a4285a094385fdfaf6d09ced106d5af57553f953acb1d56867dd0149b";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ ClassAccessor ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataSpreadPagination = buildPerlPackage {
+    pname = "Data-SpreadPagination";
+    version = "0.1.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KN/KNEW/Data-SpreadPagination-0.1.2.tar.gz";
+      sha256 = "74ebfd847132c38cc9e835e14e82c43f1809a95cbc98bb84d1f7ce2e4ef487e3";
+    };
+    propagatedBuildInputs = [ DataPage MathRound ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataStreamBulk = buildPerlPackage {
+    pname = "Data-Stream-Bulk";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/Data-Stream-Bulk-0.11.tar.gz";
+      sha256 = "06e08432a6b97705606c925709b99129ad926516e477d58e4461e4b3d9f30917";
+    };
+    buildInputs = [ TestRequires ];
+    propagatedBuildInputs = [ Moose PathClass namespaceclean ];
+    meta = {
+      description = "N at a time iteration API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataStructureUtil = buildPerlPackage {
+    pname = "Data-Structure-Util";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDYA/Data-Structure-Util-0.16.tar.gz";
+      sha256 = "9cd42a13e65cb15f3a76296eb9a134da220168ec747c568d331a50ae7a2ddbc6";
+    };
+    buildInputs = [ TestPod ];
+    meta = {
+      description = "Change nature of data within a structure";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataTaxi = buildPerlPackage {
+    pname = "Data-Taxi";
+    version = "0.96";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKO/Data-Taxi-0.96.tar.gz";
+      sha256 = "0y4wls4jlwd6prvd77szymddhq9sfj06kaqnk4frlvd0zh83djxb";
+    };
+    buildInputs = [ DebugShowStuff ];
+  };
+
+  DataULID = buildPerlPackage {
+    pname = "Data-ULID";
+    version = "1.0.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BALDUR/Data-ULID-1.0.0.tar.gz";
+      sha256 = "4d757475893dbad5165f0a65c446d38b47f39019d36f77da9d29c98cbf27206f";
+    };
+    propagatedBuildInputs = [ DateTime EncodeBase32GMP MathRandomSecure ];
+    meta = {
+      homepage = "https://metacpan.org/release/Data-ULID";
+      description = "Universally Unique Lexicographically Sortable Identifier";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  DataUniqid = buildPerlPackage {
+    pname = "Data-Uniqid";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MW/MWX/Data-Uniqid-0.12.tar.gz";
+      sha256 = "b6919ba49b9fe98bfdf3e8accae7b9b7f78dc9e71ebbd0b7fef7a45d99324ccb";
+    };
+  };
+
+  DataUtil = buildPerlModule {
+    pname = "Data-Util";
+    version = "0.66";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYOHEX/Data-Util-0.66.tar.gz";
+      sha256 = "1x662pqjg9p0wcigi7pwf969b2ymk66ncm2vd5dfm5i08pdkjpf3";
+    };
+    buildInputs = [ HashUtilFieldHashCompat ModuleBuildXSUtil ScopeGuard TestException ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/gfx/Perl-Data-Util";
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.DataUtil.x86_64-darwin
+    };
+  };
+
+  DataURIEncode = buildPerlPackage {
+    pname = "Data-URIEncode";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RH/RHANDOM/Data-URIEncode-0.11.tar.gz";
+      sha256 = "51c9efbf8423853616eaa24841e4d1996b2db0036900617fb1dbc76c75a1f360";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataUUID = buildPerlPackage {
+    pname = "Data-UUID";
+    version = "1.226";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Data-UUID-1.226.tar.gz";
+      sha256 = "0lv4k4ibxwkw7zz9hw97s34za9nvjxb4kbmgmx5sj4fll3zmfg89";
+    };
+  };
+
+  DataUUIDMT = buildPerlPackage {
+    pname = "Data-UUID-MT";
+    version = "1.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Data-UUID-MT-1.001.tar.gz";
+      sha256 = "0bb7qibq1c5lhaihxa1sck9pb744p8c7172jgx5zh4c32ac4nk1h";
+    };
+    buildInputs = [ ListAllUtils ];
+    propagatedBuildInputs = [ MathRandomMTAuto ];
+    meta = {
+      description = "Fast random UUID generator using the Mersenne Twister algorithm";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  DataValidateDomain = buildPerlPackage {
+    pname = "Data-Validate-Domain";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-Domain-0.14.tar.gz";
+      sha256 = "4470f253b8d2720a4dd3fa3ae550995417c2269f3be7ff030e01afa04a3a9421";
+    };
+    buildInputs = [ Test2Suite ];
+    propagatedBuildInputs = [ NetDomainTLD ];
+    meta = {
+      description = "Domain and host name validation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataValidateIP = buildPerlPackage {
+    pname = "Data-Validate-IP";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-IP-0.27.tar.gz";
+      sha256 = "e1aa92235dcb9c6fd9b6c8cda184d1af73537cc77f4f83a0f88207a8bfbfb7d6";
+    };
+    buildInputs = [ TestRequires ];
+    propagatedBuildInputs = [ NetAddrIP ];
+    meta = {
+      description = "IPv4 and IPv6 validation methods";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataValidateURI = buildPerlPackage {
+    pname = "Data-Validate-URI";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SO/SONNEN/Data-Validate-URI-0.07.tar.gz";
+      sha256 = "f06418d2a4603913d1b6ce52b167dd13e787e13bf2be325a065df7d408f79c60";
+    };
+    propagatedBuildInputs = [ DataValidateDomain DataValidateIP ];
+    meta = {
+      description = "Common URL validation methods";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DataVisitor = buildPerlPackage {
+    pname = "Data-Visitor";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Data-Visitor-0.31.tar.gz";
+      sha256 = "0vjcsc2hbhml1w126673z31z9rr0hxz64f5rvk7drlmwicr6kc9b";
+    };
+    buildInputs = [ TestNeeds ];
+    propagatedBuildInputs = [ Moose TieToObject namespaceclean ];
+  };
+
+  DateCalc = buildPerlPackage {
+    pname = "Date-Calc";
+    version = "6.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/ST/STBEY/Date-Calc-6.4.tar.gz";
+      sha256 = "1barz0jgdaan3jm7ciphs5n3ahwkl42imprs3y8c1dwpwyr3gqbw";
+    };
+    propagatedBuildInputs = [ BitVector ];
+    doCheck = false; # some of the checks rely on the year being <2015
+  };
+
+  DateExtract = buildPerlPackage {
+    pname = "Date-Extract";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/Date-Extract-0.06.tar.gz";
+      sha256 = "bc7658d5c50c3525ec0efcb55236a5de2d5d4fc06fc147fa3929c8f0953cda2b";
+    };
+    buildInputs = [ TestMockTime ];
+    propagatedBuildInputs = [ DateTimeFormatNatural ];
+  };
+
+  DateManip = buildPerlPackage {
+    pname = "Date-Manip";
+    version = "6.83";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SB/SBECK/Date-Manip-6.83.tar.gz";
+      sha256 = "1ylrj6g1sccnyd5k0dq3xl3l40y1jgcbpcb3jnjj5hknv3hv54gl";
+    };
+    # for some reason, parsing /etc/localtime does not work anymore - make sure that the fallback "/bin/date +%Z" will work
+    patchPhase = ''
+      sed -i "s#/bin/date#${pkgs.coreutils}/bin/date#" lib/Date/Manip/TZ.pm
+    '';
+    doCheck = !stdenv.isi686; # build freezes during tests on i686
+    meta = {
+      description = "Date manipulation routines";
+    };
+    buildInputs = [ TestInter ];
+  };
+
+  DateSimple = buildPerlPackage {
+    pname = "Date-Simple";
+    version = "3.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IZ/IZUT/Date-Simple-3.03.tar.gz";
+      sha256 = "29a1926314ce1681a312d6155c29590c771ddacf91b7485873ce449ef209dd04";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl2Plus ];
+    };
+  };
+
+  DateTime = buildPerlPackage {
+    pname = "DateTime";
+    version = "1.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-1.54.tar.gz";
+      sha256 = "1rxjagwmkdlmksz1cbxwx2ad51pv5q7dri2djqkz44q7j1nxlbmi";
+    };
+    buildInputs = [ CPANMetaCheck TestFatal TestWarnings ];
+    propagatedBuildInputs = [ DateTimeLocale DateTimeTimeZone ];
+    meta = {
+      description = "A date and time object";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DateTimeCalendarJulian = buildPerlPackage {
+    pname = "DateTime-Calendar-Julian";
+    version = "0.102";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WY/WYANT/DateTime-Calendar-Julian-0.102.tar.gz";
+      sha256 = "0j95dhma66spjyb04zi6rwy7l33hibnrx02mn0znd9m89aiq52s6";
+    };
+    meta = {
+      description = "Dates in the Julian calendar";
+      license = lib.licenses.artistic2;
+    };
+    propagatedBuildInputs = [ DateTime ];
+  };
+
+  DateTimeEventICal = buildPerlPackage {
+    pname = "DateTime-Event-ICal";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FG/FGLOCK/DateTime-Event-ICal-0.13.tar.gz";
+      sha256 = "1skmykxbrf98ldi72d5s1v6228gfdr5iy4y0gpl0xwswxy247njk";
+    };
+    propagatedBuildInputs = [ DateTimeEventRecurrence ];
+    meta = {
+      description = "DateTime rfc2445 recurrences";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeEventRecurrence = buildPerlPackage {
+    pname = "DateTime-Event-Recurrence";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FG/FGLOCK/DateTime-Event-Recurrence-0.19.tar.gz";
+      sha256 = "f9408789a461107766ca1a232bb3ec1e702eec7ca8167401ea6ec3f4b6d0b5a5";
+    };
+    propagatedBuildInputs = [ DateTimeSet ];
+  };
+
+  DateTimeFormatBuilder = buildPerlPackage {
+    pname = "DateTime-Format-Builder";
+    version = "0.83";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-Format-Builder-0.83.tar.gz";
+      sha256 = "61ffb23d85b3ca1786b2da3289e99b57e0625fe0e49db02a6dc0cb62c689e2f2";
+    };
+    propagatedBuildInputs = [ DateTimeFormatStrptime ParamsValidate ];
+    meta = {
+      description = "Create DateTime parser classes and objects";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DateTimeFormatDateParse = buildPerlModule {
+    pname = "DateTime-Format-DateParse";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHOBLITT/DateTime-Format-DateParse-0.05.tar.gz";
+      sha256 = "f6eca4c8be66ce9992ee150932f8fcf07809fd3d1664caf200b8a5fd3a7e5ebc";
+    };
+    propagatedBuildInputs = [ DateTime TimeDate ];
+    meta = {
+      description = "Parses Date::Parse compatible formats";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatFlexible = buildPerlPackage {
+    pname = "DateTime-Format-Flexible";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TH/THINC/DateTime-Format-Flexible-0.32.tar.gz";
+      sha256 = "50a7b9feb287bb14b27323a53c2324486181a3ab6cb3f4c7662d42be901ad8ee";
+    };
+    propagatedBuildInputs = [ DateTimeFormatBuilder ListMoreUtils ModulePluggable ];
+    meta = {
+      description = "Flexibly parse strings and turn them into DateTime objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestException TestMockTime TestNoWarnings ];
+  };
+
+  DateTimeFormatHTTP = buildPerlModule {
+    pname = "DateTime-Format-HTTP";
+    version = "0.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CK/CKRAS/DateTime-Format-HTTP-0.42.tar.gz";
+      sha256 = "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh";
+    };
+    propagatedBuildInputs = [ DateTime HTTPDate ];
+    meta = {
+      description = "Date conversion routines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatICal = buildPerlModule {
+    pname = "DateTime-Format-ICal";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-Format-ICal-0.09.tar.gz";
+      sha256 = "8b09f6539f5e9c0df0e6135031699ed4ef9eef8165fc80aefeecc817ef997c33";
+    };
+    propagatedBuildInputs = [ DateTimeEventICal ];
+    meta = {
+      description = "Parse and format iCal datetime and duration strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatISO8601 = buildPerlPackage {
+    pname = "DateTime-Format-ISO8601";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-Format-ISO8601-0.15.tar.gz";
+      sha256 = "1afslsr2axkamdfjqk6i3w092hp20dznqffk4lgpxmxrd31ni5ql";
+    };
+    propagatedBuildInputs = [ DateTimeFormatBuilder ];
+    meta = {
+      description = "Parses ISO8601 formats";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ Test2Suite ];
+  };
+
+  DateTimeFormatMail = buildPerlPackage {
+    pname = "DateTime-Format-Mail";
+    version = "0.403";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/DateTime-Format-Mail-0.403.tar.gz";
+      sha256 = "8df8e35c4477388ff5c7ce8b3e8b6ae4ed30209c7a5051d41737bd14d755fcb0";
+    };
+    propagatedBuildInputs = [ DateTime ParamsValidate ];
+    meta = {
+      description = "Convert between DateTime and RFC2822/822 formats";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatNatural = buildPerlModule {
+    pname = "DateTime-Format-Natural";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCHUBIGER/DateTime-Format-Natural-1.11.tar.gz";
+      sha256 = "0lj5yh1k4dl06p9ydyscd4ic330w8ygz88m38bhzlbz42kxv13vk";
+    };
+    buildInputs = [ ModuleUtil TestMockTime ];
+    propagatedBuildInputs = [ Clone DateTime ListMoreUtils ParamsValidate boolean ];
+    meta = {
+      description = "Create machine readable date/time with natural parsing logic";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatMySQL = buildPerlModule {
+    pname = "DateTime-Format-MySQL";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XM/XMIKEW/DateTime-Format-MySQL-0.06.tar.gz";
+      sha256 = "07cgz60gxvrv7xqvngyll60pa8cx93h3jyx9kc9wdkn95qbd864q";
+    };
+    propagatedBuildInputs = [ DateTimeFormatBuilder ];
+    meta = {
+      description = "Parse and format MySQL dates and times";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatPg = buildPerlModule {
+    pname = "DateTime-Format-Pg";
+    version = "0.16013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DM/DMAKI/DateTime-Format-Pg-0.16013.tar.gz";
+      sha256 = "16siw0f3a0ilzv5fnfas5s9n92drjy271yf6qvmmpm0vwnjjx1kz";
+    };
+    propagatedBuildInputs = [ DateTimeFormatBuilder ];
+    meta = {
+      description = "Parse and format PostgreSQL dates and times";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  DateTimeFormatStrptime = buildPerlPackage {
+    pname = "DateTime-Format-Strptime";
+    version = "1.77";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-Format-Strptime-1.77.tar.gz";
+      sha256 = "2fa43c838ecf5356f221a91a41c81dba22e7860c5474b4a61723259898173e4a";
+    };
+    buildInputs = [ TestFatal TestWarnings ];
+    propagatedBuildInputs = [ DateTime ];
+    meta = {
+      description = "Parse and format strp and strf time patterns";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DateTimeFormatSQLite = buildPerlPackage {
+    pname = "DateTime-Format-SQLite";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFAERBER/DateTime-Format-SQLite-0.11.tar.gz";
+      sha256 = "cc1f4e0ae1d39b0d4c3dddccfd7423c77c67a70950c4b5ecabf8ca553ab294b4";
+    };
+    propagatedBuildInputs = [ DateTimeFormatBuilder ];
+    meta = {
+      description = "Parse and format SQLite dates and times";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatW3CDTF = buildPerlPackage {
+    pname = "DateTime-Format-W3CDTF";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GW/GWILLIAMS/DateTime-Format-W3CDTF-0.07.tar.gz";
+      sha256 = "69a02b661bbf1daa14a4813cb6786eaa66dbdf2743f0b3f458e30234c3a26268";
+    };
+    propagatedBuildInputs = [ DateTime ];
+    meta = {
+      description = "Parse and format W3CDTF datetime strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeLocale = buildPerlPackage {
+    pname = "DateTime-Locale";
+    version = "1.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-Locale-1.28.tar.gz";
+      sha256 = "6c604d8c5c9c2739b78e0538a402283b82b1df419e60bef20b04843e4584bade";
+    };
+    buildInputs = [ CPANMetaCheck FileShareDirInstall IPCSystemSimple PathTiny Test2PluginNoWarnings Test2Suite TestFileShareDir ];
+    propagatedBuildInputs = [ FileShareDir ParamsValidationCompiler Specio namespaceautoclean ];
+    meta = {
+      description = "Localization support for DateTime.pm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeFormatRFC3339 = buildPerlPackage rec {
+    pname = "DateTime-Format-RFC3339";
+    version = "1.2.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IK/IKEGAMI/DateTime-Format-RFC3339-v${version}.tar.gz";
+      sha256 = "1xqdbbiksy6kapc3mv3ayjahmxxlzmb5x7rad4by1iii9hif2vhk";
+    };
+    propagatedBuildInputs = [ DateTime ];
+    meta = {
+      description = "Parse and format RFC3339 datetime strings";
+      license = lib.licenses.cc0;
+    };
+  };
+
+  DateTimeSet = buildPerlModule {
+    pname = "DateTime-Set";
+    version = "0.3900";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FG/FGLOCK/DateTime-Set-0.3900.tar.gz";
+      sha256 = "94f41c3924aafde4ef7fa6b58e0595d4038d8ac5ffd62ba111b13c5f4dbc0946";
+    };
+    propagatedBuildInputs = [ DateTime ParamsValidate SetInfinite ];
+    meta = {
+      description = "DateTime set objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeTimeZone = buildPerlPackage {
+    pname = "DateTime-TimeZone";
+    version = "2.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/DateTime-TimeZone-2.44.tar.gz";
+      sha256 = "09j5rqid1mv0cgm1vc89l2anbb3q8w4bzlm7sqrkiz9dk82x8gap";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    propagatedBuildInputs = [ ClassSingleton ParamsValidationCompiler Specio namespaceautoclean ];
+    meta = {
+      description = "Time zone object base class and factory";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DateTimeXEasy = buildPerlPackage {
+    pname = "DateTimeX-Easy";
+    version = "0.089";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROKR/DateTimeX-Easy-0.089.tar.gz";
+      sha256 = "17e6d202e7ac6049523048e97bb8f195e3c79208570da1504f4313584e487a79";
+    };
+    buildInputs = [ TestMost ];
+    propagatedBuildInputs = [ DateTimeFormatFlexible DateTimeFormatICal DateTimeFormatNatural TimeDate ];
+    doCheck = false;
+    meta = {
+      description = "Parse a date/time string using the best method available";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DebugShowStuff = buildPerlModule {
+    pname = "Debug-ShowStuff";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKO/Debug-ShowStuff-1.16.tar.gz";
+      sha256 = "1drcrnji3yrd0s3xb69bxnqa51s19c13w68vhvjad3nvswn5vpd4";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Deliantra = buildPerlPackage rec {
+    pname = "Deliantra";
+    version = "2.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/${pname}-${version}.tar.gz";
+      sha256 = "2716d9b1f05627d60942ce0634b9c1a25109b164818285d45b609ae8596e2b17";
+    };
+    propagatedBuildInputs = [ AnyEvent CompressLZF JSONXS commonsense ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelCaller = buildPerlPackage {
+    pname = "Devel-Caller";
+    version = "2.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Devel-Caller-2.06.tar.gz";
+      sha256 = "1pxpimifzmnjnvf4icclx77myc15ahh0k56sj1djad1855mawwva";
+    };
+    propagatedBuildInputs = [ PadWalker ];
+    meta = {
+      description = "Meatier versions of C<caller>";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelCheckBin = buildPerlPackage {
+     pname = "Devel-CheckBin";
+     version = "0.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Devel-CheckBin-0.04.tar.gz";
+       sha256 = "1r735yzgvsxkj4m6ks34xva5m21cfzp9qiis2d4ivv99kjskszqm";
+     };
+     meta = {
+       description = "check that a command is available";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/tokuhirom/Devel-CheckBin";
+     };
+  };
+
+  DevelCheckCompiler = buildPerlModule {
+     pname = "Devel-CheckCompiler";
+     version = "0.07";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/SY/SYOHEX/Devel-CheckCompiler-0.07.tar.gz";
+       sha256 = "1db973a4dbyknjxq608hywil5ai6vplnayshqxrd7m5qnjbpd2vn";
+     };
+     buildInputs = [ ModuleBuildTiny ];
+     meta = {
+       description = "Check the compiler's availability";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/tokuhirom/Devel-CheckCompiler";
+     };
+  };
+
+  DevelChecklib = buildPerlPackage {
+    pname = "Devel-CheckLib";
+    version = "1.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATTN/Devel-CheckLib-1.14.tar.gz";
+      sha256 = "15621qh5gaan1sgmk9y9svl70nm8viw17x5h1kf0zknkk8lmw77j";
+    };
+    buildInputs = [ CaptureTiny MockConfig ];
+  };
+
+  DevelCheckOS = buildPerlPackage {
+    pname = "Devel-CheckOS";
+    version = "1.85";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Devel-CheckOS-1.85.tar.gz";
+      sha256 = "1jjqwrx8mydyhqwwjlgimribz0yq0b6q66xnr6mgvyn63pdajhvg";
+    };
+    propagatedBuildInputs = [ FileFindRule ];
+  };
+
+  DevelLeak = buildPerlPackage {
+    pname = "Devel-Leak";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NI-S/Devel-Leak-0.03.tar.gz";
+      sha256 = "0lkj2xwc3lhxv7scl43r8kfmls4am0b98sqf5vmf7d72257w6hkg";
+    };
+    meta = {
+      description = "Utility for looking for perl objects that are not reclaimed";
+      license = with lib.licenses; [ artistic1 gpl1Plus ]; # According to Debian
+    };
+  };
+
+  DevelPatchPerl = buildPerlPackage {
+    pname = "Devel-PatchPerl";
+    version = "2.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Devel-PatchPerl-2.04.tar.gz";
+      sha256 = "1q8xhz2sdlz2266pjl8j9vcixbhcaxsprmvsx56ra998miayc42p";
+    };
+    propagatedBuildInputs = [ Filepushd ModulePluggable ];
+    meta = {
+      homepage = "https://github.com/bingos/devel-patchperl";
+      description = "Patch perl source a la Devel::PPPort's buildperl.pl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelRefcount = buildPerlModule {
+    pname = "Devel-Refcount";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Devel-Refcount-0.10.tar.gz";
+      sha256 = "0jnaraqkigyinhwz4nqk1ndq7ssjizr98nd1dd183a6icdlx8m5n";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "obtain the REFCNT value of a referent";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelPPPort = buildPerlPackage {
+    pname = "Devel-PPPort";
+    version = "3.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AT/ATOOMIC/Devel-PPPort-3.62.tar.gz";
+      sha256 = "16w1mmx304bhql27mgy0l1qjwjr86vn7j0133i0hln9fdz2097gi";
+    };
+    meta = {
+      description = "Perl/Pollution/Portability";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelTrace = buildPerlPackage {
+    pname = "Devel-Trace";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJD/Devel-Trace-0.12.tar.gz";
+      sha256 = "0s1q1a05gk3xvwqkya3k05vqjk13rvb489g0frprhzpzfvvwl0gm";
+    };
+    meta = {
+      description = "Print out each line before it is executed (like sh -x)";
+      license = lib.licenses.publicDomain;
+    };
+  };
+
+  DeviceMAC = buildPerlPackage {
+    pname = "Device-MAC";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JASONK/Device-MAC-1.00.tar.gz";
+      sha256 = "c42182a9a8489a314cbfe6e1c8452f32b3b626aa6c89fee1d8925e6dfb64fad5";
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestMost TestWarn ];
+    propagatedBuildInputs = [ DeviceOUI Moose ];
+    meta = {
+      description = "Handle hardware MAC Addresses (EUI-48 and EUI-64)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DeviceOUI = buildPerlPackage {
+    pname = "Device-OUI";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JASONK/Device-OUI-1.04.tar.gz";
+      sha256 = "4b367e61b1fadde77fb6fb729f3cd5acd1d46e71218d96f406bcba38d43b4bef";
+    };
+    buildInputs = [ TestException ];
+    patches = [ ../development/perl-modules/Device-OUI-1.04-hash.patch ];
+    propagatedBuildInputs = [ ClassAccessorGrouped LWP SubExporter ];
+    meta = {
+      description = "Resolve an Organizationally Unique Identifier";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBDCSV = buildPerlPackage {
+    pname = "DBD-CSV";
+    version = "0.56";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HM/HMBRAND/DBD-CSV-0.56.tgz";
+      sha256 = "16rhgchwlnnvjklca0d4sa3lmlj29zc0iwclk41y5fz6kg8c2qjs";
+    };
+    propagatedBuildInputs = [ DBI SQLStatement TextCSV_XS ];
+  };
+
+  DBDMock = buildPerlModule {
+    pname = "DBD-Mock";
+    version = "1.58";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JL/JLCOOPER/DBD-Mock-1.58.tar.gz";
+      sha256 = "0g67r5i5qad5knjph4ybfpqxabgi2h7svpl3pgjrc4qh4h0vy7mv";
+    };
+    propagatedBuildInputs = [ DBI ];
+    buildInputs = [ ModuleBuildTiny TestException ];
+  };
+
+  DBDSQLite = buildPerlPackage {
+    pname = "DBD-SQLite";
+    version = "1.70";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/DBD-SQLite-1.70.tar.gz";
+      sha256 = "0gpyv89p3yfwifbm005bz5ci8c63jikkfvafg8x7f3lyaggqvza0";
+    };
+
+    propagatedBuildInputs = [ DBI ];
+    buildInputs = [ pkgs.sqlite ];
+
+    patches = [
+      # Support building against our own sqlite.
+      ../development/perl-modules/DBD-SQLite/external-sqlite.patch
+
+      # Pull upstream fix for test failures against sqlite-3.37.
+      (fetchpatch {
+        name = "sqlite-3.37-compat.patch";
+        url = "https://github.com/DBD-SQLite/DBD-SQLite/commit/ba4f472e7372dbf453444c7764d1c342e7af12b8.patch";
+        sha256 = "02lg1y6px7h89pfvgrf23anhbl3v050gn0kmaajvv5h6layhjzly";
+      })
+    ];
+
+    makeMakerFlags = "SQLITE_INC=${pkgs.sqlite.dev}/include SQLITE_LIB=${pkgs.sqlite.out}/lib";
+
+    postInstall = ''
+      # Get rid of a pointless copy of the SQLite sources.
+      rm -rf $out/${perl.libPrefix}/*/*/auto/share
+    '';
+
+    preCheck = "rm t/65_db_config.t"; # do not run failing tests
+
+    meta = with lib; {
+      description = "Self Contained SQLite RDBMS in a DBI Driver";
+      license = with licenses; [ artistic1 gpl1Plus ];
+      platforms = platforms.unix;
+    };
+  };
+
+  DBDMariaDB = buildPerlPackage {
+    pname = "DBD-MariaDB";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PA/PALI/DBD-MariaDB-1.21.tar.gz";
+      sha256 = "068l4ybja5mmy89lwgzl9c1xs37f4fgvf7j7n8k4f78dg8rjp5zm";
+    };
+    buildInputs = [ pkgs.mariadb-connector-c DevelChecklib TestDeep TestDistManifest TestPod ];
+    propagatedBuildInputs = [ DBI ];
+    meta = {
+      homepage = "https://github.com/gooddata/DBD-MariaDB";
+      description = "MariaDB and MySQL driver for the Perl5 Database Interface (DBI)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBDmysql = buildPerlPackage {
+    pname = "DBD-mysql";
+    version = "4.050";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DV/DVEEDEN/DBD-mysql-4.050.tar.gz";
+      sha256 = "0y4djb048i09dk19av7mzfb3khr72vw11p3ayw2p82jsy4gm8j2g";
+    };
+
+    buildInputs = [ pkgs.libmysqlclient DevelChecklib TestDeep TestDistManifest TestPod ];
+    propagatedBuildInputs = [ DBI ];
+
+    doCheck = false;
+
+  #  makeMakerFlags = "MYSQL_HOME=${mysql}";
+  };
+
+  DBDOracle = buildPerlPackage {
+    pname = "DBD-Oracle";
+    version = "1.80";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz";
+      sha256 = "1rza36dywbsaync99ibscpqdp53m0yg2748bbib16gbf4cl2apph";
+    };
+
+    ORACLE_HOME = "${pkgs.oracle-instantclient.lib}/lib";
+
+    buildInputs = [ pkgs.oracle-instantclient TestNoWarnings ];
+    propagatedBuildInputs = [ DBI ];
+
+    postBuild = lib.optionalString stdenv.isDarwin ''
+      install_name_tool -add_rpath "${pkgs.oracle-instantclient.lib}/lib" blib/arch/auto/DBD/Oracle/Oracle.bundle
+    '';
+  };
+
+  DBDPg = buildPerlPackage {
+    pname = "DBD-Pg";
+    version = "3.14.2";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TU/TURNSTEP/DBD-Pg-3.14.2.tar.gz";
+      sha256 = "0kcfqq7g3832wiix0sbyvlc885qghjrp2ah3akn7h2lnb22fjwy9";
+    };
+
+    buildInputs = [ pkgs.postgresql ];
+    propagatedBuildInputs = [ DBI ];
+
+    makeMakerFlags = "POSTGRES_HOME=${pkgs.postgresql}";
+
+    # tests freeze in a sandbox
+    doCheck = false;
+
+    meta = {
+      description = "DBI PostgreSQL interface";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.unix;
+    };
+  };
+
+  DBDsybase = buildPerlPackage {
+    pname = "DBD-Sybase";
+    version = "1.16";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ME/MEWP/DBD-Sybase-1.16.tar.gz";
+      sha256 = "1k6n261nrrcll9wxn5xwi4ibpavqv1il96687k62mbpznzl2gx37";
+    };
+
+    SYBASE = pkgs.freetds;
+
+    buildInputs = [ pkgs.freetds ];
+    propagatedBuildInputs = [ DBI ];
+
+    doCheck = false;
+
+    meta = {
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.DBDsybase.x86_64-darwin
+    };
+  };
+
+  DBFile = buildPerlPackage {
+    pname = "DB_File";
+    version = "1.855";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/DB_File-1.855.tar.gz";
+      sha256 = "0q599h7g4jkzks5dxf1zifx9k7l9vif26r2dlgkzxkg6bfif5zyr";
+    };
+
+    preConfigure = ''
+      cat > config.in <<EOF
+      PREFIX = size_t
+      HASH = u_int32_t
+      LIB = ${pkgs.db.out}/lib
+      INCLUDE = ${pkgs.db.dev}/include
+      EOF
+    '';
+  };
+
+  DBI = buildPerlPackage {
+    pname = "DBI";
+    version = "1.643";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz";
+      sha256 = "8a2b993db560a2c373c174ee976a51027dd780ec766ae17620c20393d2e836fa";
+    };
+    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;
+      BEGIN {
+      our \$VERSION = "$version";
+      }
+      1;
+      EOF
+
+      autodir=$(echo $out/${perl.libPrefix}/${perl.version}/*/auto/DBI)
+      cat > $out/${perl.libPrefix}/cross_perl/${perl.version}/DBI/DBD.pm <<EOF
+      package DBI::DBD;
+      use Exporter ();
+      use vars qw (@ISA @EXPORT);
+      @ISA = qw(Exporter);
+      @EXPORT = qw(dbd_postamble);
+      sub dbd_postamble {
+          return '
+      # --- This section was generated by DBI::DBD::dbd_postamble()
+      DBI_INSTARCH_DIR=$autodir
+      DBI_DRIVER_XST=$autodir/Driver.xst
+
+      # The main dependency (technically correct but probably not used)
+      \$(BASEEXT).c: \$(BASEEXT).xsi
+
+      # This dependency is needed since MakeMaker uses the .xs.o rule
+      \$(BASEEXT)\$(OBJ_EXT): \$(BASEEXT).xsi
+
+      \$(BASEEXT).xsi: \$(DBI_DRIVER_XST) $autodir/Driver_xst.h
+      ''\t\$(PERL) -p -e "s/~DRIVER~/\$(BASEEXT)/g" \$(DBI_DRIVER_XST) > \$(BASEEXT).xsi
+
+      # ---
+      ';
+      }
+      1;
+      EOF
+    '';
+    meta = {
+      homepage = "https://dbi.perl.org/";
+      description = "Database independent interface for Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBICxTestDatabase = buildPerlPackage {
+    pname = "DBICx-TestDatabase";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JR/JROCKWAY/DBICx-TestDatabase-0.05.tar.gz";
+      sha256 = "8e3bc2530b01216188c3aa65acdbd2f59c4e631f3ae085dfc439abd89f8f0acf";
+    };
+    buildInputs = [ DBIxClass TestSimple13 ];
+    propagatedBuildInputs = [ DBDSQLite SQLTranslator ];
+    meta = {
+      homepage = "https://metacpan.org/pod/DBICx::TestDatabase";
+      description = "Create a temporary database from a DBIx::Class::Schema";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBIxClass = buildPerlPackage {
+    pname = "DBIx-Class";
+    version = "0.082842";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RI/RIBASUSHI/DBIx-Class-0.082842.tar.gz";
+      sha256 = "1rh7idjjbibc1zmiaaarask434lh0lx7f2xyfwmy37k9fa0xcpmh";
+    };
+    patches = [
+      # https://github.com/Perl5/DBIx-Class/pull/141
+      (fetchpatch {
+        url = "https://github.com/Perl5/DBIx-Class/commit/fb896701d23fa4da622b5b1b2afbbba3da2dd8f3.patch";
+        sha256 = "sha256-MSbV9UfHu90NCdC5IFwuy/vpSDw4atfellYh7Ydvkm4=";
+      })
+    ];
+    buildInputs = [ DBDSQLite TestDeep TestException TestWarn ];
+    propagatedBuildInputs = [ ClassAccessorGrouped ClassC3Componentised ConfigAny ContextPreserve DBI DataDumperConcise DataPage DevelGlobalDestruction ModuleFind PathClass SQLAbstractClassic ScopeGuard SubName namespaceclean ];
+    meta = {
+      homepage = "https://metacpan.org/pod/DBIx::Class";
+      description = "Extensible and flexible object <-> relational mapper";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxClassCandy = buildPerlPackage {
+    pname = "DBIx-Class-Candy";
+    version = "0.005003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/DBIx-Class-Candy-0.005003.tar.gz";
+      sha256 = "b8a229a7b15f559095d4561cf8220460128541ba7fc3545ed35869923d46565c";
+    };
+    buildInputs = [ TestDeep TestFatal ];
+    propagatedBuildInputs = [ DBIxClass LinguaENInflect SubExporter ];
+    meta = {
+      homepage = "https://github.com/frioux/DBIx-Class-Candy";
+      description = "Sugar for your favorite ORM, DBIx::Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxClassCursorCached = buildPerlPackage {
+    pname = "DBIx-Class-Cursor-Cached";
+    version = "1.001004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARCANEZ/DBIx-Class-Cursor-Cached-1.001004.tar.gz";
+      sha256 = "09b2jahn2x12qm4f7qm1jzsxbz7qn1czp6a3fnl5l2i3l4r5421p";
+    };
+    buildInputs = [ CacheCache DBDSQLite ];
+    propagatedBuildInputs = [ CarpClan DBIxClass ];
+    meta = {
+      description = "Cursor class with built-in caching support";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxClassDynamicDefault = buildPerlPackage {
+    pname = "DBIx-Class-DynamicDefault";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTROUT/DBIx-Class-DynamicDefault-0.04.tar.gz";
+      sha256 = "228f51ab224642584b4dc63db6de2667c5bfae2a894a9376b210a104806a5afb";
+    };
+    buildInputs = [ DBICxTestDatabase ];
+    propagatedBuildInputs = [ DBIxClass ];
+    meta = {
+      homepage = "https://metacpan.org/pod/DBIx::Class::DynamicDefault";
+      description = "Automatically set and update fields";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBIxClassHTMLWidget = buildPerlPackage {
+    pname = "DBIx-Class-HTMLWidget";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDREMAR/DBIx-Class-HTMLWidget-0.16.tar.gz";
+      sha256 = "05zhniyzl31nq410ywhxm0vmvac53h7ax42hjs9mmpvf45ipahj1";
+    };
+    propagatedBuildInputs = [ DBIxClass HTMLWidget ];
+  };
+
+  DBIxClassHelpers = buildPerlPackage {
+    pname = "DBIx-Class-Helpers";
+    version = "2.036000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/DBIx-Class-Helpers-2.036000.tar.gz";
+      sha256 = "b7b8b4891a983c034ef0b45f4112404a0a40550c4e217daeb7a22ca16861efdb";
+    };
+    buildInputs = [ DBDSQLite DateTimeFormatSQLite TestDeep TestFatal TestRoo aliased ];
+    propagatedBuildInputs = [ CarpClan DBIxClassCandy DBIxIntrospector SafeIsa TextBrew ];
+    meta = {
+      homepage = "https://github.com/frioux/DBIx-Class-Helpers";
+      description = "Simplify the common case stuff for DBIx::Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxClassInflateColumnSerializer = buildPerlPackage {
+    pname = "DBIx-Class-InflateColumn-Serializer";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRUIZ/DBIx-Class-InflateColumn-Serializer-0.09.tar.gz";
+      sha256 = "6262b4871db6a6c45a0cbe7cde8f1b890b22c291add4ecc40caaeeab5a3a6f50";
+    };
+    buildInputs = [ DBDSQLite TestException ];
+    propagatedBuildInputs = [ DBIxClass JSONMaybeXS YAML ];
+    meta = {
+      homepage = "https://metacpan.org/pod/DBIx::Class::InflateColumn::Serializer";
+      description = "Inflators to serialize data structures for DBIx::Class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBIxClassIntrospectableM2M = buildPerlPackage {
+    pname = "DBIx-Class-IntrospectableM2M";
+    version = "0.001002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/DBIx-Class-IntrospectableM2M-0.001002.tar.gz";
+      sha256 = "c6baafb4241693fdb34b29ebd906993add364bf31aafa4462f3e062204cc87f0";
+    };
+    propagatedBuildInputs = [ DBIxClass ];
+    meta = {
+      description = "Introspect many-to-many relationships";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxClassSchemaLoader = buildPerlPackage {
+    pname = "DBIx-Class-Schema-Loader";
+    version = "0.07049";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/DBIx-Class-Schema-Loader-0.07049.tar.gz";
+      sha256 = "e869cdde1378cfebccf229b0cde58d2746dc6080b75f56d072aa5f1fce76a764";
+    };
+    buildInputs = [ DBDSQLite TestDeep TestDifferences TestException TestWarn ];
+    propagatedBuildInputs = [ CarpClan ClassUnload DBIxClass DataDump StringToIdentifierEN curry ];
+    meta = {
+      description = "Create a DBIx::Class::Schema based on a database";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxConnector = buildPerlModule {
+    pname = "DBIx-Connector";
+    version = "0.56";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/DBIx-Connector-0.56.tar.gz";
+      sha256 = "57c08d2c1951486cb95cfb83f518f462a3dbf20d353f3eee4f46af44fa19c359";
+    };
+    buildInputs = [ TestMockModule ];
+    propagatedBuildInputs = [ DBI ];
+    meta = {
+      description = "Fast, safe DBI connection and transaction management";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxDBSchema = buildPerlPackage {
+    pname = "DBIx-DBSchema";
+    version = "0.45";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IV/IVAN/DBIx-DBSchema-0.45.tar.gz";
+      sha256 = "7a2a978fb6d9feaa3e4b109c71c963b26a008a2d130c5876ecf24c5a72338a1d";
+    };
+    propagatedBuildInputs = [ DBI ];
+  };
+
+  DBIxSearchBuilder = buildPerlPackage {
+    pname = "DBIx-SearchBuilder";
+    version = "1.68";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/DBIx-SearchBuilder-1.68.tar.gz";
+      sha256 = "be197c0f83c426996f77d22126f3103f958fc4bd1791c6962b793cc2779601f8";
+    };
+    buildInputs = [ DBDSQLite ];
+    propagatedBuildInputs = [ CacheSimpleTimedExpiry ClassAccessor ClassReturnValue Clone DBIxDBSchema Want capitalization ];
+    meta = {
+      description = "Encapsulate SQL queries and rows in simple perl objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DBIxSimple = buildPerlPackage {
+    pname = "DBIx-Simple";
+    version = "1.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JU/JUERD/DBIx-Simple-1.37.tar.gz";
+      sha256 = "46d311aa2ce08907401c56119658426dbb044c5a40de73d9a7b79bf50390cae3";
+    };
+    propagatedBuildInputs = [ DBI ];
+    meta = {
+      description = "Very complete easy-to-use OO interface to DBI";
+    };
+  };
+
+  DataBinary = buildPerlPackage {
+    pname = "Data-Binary";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SN/SNKWATT/Data-Binary-0.01.tar.gz";
+      sha256 = "0wwdrgkz4yqpzdmfvid63v5v10b9hwdsg15jvks0hwdc23ga48a8";
+    };
+    meta = {
+      description = "Simple detection of binary versus text in strings";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  DataBuffer = buildPerlPackage {
+    pname = "Data-Buffer";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BT/BTROTT/Data-Buffer-0.04.tar.gz";
+      sha256 = "2b3d09b7bcf389fc116207b283bee250e348d44c9c63460bee67efab4dd21bb4";
+    };
+    meta = {
+      description = "Read/write buffer class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DBIxIntrospector = buildPerlPackage {
+    pname = "DBIx-Introspector";
+    version = "0.001005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/DBIx-Introspector-0.001005.tar.gz";
+      sha256 = "0fp6h71xv4pgb8l815rs6ad4camzhjqf64s1sf7zmhchqqn4vacn";
+    };
+
+    propagatedBuildInputs = [ DBI Moo ];
+    buildInputs = [ DBDSQLite TestFatal TestRoo ];
+  };
+
+  DevelCamelcadedb = buildPerlPackage {
+    pname = "Devel-Camelcadedb";
+    version = "2021.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HU/HURRICUP/Devel-Camelcadedb-v2021.2.tar.gz";
+      sha256 = "88a1d9e95d398ffe4d4114861e21c36f7c22315b3d03e7f764ccbce018ab3e47";
+    };
+    propagatedBuildInputs = [ HashStoredIterator JSONXS PadWalker ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "Perl side of the Perl debugger for IntelliJ IDEA and other JetBrains IDEs";
+      license = lib.licenses.mit;
+    };
+  };
+
+  DevelCycle = buildPerlPackage {
+    pname = "Devel-Cycle";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LD/LDS/Devel-Cycle-1.12.tar.gz";
+      sha256 = "1hhb77kz3dys8yaik452j22cm3510zald2mpvfyv5clqv326aczx";
+    };
+    meta = {
+      description = "Find memory cycles in objects";
+    };
+  };
+
+  DevelDeclare = buildPerlPackage {
+    pname = "Devel-Declare";
+    version = "0.006022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Devel-Declare-0.006022.tar.gz";
+      sha256 = "72f29ca35646a593be98311ffddb72033ae1e8a9d8254c62aa248bd6260e596e";
+    };
+    buildInputs = [ ExtUtilsDepends TestRequires ];
+    propagatedBuildInputs = [ BHooksEndOfScope BHooksOPCheck SubName ];
+    meta = {
+      description = "Adding keywords to perl, in perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelFindPerl = buildPerlPackage {
+    pname = "Devel-FindPerl";
+    version = "0.015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Devel-FindPerl-0.015.tar.gz";
+      sha256 = "1z1xfj3178w632mqddyklk355a19bsgzkilznrng3rvg4bfbfxaj";
+    };
+    meta = {
+      description = "Find the path to your perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelGlobalDestruction = buildPerlPackage {
+    pname = "Devel-GlobalDestruction";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Devel-GlobalDestruction-0.14.tar.gz";
+      sha256 = "1aslj6myylsvzr0vpqry1cmmvzbmpbdcl4v9zrl18ccik7rabf1l";
+    };
+    propagatedBuildInputs = [ SubExporterProgressive ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelGlobalPhase = buildPerlPackage {
+     pname = "Devel-GlobalPhase";
+     version = "0.003003";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/H/HA/HAARG/Devel-GlobalPhase-0.003003.tar.gz";
+       sha256 = "1x9jzy3l7gwikj57swzl94qsq03j9na9h1m69azzs7d7ghph58wd";
+     };
+     meta = {
+       description = "Detect perl's global phase on older perls.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  DevelHide = buildPerlPackage {
+    pname = "Devel-Hide";
+    version = "0.0013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Devel-Hide-0.0013.tar.gz";
+      sha256 = "1jvyy3yasiwyjsn9ay9sja3ch4wcjc4wk5l22vjsclq29z7vphvg";
+    };
+  };
+
+  DevelNYTProf = buildPerlPackage {
+    pname = "Devel-NYTProf";
+    version = "6.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JK/JKEENAN/Devel-NYTProf-6.10.tar.gz";
+      sha256 = "24ac4174f1f01322063fa4e119b247d371d3260ddca6e778c6c1a0e3f905f58e";
+    };
+    propagatedBuildInputs = [ FileWhich JSONMaybeXS ];
+    meta = {
+      homepage = "https://github.com/timbunce/devel-nytprof";
+      description = "Powerful fast feature-rich Perl source code profiler";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ CaptureTiny TestDifferences ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/*
+    '';
+  };
+
+  DevelOverloadInfo = buildPerlPackage {
+     pname = "Devel-OverloadInfo";
+     version = "0.005";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IL/ILMARI/Devel-OverloadInfo-0.005.tar.gz";
+       sha256 = "1rx6g8pyhi7lx6z130b7vlf8syzrq92w9ky8mpw4d6bwlkzy5zcb";
+     };
+     propagatedBuildInputs = [ MROCompat PackageStash SubIdentify ];
+     buildInputs = [ TestFatal ];
+     meta = {
+       description = "introspect overloaded operators";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  DevelPartialDump = buildPerlPackage {
+    pname = "Devel-PartialDump";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Devel-PartialDump-0.20.tar.gz";
+      sha256 = "01yrsdpn9ns9iwwc92bhjn2605b7ys7i3198gjb935lsllzgzw5f";
+    };
+    propagatedBuildInputs = [ ClassTiny SubExporter namespaceclean ];
+    buildInputs = [ TestSimple13 TestWarnings ];
+  };
+
+  DevelStackTrace = buildPerlPackage {
+    pname = "Devel-StackTrace";
+    version = "2.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Devel-StackTrace-2.04.tar.gz";
+      sha256 = "cd3c03ed547d3d42c61fa5814c98296139392e7971c092e09a431f2c9f5d6855";
+    };
+    meta = {
+      description = "An object representing a stack trace";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DevelSize = buildPerlPackage {
+    pname = "Devel-Size";
+    version = "0.83";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NW/NWCLARK/Devel-Size-0.83.tar.gz";
+      sha256 = "757a67e0aa59ae103ea5ca092cbecc025644ebdc326731688ffab6f8823ef4b3";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelStackTraceAsHTML = buildPerlPackage {
+    pname = "Devel-StackTrace-AsHTML";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Devel-StackTrace-AsHTML-0.15.tar.gz";
+      sha256 = "0iri5nb2lb76qv5l9z0vjpfrq5j2fyclkd64kh020bvy37idp0v2";
+    };
+    propagatedBuildInputs = [ DevelStackTrace ];
+    meta = {
+      description = "Displays stack trace in HTML";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DevelSymdump = buildPerlPackage {
+    pname = "Devel-Symdump";
+    version = "2.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz";
+      sha256 = "826f81a107f5592a2516766ed43beb47e10cc83edc9ea48090b02a36040776c0";
+    };
+    meta = {
+      description = "Dump symbol names or the symbol table";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DigestCRC = buildPerlPackage {
+    pname = "Digest-CRC";
+    version = "0.22.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OL/OLIMAUL/Digest-CRC-0.22.2.tar.gz";
+      sha256 = "112b50f7fbc6f6baf5d4584ee97f542ced6c9ec03a3147f7902c84b8b26778cb";
+    };
+    meta = {
+      description = "Module that calculates CRC sums of all sorts";
+      license = lib.licenses.publicDomain;
+    };
+  };
+
+  DigestHMAC = buildPerlPackage {
+    pname = "Digest-HMAC";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Digest-HMAC-1.03.tar.gz";
+      sha256 = "0naavabbm1c9zgn325ndy66da4insdw9l3mrxwxdfi7i7xnjrirv";
+    };
+    meta = {
+      description = "Keyed-Hashing for Message Authentication";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DigestJHash = buildPerlPackage {
+    pname = "Digest-JHash";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Digest-JHash-0.10.tar.gz";
+      sha256 = "c746cf0a861a004090263cd54d7728d0c7595a0cf90cbbfd8409b396ee3b0063";
+    };
+    meta = {
+      description = "Perl extension for 32 bit Jenkins Hashing Algorithm";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DigestMD2 = buildPerlPackage {
+    pname = "Digest-MD2";
+    version = "2.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Digest-MD2-2.04.tar.gz";
+      sha256 = "d0aabf4834c20ac411bea427c4a308b59a5fcaa327679ef5294c1d68ab71eed3";
+    };
+    meta = {
+      description = "Perl interface to the MD2 Algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DigestMD4 = buildPerlPackage {
+    pname = "Digest-MD4";
+    version = "1.9";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKEM/DigestMD4/Digest-MD4-1.9.tar.gz";
+      sha256 = "19ma1hmvgiznq95ngzvm6v4dfxc9zmi69k8iyfcg6w14lfxi0lb6";
+    };
+  };
+
+  DigestMD5 = buildPerlPackage rec {
+    pname = "Digest-MD5";
+    version = "2.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/${pname}-${version}.tar.gz";
+      sha256 = "03b198a2d14425d951e5e50a885d3818c3162c8fe4c21e18d7798a9a179d0e3c";
+    };
+    meta = {
+      description = "Perl interface to the MD-5 algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DigestMD5File = buildPerlPackage {
+    pname = "Digest-MD5-File";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DM/DMUEY/Digest-MD5-File-0.08.tar.gz";
+      sha256 = "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "Perl extension for getting MD5 sums for files and urls";
+    };
+  };
+
+  DigestPerlMD5 = buildPerlPackage {
+    pname = "Digest-Perl-MD5";
+    version = "1.9";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DELTA/Digest-Perl-MD5-1.9.tar.gz";
+      sha256 = "7100cba1710f45fb0e907d8b1a7bd8caef35c64acd31d7f225aff5affeecd9b1";
+    };
+    meta = {
+      description = "Perl Implementation of Rivest's MD5 algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DigestSHA1 = buildPerlPackage {
+    pname = "Digest-SHA1";
+    version = "2.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Digest-SHA1-2.13.tar.gz";
+      sha256 = "1k23p5pjk42vvzg8xcn4iwdii47i0qm4awdzgbmz08bl331dmhb8";
+    };
+    meta = {
+      description = "Perl interface to the SHA-1 algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DigestSHA3 = buildPerlPackage {
+    pname = "Digest-SHA3";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSHELOR/Digest-SHA3-1.04.tar.gz";
+      sha256 = "4a68b67c5034f40fbb1344b304cd66caaa5e320eb523005201cc24f76d470c14";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/Digest-SHA3";
+      description = "Perl extension for SHA-3";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  DirManifest = buildPerlModule {
+    pname = "Dir-Manifest";
+    version = "0.6.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Dir-Manifest-0.6.1.tar.gz";
+      sha256 = "01g54wlvp647zvhn0sxl2pqajly17044qd3pxib8cpixhwk75zw4";
+    };
+    propagatedBuildInputs = [ Moo PathTiny ];
+    meta = {
+      description = "treat a directory and a manifest file as a hash/dictionary of keys to texts or blobs";
+      license = with lib.licenses; [ mit ];
+    };
+  };
+
+  DirSelf = buildPerlPackage {
+    pname = "Dir-Self";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAUKE/Dir-Self-0.11.tar.gz";
+      sha256 = "e251a51abc7d9ba3e708f73c2aa208e09d47a0c528d6254710fa78cc8d6885b5";
+    };
+    meta = {
+      homepage = "https://github.com/mauke/Dir-Self";
+      description = "A __DIR__ constant for the directory your source file is in";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DispatchClass = buildPerlPackage {
+    pname = "Dispatch-Class";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAUKE/Dispatch-Class-0.02.tar.gz";
+      sha256 = "10k5l4n2mp0hfn9jwn785k211n75y56zwny1zx3bvs7r38xv8kfp";
+    };
+    propagatedBuildInputs = [ ExporterTiny ];
+    meta = {
+      description = "dispatch on the type (class) of an argument";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistCheckConflicts = buildPerlPackage {
+    pname = "Dist-CheckConflicts";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/Dist-CheckConflicts-0.11.tar.gz";
+      sha256 = "1i7dr9jpdiy2nijl2p4q5zg2q2s9ckbj2hs4kmnnckf9hsb4p17a";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ModuleRuntime ];
+    meta = {
+      description = "Declare version conflicts for your dist";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZilla = buildPerlPackage {
+    pname = "Dist-Zilla";
+    version = "6.017";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Dist-Zilla-6.017.tar.gz";
+      sha256 = "1vkg5cyazhy2kdffwlcr2k52awlyfzxgr0vggs9mx2xc6g7313aw";
+    };
+    buildInputs = [ CPANMetaCheck TestDeep TestFailWarnings TestFatal TestFileShareDir ];
+    propagatedBuildInputs = [ AppCmd CPANUploader ConfigMVPReaderINI DateTime FileCopyRecursive FileFindRule FileShareDirInstall Filepushd LogDispatchouli MooseXLazyRequire MooseXSetOnce MooseXTypesPerl PathTiny PerlPrereqScanner SoftwareLicense TermEncoding TermUI YAMLTiny ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/dzil
+    '';
+    meta = {
+      homepage = "http://dzil.org/";
+      description = "Distribution builder; installer not included!";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    doCheck = false;
+  };
+
+  DistZillaPluginBundleTestingMania = buildPerlModule {
+    pname = "Dist-Zilla-PluginBundle-TestingMania";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-PluginBundle-TestingMania-0.25.tar.gz";
+      sha256 = "072rsilh88xnk18ldbr8d0svji72r79sabyird6xc3ql1z0b42sy";
+    };
+    buildInputs = [ MooseAutobox TestCPANMeta TestPerlCritic TestVersion ];
+    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 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.' */
+  };
+
+  DistZillaPluginCheckChangeLog = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-CheckChangeLog";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FA/FAYLAND/Dist-Zilla-Plugin-CheckChangeLog-0.05.tar.gz";
+      sha256 = "b0b34d6d70b56f1944d03c5f0dc3b8f6f24474c816d07b657a116c692c2e052a";
+    };
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Dist::Zilla with Changes check";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ PathClass PodCoverage PodCoverageTrustPod PodMarkdown TestDeep TestException TestPod TestPodCoverage ];
+  };
+
+  DistZillaPluginMojibakeTests = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-MojibakeTests";
+    version = "0.8";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYP/Dist-Zilla-Plugin-MojibakeTests-0.8.tar.gz";
+      sha256 = "f1fff547ea24a8f7a483406a72ed6c4058d746d9dae963725502ddba025ab380";
+    };
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      homepage = "https://github.com/creaktive/Dist-Zilla-Plugin-MojibakeTests";
+      description = "Release tests for source encoding";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestMojibake ];
+  };
+
+  DistZillaPluginPodWeaver = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-PodWeaver";
+    version = "4.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Dist-Zilla-Plugin-PodWeaver-4.008.tar.gz";
+      sha256 = "0ff1i26s54z292j8w8vm3gw3p7w1yq35wi8g978c84ia7y1y7n8z";
+    };
+    propagatedBuildInputs = [ DistZilla PodElementalPerlMunger PodWeaver ];
+    meta = {
+      homepage = "https://github.com/rjbs/Dist-Zilla-Plugin-PodWeaver";
+      description = "Weave your Pod together from configuration and Dist::Zilla";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginReadmeAnyFromPod = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-ReadmeAnyFromPod";
+    version = "0.163250";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RT/RTHOMPSON/Dist-Zilla-Plugin-ReadmeAnyFromPod-0.163250.tar.gz";
+      sha256 = "d44f2799922f78b2a7961ed89123e11bdd77abfe85ba2040d82b80ad72ed13bc";
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestFatal TestMost TestRequires TestSharedFork TestWarn ];
+    propagatedBuildInputs = [ DistZillaRoleFileWatcher MooseXHasSugar PodMarkdownGithub ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginReadmeMarkdownFromPod = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-ReadmeMarkdownFromPod";
+    version = "0.141140";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RT/RTHOMPSON/Dist-Zilla-Plugin-ReadmeMarkdownFromPod-0.141140.tar.gz";
+      sha256 = "9caad7b366ea59119ad73cdd99dcdd53f877a515bd0164fc28b339c01739a801";
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestMost TestWarn ];
+    propagatedBuildInputs = [ DistZillaPluginReadmeAnyFromPod ];
+    meta = {
+      homepage = "https://github.com/DarwinAwardWinner/Dist-Zilla-Plugin-ReadmeMarkdownFromPod";
+      description = "Automatically convert POD to a README.mkdn for Dist::Zilla";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestCPANChanges = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-Test-CPAN-Changes";
+    version = "0.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-Plugin-Test-CPAN-Changes-0.012.tar.gz";
+      sha256 = "215b3a5c3c58c8bab0ea27130441bbdaec737eecc00f0670937f608bdbf64806";
+    };
+    buildInputs = [ CPANChanges TestDeep ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for your changelog";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestCPANMetaJSON = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-CPAN-Meta-JSON";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-Plugin-Test-CPAN-Meta-JSON-0.004.tar.gz";
+      sha256 = "0a573e1d5640374e6ee4d56d4fb94a3c67d4e75d52b3ddeae70cfa6450e1af22";
+    };
+    buildInputs = [ MooseAutobox TestCPANMetaJSON TestDeep ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      homepage = "http://p3rl.org/Dist::Zilla::Plugin::Test::CPAN::Meta::JSON";
+      description = "Release tests for your META.json";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestCompile = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-Compile";
+    version = "2.058";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-Compile-2.058.tar.gz";
+      sha256 = "d0cf93e525f102eca0f7f3967124d2e59d0a212f738ce54c1ddd91dda268d88a";
+    };
+    buildInputs = [ CPANMetaCheck ModuleBuildTiny TestDeep TestMinimumVersion TestWarnings ];
+    propagatedBuildInputs = [ DistZilla ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestDistManifest = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-DistManifest";
+    version = "2.000005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-Plugin-Test-DistManifest-2.000005.tar.gz";
+      sha256 = "4f0af27bb38745d2dec7d941bcf749e6d7fbeaf8e7bcf8a79a1310a9639b0f65";
+    };
+    buildInputs = [ TestDeep TestDistManifest TestOutput ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for the manifest";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestEOL = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-EOL";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-EOL-0.19.tar.gz";
+      sha256 = "0f23g931azz1k41xdfxw7kayy4snhw4qdr9ysknk5k1cl33mkfd2";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestEOL TestWarnings ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Author tests making sure correct line endings are used";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DistZillaPluginTestKwalitee = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-Kwalitee";
+    version = "2.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-Kwalitee-2.12.tar.gz";
+      sha256 = "bddbcfcc75e8eb2d2d9c8611552f00cdc1b051f0f00798623b8692ff5030af2f";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestFatal TestKwalitee ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for kwalitee";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestMinimumVersion = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-MinimumVersion";
+    version = "2.000010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-MinimumVersion-2.000010.tar.gz";
+      sha256 = "b8b71f4b64b689f4b647a3a87d6aaaae45a68892d35e36baa976f605736370fb";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestMinimumVersion TestOutput ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for minimum required versions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestNoTabs = buildPerlModule {
+     pname = "Dist-Zilla-Plugin-Test-NoTabs";
+     version = "0.15";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-NoTabs-0.15.tar.gz";
+       sha256 = "196hchmn8y591533v3p7kl75nlhpaygbfdiw2iqbnab9j510qq8v";
+     };
+     propagatedBuildInputs = [ DistZilla ];
+     buildInputs = [ ModuleBuildTiny TestDeep TestNoTabs TestRequires ];
+     meta = {
+       description = "Author tests that ensure hard tabs are not used";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/karenetheridge/Dist-Zilla-Plugin-Test-NoTabs";
+     };
+  };
+
+  DistZillaPluginTestPerlCritic = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-Perl-Critic";
+    version = "3.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-Perl-Critic-3.001.tar.gz";
+      sha256 = "9250b59d5dc1ae4c6893ba783bd3f05131b14ff9e91afb4555314f55268a3825";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestPerlCritic ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Tests to check your code against best practices";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestPodLinkCheck = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-Test-Pod-LinkCheck";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RW/RWSTAUNER/Dist-Zilla-Plugin-Test-Pod-LinkCheck-1.004.tar.gz";
+      sha256 = "325d236da0940388d2aa86ec5c1326516b4ad45adef8e7a4f83bb91d5ee15490";
+    };
+#    buildInputs = [ TestPodLinkCheck ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      homepage = "https://github.com/rwstauner/Dist-Zilla-Plugin-Test-Pod-LinkCheck";
+      description = "Add release tests for POD links";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestPodLinkCheck ];
+  };
+
+  DistZillaPluginTestPortability = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-Portability";
+    version = "2.001000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Plugin-Test-Portability-2.001000.tar.gz";
+      sha256 = "e08ff5bd9e24cf9503055330148913808d91a3dfe320a2bdf8b0fc638719b179";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestPortabilityFiles TestWarnings ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for portability";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestSynopsis = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-Test-Synopsis";
+    version = "2.000007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-Plugin-Test-Synopsis-2.000007.tar.gz";
+      sha256 = "e7d5e2530cd8a5bb5aadf3e1669a653aaa96e32cad7bd6b9caba6b425ceab563";
+    };
+    buildInputs = [ TestDeep TestOutput TestSynopsis ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for synopses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestUnusedVars = buildPerlModule {
+    pname = "Dist-Zilla-Plugin-Test-UnusedVars";
+    version = "2.000007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOHERTY/Dist-Zilla-Plugin-Test-UnusedVars-2.000007.tar.gz";
+      sha256 = "ea0199a3a0043213ddc132508b9ed9b131ef717735b8f93d78291191d04b43c2";
+    };
+    buildInputs = [ TestDeep TestOutput TestVars ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release tests for unused variables";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  DistZillaPluginTestVersion = buildPerlPackage {
+    pname = "Dist-Zilla-Plugin-Test-Version";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Dist-Zilla-Plugin-Test-Version-1.09.tar.gz";
+      sha256 = "7240508731bc1bf6dfad7701ec65450a18ef9245a521ab26ebd6acb39a9ebe17";
+    };
+    buildInputs = [ Filechdir TestDeep TestEOL TestNoTabs TestScript TestVersion ];
+    propagatedBuildInputs = [ DistZilla ];
+    meta = {
+      description = "Release Test::Version tests";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  DistZillaRoleFileWatcher = buildPerlModule {
+     pname = "Dist-Zilla-Role-FileWatcher";
+     version = "0.006";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/Dist-Zilla-Role-FileWatcher-0.006.tar.gz";
+       sha256 = "15jfpr257xxp27gz156npgpj7kh2dchzgfmvzivi5bvdb2wl8fpy";
+     };
+     propagatedBuildInputs = [ DistZilla SafeIsa ];
+     buildInputs = [ ModuleBuildTiny TestDeep TestFatal ];
+     meta = {
+       description = "Receive notification when something changes a file's contents";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/karenetheridge/Dist-Zilla-Role-FileWatcher";
+     };
+  };
+
+  Dotenv = buildPerlPackage {
+    pname = "Dotenv";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/Dotenv-0.002.tar.gz";
+      sha256 = "04c7a7cc4511617d7a70c4ca410d10707dc496248cdad20240ae242223212454";
+    };
+    buildInputs = [ TestCPANMeta TestPod TestPodCoverage ];
+    propagatedBuildInputs = [ PathTiny ];
+    meta = {
+      description = "Support for C<dotenv> in Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Dumbbench = buildPerlPackage {
+    pname = "Dumbbench";
+    version = "0.111";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Dumbbench-0.111.tar.gz";
+      sha256 = "1ixjb9y9d0k1vd4mzbi4sgvr99ay4z9jkgychf0r5gbjsskkq7fk";
+    };
+    propagatedBuildInputs = [ CaptureTiny ClassXSAccessor DevelCheckOS NumberWithError StatisticsCaseResampling ];
+    meta = {
+      description = "More reliable benchmarking with the least amount of thinking";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/briandfoy/dumbbench";
+    };
+  };
+
+  EmailAbstract = buildPerlPackage {
+    pname = "Email-Abstract";
+    version = "3.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Abstract-3.008.tar.gz";
+      sha256 = "fc7169acb6c43df7f005e7ef6ad08ee8ca6eb6796b5d1604593c997337cc8240";
+    };
+    propagatedBuildInputs = [ EmailSimple MROCompat ModulePluggable ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Abstract";
+      description = "Unified interface to mail representations";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailAddress = buildPerlPackage {
+    pname = "Email-Address";
+    version = "1.912";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Address-1.912.tar.gz";
+      sha256 = "1vzr0vx4zsw4zbc9xdffc31wnkc1raqmyfiyws06fbyck197i8qg";
+    };
+    meta = {
+      description = "RFC 2822 Address Parsing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailAddressList = buildPerlPackage {
+    pname = "Email-Address-List";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Email-Address-List-0.06.tar.gz";
+      sha256 = "305b94c778011cee70d9f21514d92e985fa9dccbb84c64798f0c1f0b24eb870e";
+    };
+    buildInputs = [ JSON ];
+    propagatedBuildInputs = [ EmailAddress ];
+    meta = {
+      description = "RFC close address list parsing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailAddressXS = buildPerlPackage {
+     pname = "Email-Address-XS";
+     version = "1.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/P/PA/PALI/Email-Address-XS-1.04.tar.gz";
+       sha256 = "0gjrrl81z3sfwavgx5kwjd87gj44mlnbbqsm3dgdv1xllw26spwr";
+     };
+     meta = {
+       description = "Parse and format RFC 2822 email addresses and groups";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  EmailDateFormat = buildPerlPackage {
+    pname = "Email-Date-Format";
+    version = "1.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Date-Format-1.005.tar.gz";
+      sha256 = "579c617e303b9d874411c7b61b46b59d36f815718625074ae6832e7bb9db5104";
+    };
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Date-Format";
+      description = "Produce RFC 2822 date strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailReply = buildPerlPackage {
+    pname = "Email-Reply";
+    version = "1.204";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Reply-1.204.tar.gz";
+      sha256 = "ba4fd80ac5017d6d132e0358c786b0ecd1c7adcbeee5c19fb3da2964791a56f0";
+    };
+    propagatedBuildInputs = [ EmailAbstract EmailAddress EmailMIME ];
+    meta = {
+      description = "Reply to an email message";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailMessageID = buildPerlPackage {
+    pname = "Email-MessageID";
+    version = "1.406";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-MessageID-1.406.tar.gz";
+      sha256 = "1f22sdnfq169qw1l0lg7y74pmiam7j9v95bggjnf3q4mygdmshpc";
+    };
+    meta = {
+      description = "Generate world unique message-ids";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailMIME = buildPerlPackage {
+    pname = "Email-MIME";
+    version = "1.949";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-MIME-1.949.tar.gz";
+      sha256 = "3b0adf6bb413cfe51d75f8ba79aca80deafc98dc1179aa7b2d7a79aff5a6ab9c";
+    };
+    propagatedBuildInputs = [ EmailAddressXS EmailMIMEContentType EmailMIMEEncodings EmailMessageID EmailSimple MIMETypes ModuleRuntime ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-MIME";
+      description = "Easy MIME message handling";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailMIMEAttachmentStripper = buildPerlPackage {
+    pname = "Email-MIME-Attachment-Stripper";
+    version = "1.317";
+    buildInputs = [ CaptureTiny ];
+    propagatedBuildInputs = [ EmailAbstract EmailMIME ];
+
+    src = fetchurl {
+        url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-MIME-Attachment-Stripper-1.317.tar.gz";
+        sha256 = "dcb98b09dc3e8f757ec3882a4234548108bb2d12e3cfadf95a26cef381a9e789";
+    };
+    meta = {
+        description = "Strip the attachments from an email";
+        license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailMIMEContentType = buildPerlPackage {
+    pname = "Email-MIME-ContentType";
+    version = "1.024";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-MIME-ContentType-1.024.tar.gz";
+      sha256 = "42d164ac7ff4dc2ea848e710fe21fa85509a3bcbb91ed2d356e4aba951ed8835";
+    };
+    meta = {
+      homepage = "https://github.com/rjbs/Email-MIME-ContentType";
+      description = "Parse a MIME Content-Type Header";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ TextUnidecode ];
+  };
+
+  EmailMIMEEncodings = buildPerlPackage {
+    pname = "Email-MIME-Encodings";
+    version = "1.315";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-MIME-Encodings-1.315.tar.gz";
+      sha256 = "4c71045507b31ec853dd60152b40e33ba3741779c0f49bb143b50cf8d243ab5c";
+    };
+    buildInputs = [ CaptureTiny ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-MIME-Encodings";
+      description = "A unified interface to MIME encoding and decoding";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailSend = buildPerlPackage {
+    pname = "Email-Send";
+    version = "2.201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Send-2.201.tar.gz";
+      sha256 = "4bbec933558d7cc9b8152bad86dd313de277a21a89b4ea83d84e61587e95dbc6";
+    };
+    propagatedBuildInputs = [ EmailAbstract EmailAddress ReturnValue ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Send";
+      description = "Simply Sending Email";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ MIMETools MailTools ];
+  };
+
+  EmailOutlookMessage = buildPerlModule {
+    pname = "Email-Outlook-Message";
+    version = "0.920";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MV/MVZ/Email-Outlook-Message-0.920.tar.gz";
+      sha256 = "1063wpdf90k1f6vcqvs92cwm93zvmh3l09pfnrrsp6vqkyah48lj";
+    };
+    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 lib; {
+      homepage = "https://www.matijs.net/software/msgconv/";
+      description = "A .MSG to mbox converter";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ peterhoeg ];
+    };
+  };
+
+  EmailSender = buildPerlPackage {
+    pname = "Email-Sender";
+    version = "1.300035";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Sender-1.300035.tar.gz";
+      sha256 = "0yfssp3rqdx1dmgvnygarzgkpkhqm28r5sd0gh87ksk8yxndhjql";
+    };
+    buildInputs = [ CaptureTiny ];
+    propagatedBuildInputs = [ EmailAbstract EmailAddress MooXTypesMooseLike SubExporter Throwable TryTiny ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postPatch = ''
+      patchShebangs --build util
+    '';
+    preCheck = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang util/sendmail
+    '';
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Sender";
+      description = "A library for sending email";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailSimple = buildPerlPackage {
+    pname = "Email-Simple";
+    version = "2.216";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Simple-2.216.tar.gz";
+      sha256 = "d85f63cd1088d11311103676a8cf498fff564a201b538de52cd753b5e5ca8bd4";
+    };
+    propagatedBuildInputs = [ EmailDateFormat ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Simple";
+      description = "Simple parsing of RFC2822 message format and headers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EmailStuffer = buildPerlPackage {
+    pname = "Email-Stuffer";
+    version = "0.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Stuffer-0.018.tar.gz";
+      sha256 = "02wapphmcqbl1sg32x2az863lz5bb2dlckibxfqrjdlny27a406h";
+    };
+    buildInputs = [ Moo TestFatal ];
+    propagatedBuildInputs = [ EmailMIME EmailSender ModuleRuntime ParamsUtil ];
+    meta = {
+      homepage = "https://github.com/rjbs/Email-Stuffer";
+      description = "A more casual approach to creating and sending Email:: emails";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  EmailValid = buildPerlPackage {
+    pname = "Email-Valid";
+    version = "1.202";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Email-Valid-1.202.tar.gz";
+      sha256 = "18hkmhddzbd23s6ak64d4j6q8ijykjyp5nxbr2hfcq1acsdhh8fh";
+    };
+    propagatedBuildInputs = [ IOCaptureOutput MailTools NetDNS NetDomainTLD ];
+    doCheck = false;
+  };
+
+  EmailValidLoose = buildPerlPackage {
+    pname = "Email-Valid-Loose";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Email-Valid-Loose-0.05.tar.gz";
+      sha256 = "e718e76eddee240251c999e139c8cbe6f2cc80192da5af875cbd12fa8ab93a59";
+    };
+    propagatedBuildInputs = [ EmailValid ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Encode = buildPerlPackage {
+    pname = "Encode";
+    version = "3.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANKOGAI/Encode-3.08.tar.gz";
+      sha256 = "0nvvs5a7sz2x38isr5na31fa6ja85cpvmbn07qx0l50ss00ks1pd";
+    };
+    meta = {
+      description = "Character encodings in Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EncodeBase32GMP = buildPerlPackage {
+    pname = "Encode-Base32-GMP";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JW/JWANG/Encode-Base32-GMP-0.02.tar.gz";
+      sha256 = "454206fa7d82e55e03274698732341b607150f00e8e2aec58f35326a030832dc";
+    };
+    buildInputs = [ TestBase ];
+    propagatedBuildInputs = [ MathGMPz ];
+    meta = {
+      homepage = "https://metacpan.org/release/Encode-Base32-GMP";
+      description = "High speed Base32 encoding using GMP with BigInt and MD5 support";
+      license = lib.licenses.mit;
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  EncodeDetect = buildPerlModule {
+    pname = "Encode-Detect";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JG/JGMYERS/Encode-Detect-1.01.tar.gz";
+      sha256 = "834d893aa7db6ce3f158afbd0e432d6ed15a276e0940db0a74be13fd9c4bbbf1";
+    };
+    nativeBuildInputs = [ pkgs.ld-is-cc-hook ];
+    meta = {
+      description = "An Encode::Encoding subclass that detects the encoding of data";
+      license = lib.licenses.free;
+    };
+  };
+
+
+  EncodeEUCJPASCII = buildPerlPackage {
+    pname = "Encode-EUCJPASCII";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEZUMI/Encode-EUCJPASCII-0.03.tar.gz";
+      sha256 = "f998d34d55fd9c82cf910786a0448d1edfa60bf68e2c2306724ca67c629de861";
+    };
+    outputs = [ "out" ];
+    meta = {
+      description = "EucJP-ascii - An eucJP-open mapping";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EncodeHanExtra = buildPerlPackage {
+    pname = "Encode-HanExtra";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AU/AUDREYT/Encode-HanExtra-0.23.tar.gz";
+      sha256 = "1fd4b06cada70858003af153f94c863b3b95f2e3d03ba18d0451a81d51db443a";
+    };
+    meta = {
+      description = "Extra sets of Chinese encodings";
+      license = lib.licenses.mit;
+    };
+  };
+
+  EncodeJIS2K = buildPerlPackage {
+    pname = "Encode-JIS2K";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANKOGAI/Encode-JIS2K-0.03.tar.gz";
+      sha256 = "1ec84d72db39deb4dad6fca95acfcc21033f45a24d347c20f9a1a696896c35cc";
+    };
+    outputs = [ "out" ];
+    meta = {
+    };
+  };
+
+  EncodeLocale = buildPerlPackage {
+    pname = "Encode-Locale";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-1.05.tar.gz";
+      sha256 = "176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1";
+    };
+    preCheck = if stdenv.isCygwin then ''
+      sed -i"" -e "s@plan tests => 13@plan tests => 10@" t/env.t
+      sed -i"" -e "s@ok(env(\"\\\x@#ok(env(\"\\\x@" t/env.t
+      sed -i"" -e "s@ok(\$ENV{\"\\\x@#ok(\$ENV{\"\\\x@" t/env.t
+    '' else null;
+    meta = {
+      description = "Determine the locale encoding";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EncodeNewlines = buildPerlPackage {
+     pname = "Encode-Newlines";
+     version = "0.05";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Encode-Newlines-0.05.tar.gz";
+       sha256 = "1gipd3wnma28w5gjbzycfkpi6chksy14lhxkp4hwizf8r351zcrl";
+     };
+     meta = {
+       description = "Normalize line ending sequences";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/Encode-Newlines";
+     };
+  };
+
+  EncodePunycode = buildPerlPackage {
+    pname = "Encode-Punycode";
+    version = "1.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFAERBER/Encode-Punycode-1.002.tar.gz";
+      sha256 = "ca3aceecdb80b5d45aa10e1cde8fec4e90b4f8c9189c7504dd8658f071f77194";
+    };
+    buildInputs = [ TestNoWarnings ];
+    propagatedBuildInputs = [ NetIDNEncode ];
+    meta = {
+      homepage = "http://search.cpan.org/dist/Encode-Punycode";
+      description = "Encode plugin for Punycode (RFC 3492)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  enum = buildPerlPackage {
+    pname = "enum";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/enum-1.11.tar.gz";
+      sha256 = "d2f36b5015f1e35f640159867b60bf5d5cd66b56cd5e42d33f531be68e5eee35";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Env = buildPerlPackage {
+    pname = "Env";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FL/FLORA/Env-1.04.tar.gz";
+      sha256 = "d94a3d412df246afdc31a2199cbd8ae915167a3f4684f7b7014ce1200251ebb0";
+    };
+    meta = {
+      description = "Perl module that imports environment variables as scalars or arrays";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  EnvPath = buildPerlPackage {
+    pname = "Env-Path";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSB/Env-Path-0.19.tar.gz";
+      sha256 = "1qhmj15a66h90pjl2dgnxsb9jj3b1r5mpvnr87cafcl8g69z0jr4";
+    };
+  };
+
+  EnvSanctify = buildPerlPackage {
+    pname = "Env-Sanctify";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Env-Sanctify-1.12.tar.gz";
+      sha256 = "0prj51c9w4k6nrpnpfw6an96953vna74g698kyk78m163ikbbqr0";
+    };
+    meta = {
+      description = "Lexically scoped sanctification of %ENV";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/bingos/env-sanctify";
+    };
+  };
+
+  Error = buildPerlModule {
+    pname = "Error";
+    version = "0.17029";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Error-0.17029.tar.gz";
+      sha256 = "1p3spyarrh8y14d3j9s71xcndjlr70x3f8c3nvaddbij628zf8qs";
+    };
+  };
+
+  EV = buildPerlPackage {
+    pname = "EV";
+    version = "4.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/EV-4.33.tar.gz";
+      sha256 = "4aee8391b88113b42187f91fd49245fdc8e9b193a15ac202f519caae2aa8ea35";
+    };
+    buildInputs = [ CanaryStability ];
+    propagatedBuildInputs = [ commonsense ];
+    meta = {
+      license = lib.licenses.gpl1Plus;
+    };
+  };
+
+  EvalClosure = buildPerlPackage {
+    pname = "Eval-Closure";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/Eval-Closure-0.14.tar.gz";
+      sha256 = "1bcc47r6zm3hfr6ccsrs72kgwxm3wkk07mgnpsaxi67cypr482ga";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    meta = {
+      description = "Safely and cleanly create closures via string eval";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExcelWriterXLSX = buildPerlPackage {
+    pname = "Excel-Writer-XLSX";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMCNAMARA/Excel-Writer-XLSX-1.09.tar.gz";
+      sha256 = "d679c6ac19e93c32ab77594c793e41b948c7bb3873b600e70ad637d093dca187";
+    };
+    propagatedBuildInputs = [ ArchiveZip ];
+    meta = {
+      homepage = "http://jmcnamara.github.com/excel-writer-xlsx/";
+      description = "Create a new file in the Excel 2007+ XLSX format";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExceptionBase = buildPerlModule {
+    pname = "Exception-Base";
+    version = "0.2501";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Exception-Base-0.2501.tar.gz";
+      sha256 = "5723dd78f4ac0b4d262a05ea46af663ea00d8096b2e9c0a43515c210760e1e75";
+    };
+    buildInputs = [ TestUnitLite ];
+    meta = {
+      description = "Lightweight exceptions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExceptionClass = buildPerlPackage {
+    pname = "Exception-Class";
+    version = "1.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Exception-Class-1.44.tar.gz";
+      sha256 = "03gf4cdgrjnljgrlxkvbh2cahsyzn0zsh2zcli7b1lrqn7wgpwrk";
+    };
+    propagatedBuildInputs = [ ClassDataInheritable DevelStackTrace ];
+  };
+
+  ExceptionDied = buildPerlModule {
+    pname = "Exception-Died";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Exception-Died-0.06.tar.gz";
+      sha256 = "1dcajw2m3x5m76fpi3fvy9fjkmfrd171pnx087i5fkgx5ay41i1m";
+    };
+    buildInputs = [ TestAssert TestUnitLite ];
+    propagatedBuildInputs = [ ExceptionBase constantboolean ];
+  };
+
+  ExceptionWarning = buildPerlModule {
+    pname = "Exception-Warning";
+    version = "0.0401";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Exception-Warning-0.0401.tar.gz";
+      sha256 = "1a6k3sbhkxmz00wrmhv70f9kxjf7fklp1y6mnprfvcdmrsk9qdkv";
+    };
+    buildInputs = [ TestAssert TestUnitLite ];
+    propagatedBuildInputs = [ ExceptionBase ];
+  };
+
+  ExporterDeclare = buildPerlModule {
+    pname = "Exporter-Declare";
+    version = "0.114";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Exporter-Declare-0.114.tar.gz";
+      sha256 = "4bd70d6ca76f6f6ba7e4c618d4ac93b8593a58f1233ccbe18b10f5f204f1d4e4";
+    };
+    buildInputs = [ FennecLite TestException ];
+    propagatedBuildInputs = [ MetaBuilder aliased ];
+    meta = {
+      homepage = "https://metacpan.org/release/Exporter-Declare";
+      description = "Exporting done right";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExporterLite = buildPerlPackage {
+    pname = "Exporter-Lite";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Exporter-Lite-0.08.tar.gz";
+      sha256 = "1hns15imih8z2h6zv3m1wwmv9fiysacsb52y94v6zf2cmw4kjny0";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExporterTiny = buildPerlPackage {
+    pname = "Exporter-Tiny";
+    version = "1.002002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/Exporter-Tiny-1.002002.tar.gz";
+      sha256 = "00f0b95716b18157132c6c118ded8ba31392563d19e490433e9a65382e707101";
+    };
+    meta = {
+      description = "An exporter with the features of Sub::Exporter but only core dependencies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsCBuilder = buildPerlPackage {
+    pname = "ExtUtils-CBuilder";
+    version = "0.280234";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AM/AMBS/ExtUtils-CBuilder-0.280234.tar.gz";
+      sha256 = "1hzixkg85mys94a2i658pdr28xhzyrisvknsps691d183zm9a06q";
+    };
+    meta = {
+      description = "Compile and link C code for Perl modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://metacpan.org/release/ExtUtils-CBuilder";
+    };
+  };
+
+  Expect = buildPerlPackage {
+    pname = "Expect";
+    version = "1.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JACOBY/Expect-1.35.tar.gz";
+      sha256 = "09d92761421decd495853103379165a99efbf452c720f30277602cf23679fd06";
+    };
+    propagatedBuildInputs = [ IOTty ];
+    meta = {
+      description = "Automate interactions with command line programs that expose a text terminal interface";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExpectSimple = buildPerlPackage {
+    pname = "Expect-Simple";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DJ/DJERIUS/Expect-Simple-0.04.tar.gz";
+      sha256 = "af83b92185e642695913ff138efe819752e80857759996deafcaab2700ad5db5";
+    };
+    propagatedBuildInputs = [ Expect ];
+    meta = {
+      description = "Wrapper around the Expect module";
+      license = lib.licenses.free;
+    };
+  };
+
+  ExtUtilsCChecker = buildPerlModule {
+    pname = "ExtUtils-CChecker";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/ExtUtils-CChecker-0.11.tar.gz";
+      sha256 = "1x8vafpff5nma18svxp1h3mp069fjmzlsdvnbcgn3z1pgrkkcxqi";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "Configure-time utilities for using C headers,";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsConfig = buildPerlPackage {
+    pname = "ExtUtils-Config";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/ExtUtils-Config-0.008.tar.gz";
+      sha256 = "ae5104f634650dce8a79b7ed13fb59d67a39c213a6776cfdaa3ee749e62f1a8c";
+    };
+    meta = {
+      description = "A wrapper for perl's configuration";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsConstant = buildPerlPackage {
+    pname = "ExtUtils-Constant";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NW/NWCLARK/ExtUtils-Constant-0.25.tar.gz";
+      sha256 = "6933d0e963b62281ef7561068e6aecac8c4ac2b476b2bba09ab0b90fbac9d757";
+    };
+  };
+
+  ExtUtilsCppGuess = buildPerlPackage {
+    pname = "ExtUtils-CppGuess";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/ExtUtils-CppGuess-0.21.tar.gz";
+      sha256 = "0ls1y9bb2nff9djli91s86541r7ajcjp22gqhcdmj7hs69w92qpz";
+    };
+    nativeBuildInputs = [ pkgs.ld-is-cc-hook ];
+    propagatedBuildInputs = [ CaptureTiny ];
+    buildInputs = [ ModuleBuild ];
+  };
+
+  ExtUtilsDepends = buildPerlPackage {
+    pname = "ExtUtils-Depends";
+    version = "0.8000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/ExtUtils-Depends-0.8000.tar.gz";
+      sha256 = "165y1cjirbq64w39svkz82cb5jjqkjm8f4c0wqi2lk6050hzf3vq";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsF77 = buildPerlPackage rec {
+    pname = "ExtUtils-F77";
+    version = "1.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KG/KGB/ExtUtils-F77-1.24.tar.gz";
+      sha256 = "355878a4a7f901eb18d21f9e21be8c8bfc6aaf9665d34b241bc1d43e32c5b730";
+    };
+    buildInputs = [ pkgs.gfortran ];
+    meta = {
+      description = "A simple interface to F77 libs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ FileWhich ];
+  };
+
+  ExtUtilsHelpers = buildPerlPackage {
+    pname = "ExtUtils-Helpers";
+    version = "0.026";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/ExtUtils-Helpers-0.026.tar.gz";
+      sha256 = "05ilqcj1rg5izr09dsqmy5di4fvq6ph4k0chxks7qmd4j1kip46y";
+    };
+    meta = {
+      description = "Various portability utilities for module builders";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsInstall = buildPerlPackage {
+    pname = "ExtUtils-Install";
+    version = "2.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/ExtUtils-Install-2.18.tar.gz";
+      sha256 = "1i9hgvk3wcyshigfwvlrm2qilh8xvb7lfk3qdjrbnrrvl9xqgpg5";
+    };
+    meta = {
+      description = "Install files from here to there";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsInstallPaths = buildPerlPackage {
+    pname = "ExtUtils-InstallPaths";
+    version = "0.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/ExtUtils-InstallPaths-0.012.tar.gz";
+      sha256 = "1v9lshfhm9ck4p0v77arj5f7haj1mmkqal62lgzzvcds6wq5www4";
+    };
+    propagatedBuildInputs = [ ExtUtilsConfig ];
+    meta = {
+      description = "Build.PL install path logic made easy";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsLibBuilder = buildPerlModule {
+    pname = "ExtUtils-LibBuilder";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AM/AMBS/ExtUtils-LibBuilder-0.08.tar.gz";
+      sha256 = "1lmmfcjxvsvhn4f3v2lyylgr8dzcf5j7mnd1pkq3jc75dph724f5";
+    };
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "A tool to build C libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsMakeMaker = buildPerlPackage {
+    pname = "ExtUtils-MakeMaker";
+    version = "7.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-7.62.tar.gz";
+      sha256 = "5022ad857fd76bd3f6b16af099fe2324639d9932e08f21e891fb313d9cae1705";
+    };
+    meta = {
+      description = "Create a module Makefile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ExtUtilsMakeMakerCPANfile = buildPerlPackage {
+     pname = "ExtUtils-MakeMaker-CPANfile";
+     version = "0.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/ExtUtils-MakeMaker-CPANfile-0.09.tar.gz";
+       sha256 = "0xg2z100vjhcndwaz9m3mmi90rb8h5pggpvlj1b0i8dhsh3pc1rc";
+     };
+     propagatedBuildInputs = [ ModuleCPANfile ];
+     meta = {
+       description = "cpanfile support for EUMM";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ExtUtilsPkgConfig = buildPerlPackage {
+    pname = "ExtUtils-PkgConfig";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/ExtUtils-PkgConfig-1.16.tar.gz";
+      sha256 = "bbeaced995d7d8d10cfc51a3a5a66da41ceb2bc04fedcab50e10e6300e801c6e";
+    };
+    nativeBuildInputs = [ buildPackages.pkg-config ];
+    propagatedBuildInputs = [ pkgs.pkg-config ];
+    postPatch = ''
+      # no pkg-config binary when cross-compiling so the check fails
+      substituteInPlace Makefile.PL \
+        --replace "pkg-config" "$PKG_CONFIG"
+    '';
+    doCheck = false; # expects test_glib-2.0.pc in PKG_CONFIG_PATH
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net";
+      description = "Simplistic interface to pkg-config";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  # From CPAN[1]:
+  #   This module exists merely as a compatibility wrapper around
+  #   ExtUtils::Typemaps. In a nutshell, ExtUtils::Typemap was renamed to
+  #   ExtUtils::Typemaps because the Typemap directory in lib/ could collide with
+  #   the typemap file on case-insensitive file systems.
+  #
+  #   The ExtUtils::Typemaps module is part of the ExtUtils::ParseXS distribution
+  #   and ships with the standard library of perl starting with perl version
+  #   5.16.
+  #
+  # [1] https://metacpan.org/pod/release/SMUELLER/ExtUtils-Typemap-1.00/lib/ExtUtils/Typemap.pm:
+  ExtUtilsTypemap = buildPerlPackage {
+    pname = "ExtUtils-Typemap";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/ExtUtils-Typemap-1.00.tar.gz";
+      sha256 = "1iqz0xlscg655gnwb2h1wrjj70llblps1zznl29qn1mv5mvibc5i";
+    };
+  };
+
+  ExtUtilsTypemapsDefault = buildPerlModule {
+    pname = "ExtUtils-Typemaps-Default";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/ExtUtils-Typemaps-Default-1.05.tar.gz";
+      sha256 = "1phmha0ks95kvzl00r1kgnd5hvg7qb1q9jmzjmw01p5zgs1zbyix";
+    };
+  };
+
+  ExtUtilsXSBuilder = buildPerlPackage {
+    pname = "ExtUtils-XSBuilder";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRICHTER/ExtUtils-XSBuilder-0.28.tar.gz";
+      sha256 = "8cced386e3d544c5ec2deb3aed055b72ebcfc2ea9a6c807da87c4245272fe80a";
+    };
+    propagatedBuildInputs = [ ParseRecDescent TieIxHash ];
+  };
+
+  ExtUtilsXSpp = buildPerlModule {
+    pname = "ExtUtils-XSpp";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/ExtUtils-XSpp-0.18.tar.gz";
+      sha256 = "1zx84f93lkymqz7qa4d63gzlnhnkxm5i3gvsrwkvvqr9cxjasxli";
+    };
+    buildInputs = [ TestBase TestDifferences ];
+  };
+
+  FatalException = buildPerlModule {
+    pname = "Fatal-Exception";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Fatal-Exception-0.05.tar.gz";
+      sha256 = "0kzfwc44vpxla3j637kfmnwmv57g6x4899ijqb4ljamk7whms298";
+    };
+    buildInputs = [ ExceptionWarning TestAssert TestUnitLite ];
+    propagatedBuildInputs = [ ExceptionDied ];
+  };
+
+  FCGI = buildPerlPackage {
+    pname = "FCGI";
+    version = "0.79";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/FCGI-0.79.tar.gz";
+      sha256 = "1r1lzd74lzzdl2brcanw4n70m37nd8n6gv9clb55m3gv2hdlxylc";
+    };
+    postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+      sed -i '/use IO::File/d' Makefile.PL
+    '';
+  };
+
+  FCGIClient = buildPerlModule {
+     pname = "FCGI-Client";
+     version = "0.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/FCGI-Client-0.09.tar.gz";
+       sha256 = "1s11casbv0jmkcl5dk8i2vhfy1nc8rg43d3bg923zassrq4wndym";
+     };
+     propagatedBuildInputs = [ Moo TypeTiny ];
+     meta = {
+       description = "client library for fastcgi protocol";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  FCGIProcManager = buildPerlPackage {
+    pname = "FCGI-ProcManager";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARODLAND/FCGI-ProcManager-0.28.tar.gz";
+      sha256 = "e1c958c042427a175e051e0008f2025e8ec80613d3c7750597bf8e529b04420e";
+    };
+    meta = {
+      description = "A perl-based FastCGI process manager";
+    };
+  };
+
+  FFICheckLib = buildPerlPackage {
+    pname = "FFI-CheckLib";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/FFI-CheckLib-0.27.tar.gz";
+      sha256 = "0x1dk4hlhvcbgwivf345phbqz0v5hawxxnby21h8bkagq93jfi4d";
+    };
+    buildInputs = [ Test2Suite ];
+    meta = {
+      description = "Check that a library is available for FFI";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FennecLite = buildPerlModule {
+    pname = "Fennec-Lite";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Fennec-Lite-0.004.tar.gz";
+      sha256 = "dce28e3932762c2ff92aa52d90405c06e898e81cb7b164ccae8966ae77f1dcab";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/Fennec-Lite";
+      description = "Minimalist Fennec, the commonly used bits";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileChangeNotify = buildPerlPackage {
+    pname = "File-ChangeNotify";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/File-ChangeNotify-0.31.tar.gz";
+      sha256 = "192bdb1ce76266c6a694a8e962d039e3adeeb829b6ac1e23f5057f2b506392bd";
+    };
+    buildInputs = [ Test2Suite TestRequires TestWithoutModule ];
+    propagatedBuildInputs = [ ModulePluggable Moo TypeTiny namespaceautoclean ];
+    meta = with lib; {
+      description = "Watch for changes to files, cross-platform style";
+      license = licenses.artistic2;
+    };
+  };
+
+  Filechdir = buildPerlPackage {
+    pname = "File-chdir";
+    version = "0.1010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/File-chdir-0.1010.tar.gz";
+      sha256 = "009b8p2fzj4nhl03fpkhrn0rsh7myxqbrf69iqpzd86p1gs23hgg";
+    };
+  };
+
+  FileBaseDir = buildPerlModule {
+    version = "0.08";
+    pname = "File-BaseDir";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KI/KIMRYAN/File-BaseDir-0.08.tar.gz";
+      sha256 = "c065fcd3e2f22ae769937bcc971b91f80294d5009fac140bfba83bf7d35305e3";
+    };
+    configurePhase = ''
+      runHook preConfigure
+      perl Build.PL PREFIX="$out" prefix="$out"
+    '';
+    propagatedBuildInputs = [ IPCSystemSimple ];
+    buildInputs = [ FileWhich ];
+  };
+
+  FileBOM = buildPerlModule {
+    pname = "File-BOM";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATTLAW/File-BOM-0.18.tar.gz";
+      sha256 = "28edc43fcb118e11bc458c9ae889d56d388c1d9bc29997b00b1dffd8573823a3";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ Readonly ];
+    meta = {
+      description = "Utilities for handling Byte Order Marks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileCheckTree = buildPerlPackage {
+    pname = "File-CheckTree";
+    version = "4.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/File-CheckTree-4.42.tar.gz";
+      sha256 = "66fb417f8ff8a5e5b7ea25606156e70e204861c59fa8c3831925b4dd3f155f8a";
+    };
+    meta = {
+      description = "Run many filetest checks on a tree";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Filechmod = buildPerlPackage {
+    pname = "File-chmod";
+    version = "0.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XE/XENO/File-chmod-0.42.tar.gz";
+      sha256 = "6cafafff68bc84215168b55ede0d191dcb57f9a3201b51d61edb2858a2407795";
+    };
+    meta = {
+      homepage = "https://metacpan.org/dist/File-chmod";
+      description = "Implements symbolic and ls chmod modes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FilechmodRecursive = buildPerlPackage {
+    pname = "File-chmod-Recursive";
+    version = "1.0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MITHUN/File-chmod-Recursive-v1.0.3.tar.gz";
+      sha256 = "9348ca5c5b88deadcc483b9399ef7c2e0fc2504f9058db65f3c3c53c41139aa7";
+    };
+    propagatedBuildInputs = [ Filechmod ];
+    meta = {
+      homepage = "https://github.com/mithun/perl-file-chmod-recursive";
+      description = "Run chmod recursively against directories";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileCopyRecursive = buildPerlPackage {
+    pname = "File-Copy-Recursive";
+    version = "0.45";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DM/DMUEY/File-Copy-Recursive-0.45.tar.gz";
+      sha256 = "0mqivx4nbzagl3s2kxka72050sfb75xvn25j8a0f6ic3ibvir5yk";
+    };
+    buildInputs = [ PathTiny TestDeep TestFatal TestFile TestWarnings ];
+  };
+
+  FileCopyRecursiveReduced = buildPerlPackage {
+     pname = "File-Copy-Recursive-Reduced";
+     version = "0.006";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/J/JK/JKEENAN/File-Copy-Recursive-Reduced-0.006.tar.gz";
+       sha256 = "0b3yf33bahaf4ipfqipn8y5z4296k3vgzzsqbhh5ahwzls9zj676";
+     };
+     buildInputs = [ CaptureTiny PathTiny ];
+     meta = {
+       description = "Recursive copying of files and directories within Perl 5 toolchain";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "http://thenceforward.net/perl/modules/File-Copy-Recursive-Reduced/";
+     };
+  };
+
+  FileCountLines = buildPerlPackage {
+    pname = "File-CountLines";
+    version = "0.0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MORITZ/File-CountLines-v0.0.3.tar.gz";
+      sha256 = "cfd97cce7c9613e4e569d47874a2b5704f1be9eced2f0739c870725694382a62";
+    };
+    meta = {
+      description = "Efficiently count the number of line breaks in a file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileDesktopEntry = buildPerlPackage {
+    version = "0.22";
+    pname = "File-DesktopEntry";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MICHIELB/File-DesktopEntry-0.22.tar.gz";
+      sha256 = "169c01e3dae2f629767bec1a9f1cdbd6ec6d713d1501e0b2786e4dd1235635b8";
+    };
+    propagatedBuildInputs = [ FileBaseDir URI ];
+  };
+
+  FileFindIterator = buildPerlPackage {
+    pname = "File-Find-Iterator";
+    version = "0.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TE/TEXMEC/File-Find-Iterator-0.4.tar.gz";
+      sha256 = "a2b87ab9756a2e5bb674adbd39937663ed20c28c716bf5a1095a3ca44d54ab2c";
+    };
+    propagatedBuildInputs = [ ClassIterator ];
+    meta = {
+    };
+  };
+
+  FileFindObject = buildPerlModule {
+    pname = "File-Find-Object";
+    version = "0.3.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/File-Find-Object-0.3.5.tar.gz";
+      sha256 = "dc4124abe64dc1274e8e8a5e5bf9e17a2a9269debace458115b57469f1e16a91";
+    };
+    propagatedBuildInputs = [ ClassXSAccessor ];
+    meta = {
+      description = "An object oriented File::Find replacement";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  FileFindObjectRule = buildPerlModule {
+    pname = "File-Find-Object-Rule";
+    version = "0.0312";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/File-Find-Object-Rule-0.0312.tar.gz";
+      sha256 = "3e0b6c8dadf6362e65f2310530b1be637ed6aac113399d10c6f9129e734afff9";
+    };
+    propagatedBuildInputs = [ FileFindObject NumberCompare TextGlob ];
+    # restore t/sample-data which is corrupted by patching shebangs
+    preCheck = ''
+      tar xf $src */t/sample-data --strip-components=1
+    '';
+    meta = {
+      homepage = "https://www.shlomifish.org/open-source/projects/File-Find-Object/";
+      description = "Alternative interface to File::Find::Object";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileFindRule = buildPerlPackage {
+    pname = "File-Find-Rule";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/File-Find-Rule-0.34.tar.gz";
+      sha256 = "1znachnhmi1w5pdqx8dzgfa892jb7x8ivrdy4pzjj7zb6g61cvvy";
+    };
+    propagatedBuildInputs = [ NumberCompare TextGlob ];
+  };
+
+  FileFindRulePerl = buildPerlPackage {
+    pname = "File-Find-Rule-Perl";
+    version = "1.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/File-Find-Rule-Perl-1.15.tar.gz";
+      sha256 = "9a48433f86e08ce18e03526e2982de52162eb909d19735460f07eefcaf463ea6";
+    };
+    propagatedBuildInputs = [ FileFindRule ParamsUtil ];
+    meta = {
+      description = "Common rules for searching for Perl things";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileFinder = buildPerlPackage {
+    pname = "File-Finder";
+    version = "0.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ME/MERLYN/File-Finder-0.53.tar.gz";
+      sha256 = "2ecbc19ac67a9e635c872a807a8d3eaaff5babc054f15a191d47cdfc5f176a74";
+    };
+    propagatedBuildInputs = [ TextGlob ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileFnMatch = buildPerlPackage {
+    pname = "File-FnMatch";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJP/File-FnMatch-0.02.tar.gz";
+      sha256 = "05p9m7kpmjv8bmmbs5chb5fqyshcgmskbbzq5c9qpskbx2w5894n";
+    };
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "simple filename and pathname matching";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileGrep = buildPerlPackage {
+    pname = "File-Grep";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MN/MNEYLON/File-Grep-0.02.tar.gz";
+      sha256 = "462e15274eb6278521407ea302d9eea7252cd44cab2382871f7de833d5f85632";
+    };
+    meta = {
+      description = "Find matches to a pattern in a series of files and related functions";
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  FileHandleUnget = buildPerlPackage {
+    pname = "FileHandle-Unget";
+    version = "0.1634";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCOPPIT/FileHandle-Unget-0.1634.tar.gz";
+      sha256 = "380f34ad3ce5e9ec661d4c468bb3392231c162317d4172df378146b42aab1785";
+    };
+    buildInputs = [ FileSlurper TestCompile UNIVERSALrequire URI ];
+    meta = {
+      homepage = "https://github.com/coppit/filehandle-unget/";
+      description = "FileHandle which supports multi-byte unget";
+      license = lib.licenses.gpl2;
+      maintainers = with maintainers; [ romildo ];
+    };
+  };
+
+  FileHomeDir = buildPerlPackage {
+    pname = "File-HomeDir";
+    version = "1.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/File-HomeDir-1.006.tar.gz";
+      sha256 = "0ll8akqmwrh9q3nkxhv2caxlaya1fr20nbhjsjsxmxph5p33fdsr";
+    };
+    propagatedBuildInputs = [ FileWhich ];
+    meta = {
+      description = "Find your home and other directories on any platform";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    preCheck = "export HOME=$TMPDIR";
+    doCheck = !stdenv.isDarwin;
+  };
+
+  FileKeePass = buildPerlPackage {
+    pname = "File-KeePass";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RH/RHANDOM/File-KeePass-2.03.tar.gz";
+      sha256 = "c30c688027a52ff4f58cd69d6d8ef35472a7cf106d4ce94eb73a796ba7c7ffa7";
+    };
+    propagatedBuildInputs = [ CryptRijndael ];
+  };
+
+  Filelchown = buildPerlModule {
+    pname = "File-lchown";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/File-lchown-0.02.tar.gz";
+      sha256 = "a02fbf285406a8a4d9399284f032f2d55c56975154c2e1674bd109837b8096ec";
+    };
+    buildInputs = [ ExtUtilsCChecker ];
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    meta = {
+      description = "Modify attributes of symlinks without dereferencing them";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileLibMagic = buildPerlPackage {
+    pname = "File-LibMagic";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/File-LibMagic-1.23.tar.gz";
+      sha256 = "52e6b1dc7cb2d87a4cdf439ba145e0b9e8cf28cc26a48a3cf9977c83463967ee";
+    };
+    buildInputs = [ pkgs.file ConfigAutoConf TestFatal ];
+    makeMakerFlags = "--lib=${pkgs.file}/lib";
+    preCheck = ''
+      substituteInPlace t/oo-api.t \
+        --replace "/usr/share/file/magic.mgc" "${pkgs.file}/share/misc/magic.mgc"
+    '';
+    meta = {
+      description = "Determine MIME types of data or files using libmagic";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.FileLibMagic.x86_64-darwin
+    };
+  };
+
+  FileListing = buildPerlPackage {
+    pname = "File-Listing";
+    version = "6.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/File-Listing-6.14.tar.gz";
+      sha256 = "1zs8gfngqsd6jbsqajf95kql3bshsis1nf16y8v4l5i33s3s9cqm";
+    };
+    propagatedBuildInputs = [ HTTPDate ];
+  };
+
+  FileLoadLines = buildPerlPackage {
+    pname = "File-LoadLines";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/File-LoadLines-1.01.tar.gz";
+      sha256 = "1lar8s1mc4d36lhxgqyk3hpwdc1bk6j6dfdzzacbjz4zlim6x33f";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      description = "Load lines from file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileMimeInfo = buildPerlPackage {
+    pname = "File-MimeInfo";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MICHIELB/File-MimeInfo-0.30.tar.gz";
+      sha256 = "0wm87gpagb35d7c4nyaf9z3ry0jb3g5xpyjfzcxqcfxyj2zy9ip2";
+    };
+    doCheck = false; # Failed test 'desktop file is the right one'
+    buildInputs = [ FileBaseDir FileDesktopEntry EncodeLocale ];
+  };
+
+  FileMMagic = buildPerlPackage {
+    pname = "File-MMagic";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KN/KNOK/File-MMagic-1.30.tar.gz";
+      sha256 = "cf0c1b1eb29705c02d97c2913648009c0be42ce93ec24b36c696bf2d4f5ebd7e";
+    };
+    meta = {
+      description = "Guess file type from contents";
+      license = lib.licenses.free; # Some form of BSD4/Apache mix.
+    };
+  };
+
+  FileMap = buildPerlModule {
+    pname = "File-Map";
+    version = "0.67";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/File-Map-0.67.tar.gz";
+      sha256 = "1hpv4aprgypjxjx1kzbjnf6r29a98rw7mndlinixzk62vyz5sy0j";
+    };
+    perlPreHook = "export LD=$CC";
+    propagatedBuildInputs = [ PerlIOLayers SubExporterProgressive ];
+    buildInputs = [ TestFatal TestWarnings ];
+    meta = {
+      description = "Memory mapping made simple and safe.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileModified = buildPerlPackage {
+    pname = "File-Modified";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/File-Modified-0.10.tar.gz";
+      sha256 = "6b50b1aab6ec6998a017f6403c2735b3bc1e1cf46187bd134d7eb6df3fc45144";
+    };
+    meta = {
+      homepage = "https://github.com/neilbowers/File-Modified";
+      description = "Checks intelligently if files have changed";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileNext = buildPerlPackage {
+    pname = "File-Next";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/File-Next-1.18.tar.gz";
+      sha256 = "1vy2dqpc1nbjrnga08xr2hcxxfzifc5s2lfam5lf3djya0wwn07r";
+    };
+  };
+
+  FileNFSLock = buildPerlPackage {
+    pname = "File-NFSLock";
+    version = "1.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BB/BBB/File-NFSLock-1.29.tar.gz";
+      sha256 = "0dzssj15faz9cn1w3xi7jwm64gyjyazapv4bkgglw5l1njcibm31";
+    };
+  };
+
+  FilePath = buildPerlPackage {
+    pname = "File-Path";
+    version = "2.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JK/JKEENAN/File-Path-2.18.tar.gz";
+      sha256 = "1pddss5hwzng0rxgsi8cz3hcsaarkxzkayydx53dylxkxlbhl3wq";
+    };
+    meta = {
+      description = "Create or remove directory trees";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FilePid = buildPerlPackage {
+    pname = "File-Pid";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CW/CWEST/File-Pid-1.01.tar.gz";
+      sha256 = "bafeee8fdc96eb06306a0c58bbdb7209b6de45f850e75fdc6b16db576e05e422";
+    };
+    patches = [(fetchpatch {
+      name = "missing-pidfile.patch";
+      url = "https://sources.debian.org/data/main/libf/libfile-pid-perl/1.01-2/debian/patches/missing-pidfile.patch";
+      sha256 = "1wvax2qdpfs9mgksnc12dhby9b9w19isp50dc55wd3d741ihh6sl";
+    })];
+    propagatedBuildInputs = [ ClassAccessor ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      description = "Pid File Manipulation";
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  Filepushd = buildPerlPackage {
+    pname = "File-pushd";
+    version = "1.016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/File-pushd-1.016.tar.gz";
+      sha256 = "d73a7f09442983b098260df3df7a832a5f660773a313ca273fa8b56665f97cdc";
+    };
+    meta = {
+      description = "Change directory temporarily for a limited scope";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  FileReadBackwards = buildPerlPackage {
+    pname = "File-ReadBackwards";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/U/UR/URI/File-ReadBackwards-1.05.tar.gz";
+      sha256 = "82b261af87507cc3e7e66899c457104ebc8d1c09fb85c53f67c1f90f70f18d6e";
+    };
+    meta = {
+      description = "Read a file backwards by lines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileRemove = buildPerlModule {
+    pname = "File-Remove";
+    version = "1.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/File-Remove-1.60.tar.gz";
+      sha256 = "19lc9xr8w38i4bq3mbr0hadmyjm1dgyh6587gmlxbipdzx02lvp8";
+    };
+  };
+
+  FileShare = buildPerlPackage {
+    pname = "File-Share";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/File-Share-0.25.tar.gz";
+      sha256 = "0w3h800qqcf1sn79h84zngnn788rg2jx4jjb70l44f6419p2b7cf";
+    };
+    propagatedBuildInputs = [ FileShareDir ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/file-share-pm";
+      description = "Extend File::ShareDir to Local Libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileShareDir = buildPerlPackage {
+    pname = "File-ShareDir";
+    version = "1.118";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/File-ShareDir-1.118.tar.gz";
+      sha256 = "0n69h793jxz1zkp8ng6yqjwdh0yr0py0c8sg1bf5iyaxlc5s5civ";
+    };
+    propagatedBuildInputs = [ ClassInspector ];
+    meta = {
+      description = "Locate per-dist and per-module shared files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ FileShareDirInstall ];
+  };
+
+  FileShareDirInstall = buildPerlPackage {
+    pname = "File-ShareDir-Install";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz";
+      sha256 = "1yc0wlkav2l2wr36a53n4mnhsy2zv29z5nm14mygxgjwv7qgvgj5";
+    };
+    meta = {
+      description = "Install shared files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FilesysDf = buildPerlPackage {
+    pname = "Filesys-Df";
+    version = "0.92";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IG/IGUTHRIE/Filesys-Df-0.92.tar.gz";
+      sha256 = "fe89cbb427e0e05f1cd97c2dd6d3866ac6b21bc7a85734ede159bdc35479552a";
+    };
+    meta = {
+      description = "Perl extension for filesystem disk space information.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FilesysNotifySimple = buildPerlPackage {
+    pname = "Filesys-Notify-Simple";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Filesys-Notify-Simple-0.14.tar.gz";
+      sha256 = "192m0l4cnfskdmhgaxk3bm1rvbmzxzwgcdgdb60qdqd59cnp3nhz";
+    };
+    meta = {
+      description = "Simple and dumb file system watcher";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestSharedFork ];
+  };
+
+  FilesysDiskUsage = buildPerlPackage {
+    pname = "Filesys-DiskUsage";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/Filesys-DiskUsage-0.13.tar.gz";
+      sha256 = "fd3e52c6f6241271a281348d1d43c44154c2f61a32543db46aa9e15692d1b713";
+    };
+    buildInputs = [ TestWarn ];
+    meta = {
+      description = "Estimate file space usage (similar to `du`)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileSlurp = buildPerlPackage {
+    pname = "File-Slurp";
+    version = "9999.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CAPOEIRAB/File-Slurp-9999.32.tar.gz";
+      sha256 = "1c655gxs0pjm5yd50rcx4rbq1lr77p4a6x6xg4xbwhlx5acj2g2c";
+    };
+    meta = {
+      description = "Simple and Efficient Reading/Writing/Modifying of Complete Files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileSlurper = buildPerlPackage {
+    pname = "File-Slurper";
+    version = "0.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/File-Slurper-0.012.tar.gz";
+      sha256 = "4efb2ea416b110a1bda6f8133549cc6ea3676402e3caf7529fce0313250aa578";
+    };
+    buildInputs = [ TestWarnings ];
+    meta = {
+      description = "A simple, sane and efficient module to slurp a file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileSlurpTiny = buildPerlPackage {
+    pname = "File-Slurp-Tiny";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/File-Slurp-Tiny-0.004.tar.gz";
+      sha256 = "452995beeabf0e923e65fdc627a725dbb12c9e10c00d8018c16d10ba62757f1e";
+    };
+    meta = {
+      description = "A simple, sane and efficient file slurper [DISCOURAGED]";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileTail = buildPerlPackage {
+    pname = "File-Tail";
+    version = "1.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MG/MGRABNAR/File-Tail-1.3.tar.gz";
+      sha256 = "1ixg6kn4h330xfw3xgvqcbzfc3v2wlzjim9803jflhvfhf0rzl16";
+    };
+    meta = {
+      description = "Perl extension for reading from continously updated files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  FileTouch = buildPerlPackage {
+    pname = "File-Touch";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/File-Touch-0.11.tar.gz";
+      sha256 = "e379a5ff89420cf39906e5ceff309b8ce958f99f9c3e57ad52b5002a3982d93c";
+    };
+    meta = {
+      homepage = "https://github.com/neilb/File-Touch";
+      description = "Update file access and modification times, optionally creating files if needed";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  FileType = buildPerlModule {
+    pname = "File-Type";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMISON/File-Type-0.22.tar.gz";
+      sha256 = "0hfkaafp6wb0nw19x47wc6wc9mwlw8s2rxiii3ylvzapxxgxjp6k";
+    };
+    meta = {
+      description = "File::Type uses magic numbers (typically at the start of a file) to determine the MIME type of that file.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileUtil = buildPerlModule {
+    pname = "File-Util";
+    version = "4.201720";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOMMY/File-Util-4.201720.tar.gz";
+      sha256 = "d4491021850d5c5cbd702c7e4744858079841d2fa93f1c2d09ddc9a7863608df";
+    };
+    buildInputs = [ TestNoWarnings ];
+    meta = {
+      homepage = "https://github.com/tommybutler/file-util/wiki";
+      description = "Easy, versatile, portable file handling";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileUtilTempdir = buildPerlPackage {
+    pname = "File-Util-Tempdir";
+    version = "0.034";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLANCAR/File-Util-Tempdir-0.034.tar.gz";
+      sha256 = "076wdwbvqsg64wr5np8j6pnmmhs9li64g9mw2h33zbbgbv7f47fi";
+    };
+    buildInputs = [ Perlosnames TestException ];
+    meta = {
+      homepage = "https://metacpan.org/release/File-Util-Tempdir";
+      description = "Cross-platform way to get system-wide & user private temporary directory";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  FileWhich = buildPerlPackage {
+    pname = "File-Which";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/File-Which-1.23.tar.gz";
+      sha256 = "b79dc2244b2d97b6f27167fc3b7799ef61a179040f3abd76ce1e0a3b0bc4e078";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/File-Which";
+      description = "Perl implementation of the which utility as an API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FileZglob = buildPerlPackage {
+     pname = "File-Zglob";
+     version = "0.11";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/File-Zglob-0.11.tar.gz";
+       sha256 = "16v61rn0yimpv5kp6b20z2f1c93n5kpsyjvr0gq4w2dc43gfvc8w";
+     };
+     meta = {
+       description = "Extended globs.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  Filter = buildPerlPackage {
+    pname = "Filter";
+    version = "1.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Filter-1.60.tar.gz";
+      sha256 = "e11ef2f2ee8727b7f666fd249a3226f768e6eadfd51d9cdb49b3c3f1a35464f9";
+    };
+    meta = {
+      description = "Source Filters";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FinanceQuote = buildPerlPackage {
+    pname = "Finance-Quote";
+    version = "1.49";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EC/ECOCODE/Finance-Quote-1.49.tar.gz";
+      sha256 = "0lxz9fsm4ld3l900zxh2w91wjygk0ifn4miw6q5k4mm67d2c9nwm";
+    };
+    propagatedBuildInputs = [ CGI DateTimeFormatStrptime HTMLTableExtract JSON JSONParse LWPProtocolHttps StringUtil TextTemplate ];
+    meta = with lib; {
+      homepage = "http://finance-quote.sourceforge.net/";
+      description = "Get stock and mutual fund quotes from various exchanges";
+      license = licenses.gpl2;
+    };
+    buildInputs = [ TestPod ];
+  };
+
+  FindLib = buildPerlPackage {
+    pname = "Find-Lib";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YANNK/Find-Lib-1.04.tar.gz";
+      sha256 = "0lg88v0sqfpq4d3jwvk6c9blqnpxbz8f4s22zr3b1qb160g94wqx";
+    };
+    meta = with lib; {
+      description = "Helper to smartly find libs to use in the filesystem tree";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FontAFM = buildPerlPackage {
+    pname = "Font-AFM";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/Font-AFM-1.20.tar.gz";
+      sha256 = "32671166da32596a0f6baacd0c1233825a60acaf25805d79c81a3f18d6088bc1";
+    };
+  };
+
+  FontTTF = buildPerlPackage {
+    pname = "Font-TTF";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BH/BHALLISSY/Font-TTF-1.06.tar.gz";
+      sha256 = "4b697d444259759ea02d2c442c9bffe5ffe14c9214084a01f743693a944cc293";
+    };
+    meta = {
+      description = "TTF font support for Perl";
+      license = lib.licenses.artistic2;
+    };
+    buildInputs = [ IOString ];
+  };
+
+  ForksSuper = buildPerlPackage {
+    pname = "Forks-Super";
+    version = "0.97";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MOB/Forks-Super-0.97.tar.gz";
+      sha256 = "0kias11b4zchxy5x9ns2wwjzvzxlzsbap8sq587z9micw5bl7nrk";
+    };
+    doCheck = false;
+    meta = {
+      description = "Extensions and convenience methods to manage background processes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ URI ];
+  };
+
+  FormValidatorSimple = buildPerlPackage {
+    pname = "FormValidator-Simple";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LY/LYOKATO/FormValidator-Simple-0.29.tar.gz";
+      sha256 = "fc3a63dc54b962d74586070176adaf5be869f09b561bb30f5fd32ef531792666";
+    };
+    propagatedBuildInputs = [ ClassAccessor ClassDataAccessor DateCalc DateTimeFormatStrptime EmailValidLoose ListMoreUtils TieIxHash UNIVERSALrequire YAML ];
+    meta = {
+      description = "Validation with simple chains of constraints";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ CGI ];
+  };
+
+  FreezeThaw = buildPerlPackage {
+    pname = "FreezeThaw";
+    version = "0.5001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILYAZ/modules/FreezeThaw-0.5001.tar.gz";
+      sha256 = "0h8gakd6b9770n2xhld1hhqghdar3hrq2js4mgiwxy86j4r0hpiw";
+    };
+    doCheck = false;
+  };
+
+  FunctionParameters = buildPerlPackage {
+    pname = "Function-Parameters";
+    version = "2.001003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAUKE/Function-Parameters-2.001003.tar.gz";
+      sha256 = "eaa22c6b43c02499ec7db0758c2dd218a3b2ab47a714b2bdf8010b5ee113c242";
+    };
+    buildInputs = [ DirSelf TestFatal ];
+    meta = {
+      description = "Define functions and methods with parameter lists (\"subroutine signatures\")";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Furl = buildPerlModule {
+    pname = "Furl";
+    version = "3.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Furl-3.13.tar.gz";
+      sha256 = "1wxa2v9yjzvnzp62p1jvcx8x61z5qvlvzyah853vvaywpjxwyyl8";
+    };
+    propagatedBuildInputs = [ ClassAccessorLite HTTPParserXS MozillaCA ];
+    buildInputs = [ HTTPCookieJar HTTPProxy ModuleBuildTiny Plack Starlet TestFakeHTTPD TestRequires TestSharedFork TestTCP TestValgrind URI ];
+    meta = {
+      description = "Lightning-fast URL fetcher";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Future = buildPerlModule {
+    pname = "Future";
+    version = "0.47";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Future-0.47.tar.gz";
+      sha256 = "1pmhkhrmvaf8c3jbrfqqhmxjrzcsxdn2q7apj033gwxggland88h";
+    };
+    buildInputs = [ TestFatal TestIdentity TestRefcount ];
+    meta = {
+      description = "represent an operation awaiting completion";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  FutureAsyncAwait = buildPerlModule rec {
+    pname = "Future-AsyncAwait";
+    version = "0.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Future-AsyncAwait-${version}.tar.gz";
+      sha256 = "0dwij2r51vij91hx808zc2l5q38h55jahzrh73h4rn816jv597yx";
+    };
+    buildInputs = [ TestRefcount ];
+    propagatedBuildInputs = [ Future XSParseKeyword XSParseSublike ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "Deferred subroutine syntax for futures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  GamesSolitaireVerify = buildPerlModule {
+    pname = "Games-Solitaire-Verify";
+    version = "0.2403";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Games-Solitaire-Verify-0.2403.tar.gz";
+      sha256 = "e5ab475c82ba1cb088ad28f423ca514d46944d6ae3c3eb55e9636e9e7f1dc893";
+    };
+    buildInputs = [ DirManifest TestDifferences ];
+    propagatedBuildInputs = [ ClassXSAccessor ExceptionClass PathTiny ];
+    meta = {
+      description = "Verify solutions for solitaire games";
+      license = lib.licenses.mit;
+    };
+  };
+
+  GD = buildPerlPackage {
+    pname = "GD";
+    version = "2.73";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/GD-2.73.tar.gz";
+      sha256 = "0arjpa8id6k5yjxfq0j2hsinhhjzjch5lwk6gscf48l54drrw729";
+    };
+
+    buildInputs = [ pkgs.gd pkgs.libjpeg pkgs.zlib pkgs.freetype pkgs.libpng pkgs.fontconfig pkgs.xorg.libXpm ExtUtilsPkgConfig TestFork ];
+
+    # otherwise "cc1: error: -Wformat-security ignored without -Wformat [-Werror=format-security]"
+    hardeningDisable = [ "format" ];
+
+    makeMakerFlags = "--lib_png_path=${pkgs.libpng.out} --lib_jpeg_path=${pkgs.libjpeg.out} --lib_zlib_path=${pkgs.zlib.out} --lib_ft_path=${pkgs.freetype.out} --lib_fontconfig_path=${pkgs.fontconfig.lib} --lib_xpm_path=${pkgs.xorg.libXpm.out}";
+  };
+
+  GDGraph = buildPerlPackage {
+    pname = "GDGraph";
+    version = "1.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RUZ/GDGraph-1.54.tar.gz";
+      sha256 = "0kzsdc07ycxjainmz0dnsclb15w2j1y7g8b5mcb7vhannq85qvxr";
+    };
+    propagatedBuildInputs = [ GDText ];
+    buildInputs = [ CaptureTiny TestException ];
+    meta = {
+      description = "Graph Plotting Module for Perl 5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GDSecurityImage = buildPerlPackage {
+    pname = "GD-SecurityImage";
+    version = "1.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BU/BURAK/GD-SecurityImage-1.75.tar.gz";
+      sha256 = "19lf1kzdavrkkx3f900jnpynr55d5kjd2sdmwpfir5dsmkcj9pix";
+    };
+    propagatedBuildInputs = [ GD ];
+    meta = {
+      description = "Security image (captcha) generator";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GDText = buildPerlPackage {
+    pname = "GDTextUtil";
+    version = "0.86";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MV/MVERB/GDTextUtil-0.86.tar.gz";
+      sha256 = "1g0nc7fz4d672ag7brlrrcz7ibm98x49qs75bq9z957ybkwcnvl8";
+    };
+    propagatedBuildInputs = [ GD ];
+    meta = {
+      description = "Text utilities for use with GD";
+    };
+  };
+
+  GeoIP = buildPerlPackage {
+    pname = "Geo-IP";
+    version = "1.51";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/Geo-IP-1.51.tar.gz";
+      sha256 = "1fka8fr7fw6sh3xa9glhs1zjg3s2gfkhi7n7da1l2m2wblqj0c0n";
+    };
+    makeMakerFlags = "LIBS=-L${pkgs.geoip}/lib INC=-I${pkgs.geoip}/include";
+    doCheck = false; # seems to access the network
+  };
+
+  GeoIP2 = buildPerlPackage {
+    pname = "GeoIP2";
+    version = "2.006002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/GeoIP2-2.006002.tar.gz";
+      sha256 = "0d4qq0k0pd0xd83iykr0jkyizl499ii6ajwwwl93rgg9xsl44189";
+    };
+    propagatedBuildInputs = [ JSONMaybeXS LWPProtocolHttps MaxMindDBReader ParamsValidate Throwable ];
+    buildInputs = [ PathClass TestFatal TestNumberDelta ];
+    meta = {
+      description = "Perl API for MaxMind's GeoIP2 web services and databases";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GetoptArgvFile = buildPerlPackage {
+    pname = "Getopt-ArgvFile";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JS/JSTENZEL/Getopt-ArgvFile-1.11.tar.gz";
+      sha256 = "3709aa513ce6fd71d1a55a02e34d2f090017d5350a9bd447005653c9b0835b22";
+    };
+    meta = {
+      license = lib.licenses.artistic1;
+      maintainers = [ maintainers.pSub ];
+    };
+  };
+
+  GetoptLong = buildPerlPackage {
+    pname = "Getopt-Long";
+    version = "2.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/Getopt-Long-2.52.tar.gz";
+      sha256 = "1yh5fykxrw68pvdvhvjh3wfs7a1s29xqwm5fxw2mqg9mfg1sgiwx";
+    };
+  };
+
+  GetoptLongDescriptive = buildPerlPackage {
+    pname = "Getopt-Long-Descriptive";
+    version = "0.105";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Getopt-Long-Descriptive-0.105.tar.gz";
+      sha256 = "a71cdbcf4043588b26a42a13d151c243f6eccf38e8fc0b18ffb5b53651ab8c15";
+    };
+    buildInputs = [ CPANMetaCheck TestFatal TestWarnings ];
+    propagatedBuildInputs = [ ParamsValidate SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/Getopt-Long-Descriptive";
+      description = "Getopt::Long, but simpler and more powerful";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GetoptTabular = buildPerlPackage {
+    pname = "Getopt-Tabular";
+    version = "0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GW/GWARD/Getopt-Tabular-0.3.tar.gz";
+      sha256 = "0xskl9lcj07sdfx5dkma5wvhhgf5xlsq0khgh8kk34dm6dv0dpwv";
+    };
+  };
+
+  Git = buildPerlPackage {
+    pname = "Git";
+    version = "0.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSOUTH/Git-0.42.tar.gz";
+      sha256 = "9469a9f398f3a2bf2b0500566ee41d3ff6fae460412a137185767a1cc4783a6d";
+    };
+    propagatedBuildInputs = [ Error ];
+    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 = lib.licenses.free;
+    };
+  };
+
+  GitAutofixup = buildPerlPackage rec {
+    pname = "App-Git-Autofixup";
+    version = "0.003001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TORBIAK/App-Git-Autofixup-0.003001.tar.gz";
+      sha256 = "1q7im0zj238k5agwi7d1mz26a8r0wrxwfwp1l8n5k777gx3b5xhp";
+    };
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/git-autofixup
+    '';
+    meta = {
+      maintainers = [ maintainers.DamienCassou ];
+      description = "Create fixup commits for topic branches";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  GitPurePerl = buildPerlPackage {
+    pname = "Git-PurePerl";
+    version = "0.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BROQ/Git-PurePerl-0.53.tar.gz";
+      sha256 = "987c74366cc4c37ee084050f985fa254359c89c12507f5b8bfc6607de538d5a8";
+    };
+    buildInputs = [ Testutf8 ];
+    propagatedBuildInputs = [ ArchiveExtract ConfigGitLike DataStreamBulk DateTime FileFindRule IODigest MooseXStrictConstructor MooseXTypesPathClass ];
+    doCheck = false;
+    meta = {
+      description = "A Pure Perl interface to Git repositories";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GitRepository = buildPerlPackage {
+    pname = "Git-Repository";
+    version = "1.324";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/Git-Repository-1.324.tar.gz";
+      sha256 = "814dfad104a9546349f9e0fd492c86137de827ebc284017a91a5267c120ad4f6";
+    };
+    buildInputs = [ TestRequiresGit ];
+    propagatedBuildInputs = [ GitVersionCompare SystemCommand namespaceclean ];
+    meta = {
+      description = "Perl interface to Git repositories";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GitVersionCompare = buildPerlPackage {
+    pname = "Git-Version-Compare";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/Git-Version-Compare-1.004.tar.gz";
+      sha256 = "63e8264ed351cb2371b47852a72366214164b5f3fad9dbd68309c7fc63d06491";
+    };
+    buildInputs = [ TestNoWarnings ];
+    meta = {
+      description = "Functions to compare Git versions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Glib = buildPerlPackage {
+    pname = "Glib";
+    version = "1.3293";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Glib-1.3293.tar.gz";
+      sha256 = "005m3inz12xcsd5sr056cm1kbhmxsx2ly88ifbdv6p6cwz0s05kk";
+    };
+    buildInputs = [ pkgs.glib ];
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net/";
+      description = "Perl wrappers for the GLib utility and Object libraries";
+      license = lib.licenses.lgpl21Plus;
+    };
+    propagatedBuildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig ];
+  };
+
+  GlibObjectIntrospection = buildPerlPackage {
+    pname = "Glib-Object-Introspection";
+    version = "0.049";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Glib-Object-Introspection-0.049.tar.gz";
+      sha256 = "0mxg6pz8qfyipw0ypr54alij0c4adzg94f62702b2a6hkp5jhij6";
+    };
+    checkInputs = [ pkgs.cairo CairoGObject ];
+    propagatedBuildInputs = [ pkgs.gobject-introspection Glib ];
+    preCheck = ''
+      # Our gobject-introspection patches make the shared library paths absolute
+      # in the GIR files. When running tests, the library is not yet installed,
+      # though, so we need to replace the absolute path with a local one during build.
+      # We are using a symlink that we will delete after the execution of the tests.
+      mkdir -p $out/lib
+      ln -s $PWD/build/*.so $out/lib/
+    '';
+    postCheck = ''
+      rm -r $out/lib
+    '';
+    meta = {
+      description = "Dynamically create Perl language bindings";
+      license = lib.licenses.lgpl2Plus;
+    };
+  };
+
+  Gnome2 = buildPerlPackage {
+    pname = "Gnome2";
+    version = "1.047";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Gnome2-1.047.tar.gz";
+      sha256 = "ccc85c5dc3c14f915ed1a186d238681d83fef3d17eed1c20001499ff56b6390c";
+    };
+    buildInputs = [ ExtUtilsDepends ExtUtilsPkgConfig Glib Gnome2Canvas Gnome2VFS Gtk2 ];
+    propagatedBuildInputs = [ pkgs.gnome2.libgnomeui ];
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net";
+      description = "Perl interface to the 2.x series of the GNOME libraries";
+      license = lib.licenses.lgpl21Plus;
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.Gnome2Canvas.x86_64-darwin
+    };
+  };
+
+  Gnome2Canvas = buildPerlPackage {
+    pname = "Gnome2-Canvas";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Gnome2-Canvas-1.004.tar.gz";
+      sha256 = "0g42bfmqq5395m55np95pfj4i1qbrmx2ml4zhi4cw4sx4fdv7drr";
+    };
+    buildInputs = [ pkgs.gnome2.libgnomecanvas ];
+    meta = {
+      license = lib.licenses.lgpl2Plus;
+    };
+    propagatedBuildInputs = [ Gtk2 ];
+  };
+
+  Gnome2VFS = buildPerlPackage {
+    pname = "Gnome2-VFS";
+    version = "1.083";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Gnome2-VFS-1.083.tar.gz";
+      sha256 = "eca974669df4e7f21b4fcedb96c8a328422369c68b8c2cd99b9ce9cc5d7a7979";
+    };
+    propagatedBuildInputs = [ pkgs.gnome2.gnome_vfs Glib ];
+    meta = {
+      description = "Perl interface to the 2.x series of the GNOME VFS library";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  Gnome2Wnck = buildPerlPackage {
+    pname = "Gnome2-Wnck";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TS/TSCH/Gnome2-Wnck-0.16.tar.gz";
+      sha256 = "604a8ece88ac29f132d59b0caac27657ec31371c1606a4698a2160e88ac586e5";
+    };
+    buildInputs = [ pkgs.libwnck2 pkgs.glib pkgs.gtk2 ];
+    propagatedBuildInputs = [ Gtk2 ];
+    meta = {
+      description = "Perl interface to the Window Navigator Construction Kit";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  GnuPG = buildPerlPackage {
+    pname = "GnuPG";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YANICK/GnuPG-0.19.tar.gz";
+      sha256 = "af53f2d3f63297e046676eae14a76296afdd2910e09723b6b113708622b7989b";
+    };
+    buildInputs = [ pkgs.gnupg1orig ];
+    doCheck = false;
+  };
+
+  GnuPGInterface = buildPerlPackage {
+    pname = "GnuPG-Interface";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JESSE/GnuPG-Interface-1.00.tar.gz";
+      sha256 = "97e9c809491a061b2e99fb4e50c7bf74eb42e1deb11c64b081b21b4dbe6aec2f";
+    };
+    buildInputs = [ pkgs.which pkgs.gnupg1compat ];
+    propagatedBuildInputs = [ MooXHandlesVia MooXlate ];
+    doCheck = false;
+    meta = {
+      description = "Supply object methods for interacting with GnuPG";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GoferTransporthttp = buildPerlPackage {
+    pname = "GoferTransport-http";
+    version = "1.017";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TIMB/GoferTransport-http-1.017.tar.gz";
+      sha256 = "f73effe3ea7afa1907ce8977c87387abb0d4404f85a724ae2637b29a73154a9b";
+    };
+    propagatedBuildInputs = [ DBI LWP mod_perl2 ];
+    doCheck = false; # no make target 'test'
+    meta = {
+      description = "HTTP transport for DBI stateless proxy driver DBD::Gofer";
+    };
+  };
+
+  GooCanvas = buildPerlPackage {
+    pname = "Goo-Canvas";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YE/YEWENBIN/Goo-Canvas-0.06.tar.gz";
+      sha256 = "0c588c507eed5e62d12ed1cc1e491c6ff3a1f59c4fb3d435e14214b37ab39251";
+    };
+    propagatedBuildInputs = [ pkgs.goocanvas pkgs.gtk2 Gtk2 ];
+    meta = {
+      description = "Perl interface to the GooCanvas";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GooCanvas2 = buildPerlPackage {
+    pname = "GooCanvas2";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLMAX/GooCanvas2-0.06.tar.gz";
+      sha256 = "0l1vsvyv9hjxhsxrahq4h64axh7qmk50kiz2spa3s1hr7s3qfk72";
+    };
+    buildInputs = [ pkgs.gtk3 ];
+    propagatedBuildInputs = [ pkgs.goocanvas2 Gtk3 ];
+    meta = {
+      description = "Perl binding for GooCanvas2 widget using Glib::Object::Introspection";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GooCanvas2CairoTypes = buildPerlPackage rec {
+    pname = "GooCanvas2-CairoTypes";
+    version = "0.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AS/ASOKOLOV/GooCanvas2-CairoTypes-${version}.tar.gz";
+      sha256 = "sha256-uoBnNuvMnePYFBp2Omgr3quxy4cCveKZrf1XSs6HUFI=";
+    };
+    propagatedBuildInputs = [ pkgs.goocanvas2 Gtk3 ];
+    meta = {
+      description = "Bridge between GooCanvas2 and Cairo types";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GoogleProtocolBuffers = buildPerlPackage {
+    pname = "Google-ProtocolBuffers";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAXJAZMAN/protobuf/Google-ProtocolBuffers-0.12.tar.gz";
+      sha256 = "0wad56n12h9yhnrq1m1z3jna1ch3mg3mqj41wkfi49ws1g34k15k";
+    };
+    propagatedBuildInputs = [ ClassAccessor ParseRecDescent ];
+    patches =
+      [ ../development/perl-modules/Google-ProtocolBuffers-multiline-comments.patch ];
+    meta = {
+      description = "Simple interface to Google Protocol Buffers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  gotofile = buildPerlPackage {
+    pname = "goto-file";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/goto-file-0.005.tar.gz";
+      sha256 = "c6cdd5ee4a6cdcbdbf314d92a4f9985dbcdf9e4258048cae76125c052aa31f77";
+    };
+    buildInputs = [ Test2Suite ];
+    meta = {
+      description = "Stop parsing the current file and move on to a different one";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Graph = buildPerlPackage {
+    pname = "Graph";
+    version = "0.9722";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/Graph-0.9722.tar.gz";
+      sha256 = "c113633833f3a1bef8fa8eb96680be36d00e41ef404bddd7fc0bb98703e28d4d";
+    };
+    propagatedBuildInputs = [ HeapFibonacci SetObject ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GraphicsColor = buildPerlPackage {
+    pname = "Graphics-Color";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GP/GPHAT/Graphics-Color-0.31.tar.gz";
+      sha256 = "faa8fed5b2d80e5160af976e5db2242c0b3555542ce1042575ff6b694587a33d";
+    };
+    buildInputs = [ TestNumberDelta ModulePluggable ];
+    propagatedBuildInputs = [ ColorLibrary Moose MooseXAliases MooseXClone MooseXStorage MooseXTypes ];
+    meta = {
+      homepage = "https://github.com/gphat/graphics-color";
+      description = "Device and library agnostic color spaces";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GraphicsTIFF = buildPerlPackage {
+    pname = "Graphics-TIFF";
+    version = "16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RATCLIFFE/Graphics-TIFF-9.tar.gz";
+      sha256 = "Kv0JTCBGnvp8+cMmDjzuqd4Qw9r+BjOo0eJC405OOdg=";
+    };
+    buildInputs = [ pkgs.libtiff ExtUtilsDepends ExtUtilsPkgConfig ];
+    propagatedBuildInputs = [ Readonly ];
+    checkInputs = [ TestRequires TestDeep pkgs.hexdump ];
+    meta = {
+      description = "Perl extension for the libtiff library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  GraphViz = buildPerlPackage {
+    pname = "GraphViz";
+    version = "2.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/GraphViz-2.24.tgz";
+      sha256 = "1bgm4a8kan53r30qiknr4kasvhar1khf7vq064l1inzfrp2glpnr";
+    };
+
+    # XXX: It'd be nicer it `GraphViz.pm' could record the path to graphviz.
+    buildInputs = [ pkgs.graphviz TestPod ];
+    propagatedBuildInputs = [ FileWhich IPCRun ParseRecDescent XMLTwig XMLXPath ];
+
+    meta = with lib; {
+      description = "Perl interface to the GraphViz graphing tool";
+      license = licenses.artistic2;
+    };
+  };
+
+  grepmail = buildPerlPackage {
+    pname = "grepmail";
+    version = "5.3111";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCOPPIT/grepmail-5.3111.tar.gz";
+      sha256 = "d0984e3f7a1be17ae014575f70c1678151a5bcc9622185dc5a052cb63271a761";
+    };
+    buildInputs = [ FileHomeDir FileSlurper TestCompile UNIVERSALrequire URI ];
+    propagatedBuildInputs = [ MailMboxMessageParser TimeDate ];
+    outputs = [ "out" ];
+    meta = {
+      homepage = "https://github.com/coppit/grepmail";
+      description = "Search mailboxes for mail matching a regular expression";
+      license = lib.licenses.gpl2;
+      maintainers = with maintainers; [ romildo ];
+    };
+  };
+
+  GrowlGNTP = buildPerlModule {
+    pname = "Growl-GNTP";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATTN/Growl-GNTP-0.21.tar.gz";
+      sha256 = "0gq8ypam6ifp8f3s2mf5d6sw53m7h3ki1zfahh2p41kl8a77yy98";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ CryptCBC DataUUID ];
+  };
+
+  GSSAPI = buildPerlPackage {
+    pname = "GSSAPI";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGROLMS/GSSAPI-0.28.tar.gz";
+      sha256 = "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx";
+    };
+    propagatedBuildInputs = [ pkgs.krb5Full.dev ];
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "Perl extension providing access to the GSSAPIv2 library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    makeMakerFlags = "--gssapiimpl ${pkgs.krb5Full.dev}";
+  };
+
+  Gtk2 = buildPerlPackage {
+    pname = "Gtk2";
+    version = "1.24993";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-1.24993.tar.gz";
+      sha256 = "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29";
+    };
+    buildInputs = [ pkgs.gtk2 ];
+    # https://rt.cpan.org/Public/Bug/Display.html?id=130742
+    # doCheck = !stdenv.isDarwin;
+    doCheck = false;
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net/";
+      description = "Perl interface to the 2.x series of the Gimp Toolkit library";
+      license = lib.licenses.lgpl21Plus;
+    };
+    propagatedBuildInputs = [ Pango ];
+  };
+
+  Gtk2TrayIcon = buildPerlPackage {
+    pname = "Gtk2-TrayIcon";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BORUP/Gtk2-TrayIcon-0.06.tar.gz";
+      sha256 = "cbb7632b75d7f41554dfe8ee9063dbfd1d8522291077c65d0d82e9ceb5e94ae2";
+    };
+    propagatedBuildInputs = [ pkgs.gtk2 Gtk2 ];
+    meta = {
+      license = lib.licenses.gpl2;
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.Gtk2TrayIcon.x86_64-darwin
+    };
+  };
+
+  Gtk2AppIndicator = buildPerlPackage {
+    pname = "Gtk2-AppIndicator";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OE/OESTERHOL/Gtk2-AppIndicator-0.15.tar.gz";
+      sha256 = "a25cb071e214fb89b4450aa4605031eae89b7961e149b0d6e8f491c19c14a90a";
+    };
+    propagatedBuildInputs = [ pkgs.libappindicator-gtk2 pkgs.libdbusmenu-gtk2 pkgs.gtk2 pkgs.pkg-config Gtk2 ];
+    # Tests fail due to no display:
+    #   Gtk-WARNING **: cannot open display:  at /nix/store/HASH-perl-Gtk2-1.2498/lib/perl5/site_perl/5.22.2/x86_64-linux-thread-multi/Gtk2.pm line 126.
+    doCheck = false;
+    meta = {
+      description = "Perl extension for libappindicator";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  Gtk2ImageView = buildPerlPackage {
+    pname = "Gtk2-ImageView";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RATCLIFFE/Gtk2-ImageView-0.05.tar.gz";
+      sha256 = "087186c3693acf196451cf59cc8b7f5cf9a7b05abe20d32dcbcba0822953fb80";
+    };
+    buildInputs = [ pkgs.gtkimageview pkgs.gtk2 ];
+    propagatedBuildInputs = [ Gtk2 ];
+    # Tests fail due to no display server:
+    #   Gtk-WARNING **: cannot open display:  at /nix/store/HASH-perl-Gtk2-1.2498/lib/perl5/site_perl/5.22.2/x86_64-linux-thread-multi/Gtk2.pm line 126.
+    #   t/animview.t ...........
+    doCheck = false;
+    meta = {
+      description = "Perl bindings for the GtkImageView widget";
+      license = lib.licenses.free;
+    };
+  };
+
+  Gtk2Unique = buildPerlPackage {
+    pname = "Gtk2-Unique";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PO/POTYL/Gtk2-Unique-0.05.tar.gz";
+      sha256 = "ae8dfb0f6844ddaa2ce7b5b44553419490c8e83c24fd35c431406a58f6be0f4f";
+    };
+    propagatedBuildInputs = [ pkgs.libunique pkgs.gtk2 Gtk2 ];
+    meta = {
+      description = "Use single instance applications";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.Gtk2Unique.x86_64-darwin
+    };
+  };
+
+  Gtk3 = buildPerlPackage {
+    pname = "Gtk3";
+    version = "0.037";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Gtk3-0.037.tar.gz";
+      sha256 = "0l9zis8l9jall1m48mgd5g4f85lsz4hcp22spal8r9wlf9af2nmz";
+    };
+    propagatedBuildInputs = [ pkgs.gtk3 CairoGObject GlibObjectIntrospection ];
+    meta = {
+      description = "Perl interface to the 3.x series of the GTK toolkit";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  Gtk3ImageView = buildPerlPackage rec {
+    pname = "Gtk3-ImageView";
+    version = "10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AS/ASOKOLOV/Gtk3-ImageView-${version}.tar.gz";
+      sha256 = "sha256-vHfnBgaeZPK7hBgZcP1KjepG+IvsDE3XwrH9U4xoN+Y=";
+    };
+    buildInputs = [ pkgs.gtk3 ];
+    propagatedBuildInputs = [ Readonly Gtk3 ];
+    checkInputs = [ TestDifferences TestDeep ImageMagick TryTiny TestMockObject CarpAlways pkgs.librsvg ];
+    checkPhase = ''
+      ${pkgs.xvfb-run}/bin/xvfb-run -s '-screen 0 800x600x24' \
+        make test
+    '';
+    meta = {
+      description = "Image viewer widget for Gtk3";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Gtk3SimpleList = buildPerlPackage {
+    pname = "Gtk3-SimpleList";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TV/TVIGNAUD/Gtk3-SimpleList-0.21.tar.gz";
+      sha256 = "1158mnr2ldq02098hqbkwfv64d83zl3a8scll9s09g7k1c86ai0x";
+    };
+    meta = {
+      description = "A simple interface to Gtk3's complex MVC list widget";
+      license = lib.licenses.lgpl21Plus;
+    };
+    propagatedBuildInputs = [ Gtk3 ];
+  };
+
+  Guard = buildPerlPackage {
+    pname = "Guard";
+    version = "1.023";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Guard-1.023.tar.gz";
+      sha256 = "34c4ddf91fc93d1090d86da14df706d175b1610c67372c01e12ce9555d4dd1dc";
+    };
+  };
+
+  HamAPRSFAP = buildPerlPackage {
+    pname = "Ham-APRS-FAP";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HE/HESSU/Ham-APRS-FAP-1.21.tar.gz";
+      sha256 = "e01b455d46f44710dbcf21b6fa843f09358ce60eee1c4141bc74e0a204d3a020";
+    };
+    propagatedBuildInputs = [ DateCalc ];
+    meta = with lib; {
+      description = "Finnish APRS Parser (Fabulous APRS Parser)";
+      maintainers = with maintainers; [ andrew-d ];
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Hailo = buildPerlPackage {
+    pname = "Hailo";
+    version = "0.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AV/AVAR/Hailo-0.75.tar.gz";
+      sha256 = "bba99cb0cfa3ee8632dd89906c6e6fa05fe6bb367f2282e88909cefd8f9174c2";
+    };
+    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 = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postPatch = ''
+      patchShebangs bin
+    '';
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HashDiff = buildPerlPackage {
+    pname = "Hash-Diff";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOLAV/Hash-Diff-0.010.tar.gz";
+      sha256 = "1ig0l859gq00k0r9l85274r2lbvwl7wsndcy52c0m3y9isilm6mw";
+    };
+    propagatedBuildInputs = [ HashMerge ];
+
+    meta = {
+      license = with lib.licenses; [ artistic1 ];
+      description = "Return difference between two hashes as a hash";
+    };
+    buildInputs = [ TestSimple13 ];
+  };
+
+  ham = callPackage ../development/perl-modules/ham { };
+
+  HashFlatten = buildPerlPackage {
+    pname = "Hash-Flatten";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BB/BBC/Hash-Flatten-1.19.tar.gz";
+      sha256 = "162b9qgkr19f97w4pic6igyk3zd0sbnrhl3s8530fikciffw9ikh";
+    };
+    buildInputs = [ TestAssertions ];
+    propagatedBuildInputs = [ LogTrace ];
+  };
+
+  HashMerge = buildPerlPackage {
+    pname = "Hash-Merge";
+    version = "0.302";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HE/HERMES/Hash-Merge-0.302.tar.gz";
+      sha256 = "0i46agids6pk445gfck80f8z7q3pjvkp0ip1vmhqnq1rcpvj41df";
+    };
+    propagatedBuildInputs = [ CloneChoose ];
+    meta = {
+      description = "Merges arbitrarily deep hashes into a single hash";
+    };
+    buildInputs = [ Clone ClonePP ];
+  };
+
+  HashMergeSimple = buildPerlPackage {
+    pname = "Hash-Merge-Simple";
+    version = "0.051";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROKR/Hash-Merge-Simple-0.051.tar.gz";
+      sha256 = "1c56327873d2f04d5722777f044863d968910466997740d55a754071c6287b73";
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestMost TestWarn ];
+    propagatedBuildInputs = [ Clone ];
+    meta = {
+      description = "Recursively merge two or more hashes, simply";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HashMoreUtils = buildPerlPackage {
+    pname = "Hash-MoreUtils";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/Hash-MoreUtils-0.06.tar.gz";
+      sha256 = "db9a8fb867d50753c380889a5e54075651b5e08c9b3b721cb7220c0883547de8";
+    };
+    meta = {
+      description = "Provide the stuff missing in Hash::Util";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HashMultiValue = buildPerlPackage {
+    pname = "Hash-MultiValue";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz";
+      sha256 = "1x3k7h542xnigz0b8vsfiq580p5r325wi5b8mxppiqk8mbvis636";
+    };
+    meta = {
+      description = "Store multiple values per key";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HashSharedMem = buildPerlModule {
+    pname = "Hash-SharedMem";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Hash-SharedMem-0.005.tar.gz";
+      sha256 = "324776808602f7bdc44adaa937895365454029a926fa611f321c9bf6b940bb5e";
+    };
+    buildInputs = [ ScalarString ];
+    meta = {
+      description = "Efficient shared mutable hash";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.HashSharedMem.x86_64-darwin
+    };
+  };
+
+  HashStoredIterator = buildPerlModule {
+    pname = "Hash-StoredIterator";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/Hash-StoredIterator-0.008.tar.gz";
+      sha256 = "b9cbc4dcd8233e8d1d7f1481ddb79a4a5f9db7180cb3ef02b4bcbee05e65ea0c";
+    };
+    buildInputs = [ Test2Suite ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "Functions for accessing a hashes internal iterator";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HashUtilFieldHashCompat = buildPerlPackage {
+    pname = "Hash-Util-FieldHash-Compat";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Hash-Util-FieldHash-Compat-0.11.tar.gz";
+      sha256 = "06vlygjyk7rkkw0di3252mma141w801qn3xk40aa2yskbfklcbk4";
+    };
+  };
+
+  HeapFibonacci = buildPerlPackage {
+    pname = "Heap";
+    version = "0.80";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMM/Heap-0.80.tar.gz";
+      sha256 = "1plv2djbyhvkdcw2ic54rdqb745cwksxckgzvw7ssxiir7rjknnc";
+    };
+  };
+
+  HookLexWrap = buildPerlPackage {
+    pname = "Hook-LexWrap";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Hook-LexWrap-0.26.tar.gz";
+      sha256 = "b60bdc5f98f94f9294b06adef82b1d996da192d5f183f9f434b610fd1137ec2d";
+    };
+    buildInputs = [ pkgs.unzip ];
+    meta = {
+      homepage = "https://github.com/chorny/Hook-LexWrap";
+      description = "Lexically scoped subroutine wrappers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLClean = buildPerlPackage {
+    pname = "HTML-Clean";
+    version = "1.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AZ/AZJADFTRE/HTML-Clean-1.4.tar.gz";
+      sha256 = "01l7g2hr0kjbh1wk7cv03ijmpjlbm1vm661m99mkrz2ilyyllzd6";
+    };
+    meta = {
+      description = "Cleans up HTML code for web browsers, not humans";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLElementExtended = buildPerlPackage {
+    pname = "HTML-Element-Extended";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSISK/HTML-Element-Extended-1.18.tar.gz";
+      sha256 = "f3ef1af108f27fef15ebec66479f251ce08aa49bd00b0462c9c80c86b4b6b32b";
+    };
+    propagatedBuildInputs = [ HTMLTree ];
+  };
+
+  HTMLEscape = buildPerlModule {
+    pname = "HTML-Escape";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/HTML-Escape-1.10.tar.gz";
+      sha256 = "b1cbac4157ad8dedac6914e1628855e05b8dc885a4007d2e4df8177c6a9b70fb";
+    };
+    buildInputs = [ ModuleBuildPluggablePPPort TestRequires ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.HTMLEscape.x86_64-darwin
+    };
+  };
+
+  HTMLFromANSI = buildPerlPackage {
+    pname = "HTML-FromANSI";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NU/NUFFIN/HTML-FromANSI-2.03.tar.gz";
+      sha256 = "21776345ed701b2c04c7b09380af943f9984cc7f99624087aea45db5fc09c359";
+    };
+    propagatedBuildInputs = [ HTMLParser TermVT102Boundless ];
+    meta = {
+    };
+  };
+
+  HTMLForm = buildPerlPackage {
+    pname = "HTML-Form";
+    version = "6.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/HTML-Form-6.07.tar.gz";
+      sha256 = "09v29cdzwjm139c67y1np3kvx2ymg3s8n723qc0ma07lmxz8rakx";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    meta = {
+      description = "Class that represents an HTML form element";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLFormatter = buildPerlPackage {
+    pname = "HTML-Formatter";
+    version = "2.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Formatter-2.16.tar.gz";
+      sha256 = "cb0a0dd8aa5e8ba9ca214ce451bf4df33aa09c13e907e8d3082ddafeb30151cc";
+    };
+    buildInputs = [ FileSlurper TestWarnings ];
+    propagatedBuildInputs = [ FontAFM HTMLTree ];
+    meta = {
+      description = "Base class for HTML formatters";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLFormatExternal = buildPerlPackage {
+    pname = "HTML-FormatExternal";
+    version = "26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/HTML-FormatExternal-26.tar.gz";
+      sha256 = "3c59f233d0b10686a85aed0c994011cec68626da0128dea90b5c4fdc1746cfc3";
+    };
+    propagatedBuildInputs = [ IPCRun URI constant-defer ];
+    meta = {
+      homepage = "http://user42.tuxfamily.org/html-formatexternal/index.html";
+      description = "HTML to text formatting using external programs";
+      license = lib.licenses.gpl3Plus;
+    };
+  };
+
+  HTMLFormatTextWithLinks = buildPerlModule {
+    pname = "HTML-FormatText-WithLinks";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/ST/STRUAN/HTML-FormatText-WithLinks-0.15.tar.gz";
+      sha256 = "7fcc1ab79eb58fb97d43e5bdd14e21791a250a204998918c62d6a171131833b1";
+    };
+    propagatedBuildInputs = [ HTMLFormatter ];
+    meta = {
+      description = "HTML to text conversion with links as footnotes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLFormatTextWithLinksAndTables = buildPerlPackage {
+    pname = "HTML-FormatText-WithLinks-AndTables";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DALEEVANS/HTML-FormatText-WithLinks-AndTables-0.07.tar.gz";
+      sha256 = "809ee2f11705706b33c54312b5c7bee674838f2beaaedaf8cb945e702aae39b6";
+    };
+    propagatedBuildInputs = [ HTMLFormatTextWithLinks ];
+    meta = {
+      description = "Converts HTML to Text with tables intact";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLFormFu = buildPerlPackage {
+    pname = "HTML-FormFu";
+    version = "2.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFRANKS/HTML-FormFu-2.07.tar.gz";
+      sha256 = "0cpbcrip95rvihc7i8dywca6lx9ws67ch1hjx6vgnm47g9zh2bsg";
+    };
+    buildInputs = [ CGI FileShareDirInstall RegexpAssemble TestException TestMemoryCycle TestRequiresInternet ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLFormFuMultiForm = buildPerlPackage {
+     pname = "HTML-FormFu-MultiForm";
+     version = "1.03";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NI/NIGELM/HTML-FormFu-MultiForm-1.03.tar.gz";
+       sha256 = "17qm94hwhn6jyhd2am4gqxq7yrlhv3jv0ayx17df95mqdgbhrw1n";
+     };
+     propagatedBuildInputs = [ CryptCBC CryptDES HTMLFormFu ];
+     meta = {
+       description = "Handle multi-page/stage forms with FormFu";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/FormFu/HTML-FormFu-MultiForm";
+     };
+  };
+
+  HTMLFormHandler = buildPerlPackage {
+    pname = "HTML-FormHandler";
+    version = "0.40068";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GS/GSHANK/HTML-FormHandler-0.40068.tar.gz";
+      sha256 = "09z8rpb3avdd8984rm6j6gd2igbzjz9rc0ycig654mqjlgfphyzb";
+    };
+    # a single test is failing on perl 5.20
+    doCheck = false;
+    buildInputs = [ FileShareDirInstall PadWalker TestDifferences TestException TestMemoryCycle TestWarn ];
+    propagatedBuildInputs = [ CryptBlowfish CryptCBC DataClone DateTimeFormatStrptime EmailValid HTMLTree JSONMaybeXS MooseXGetopt MooseXTypesCommon MooseXTypesLoadableClass aliased ];
+    meta = {
+      description = "HTML forms using Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLGumbo = buildPerlModule {
+    pname = "HTML-Gumbo";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RUZ/HTML-Gumbo-0.18.tar.gz";
+      sha256 = "bf50b61c24656cc3fc958602d80a9c7d017247af38d8dbfa0e9dec5b75425d5f";
+    };
+    propagatedBuildInputs = [ AlienLibGumbo ];
+    meta = {
+      description = "HTML5 parser based on gumbo C library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLMason = buildPerlPackage {
+    pname = "HTML-Mason";
+    version = "1.59";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/HTML-Mason-1.59.tar.gz";
+      sha256 = "95bed2a6c488370046aa314be4b592bd65a6522f8845da8b36a6aff9a8b439d0";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ CGI CacheCache ClassContainer ExceptionClass LogAny ];
+    meta = {
+      description = "High-performance, dynamic web site authoring system";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLMasonPSGIHandler = buildPerlPackage {
+    pname = "HTML-Mason-PSGIHandler";
+    version = "0.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RUZ/HTML-Mason-PSGIHandler-0.53.tar.gz";
+      sha256 = "eafd7c7655dfa8261df3446b931a283d30306877b83ac4671c49cff74ea7f00b";
+    };
+    buildInputs = [ Plack ];
+    propagatedBuildInputs = [ CGIPSGI HTMLMason ];
+    meta = {
+      description = "PSGI handler for HTML::Mason";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLParser = buildPerlPackage {
+    pname = "HTML-Parser";
+    version = "3.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CAPOEIRAB/HTML-Parser-3.75.tar.gz";
+      sha256 = "1ack2799azfciyiw3vccq126gaxrbz2927i0hm4gaynzm0jmwsxc";
+    };
+    propagatedBuildInputs = [ HTMLTagset HTTPMessage ];
+    meta = {
+      description = "HTML parser class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLTagCloud = buildPerlModule {
+    pname = "HTML-TagCloud";
+    version = "0.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBERTSD/HTML-TagCloud-0.38.tar.gz";
+      sha256 = "05bhnrwwlwd6cj3cn91zw5r99xddvy142bznid26p1pg5m3rk029";
+    };
+    meta = {
+      description = "Generate An HTML Tag Cloud";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLQuoted = buildPerlPackage {
+    pname = "HTML-Quoted";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TS/TSIBLEY/HTML-Quoted-0.04.tar.gz";
+      sha256 = "8b41f313fdc1812f02f6f6c37d58f212c84fdcf7827f7fd4b030907f39dc650c";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    meta = {
+      description = "Extract structure of quoted HTML mail message";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLRewriteAttributes = buildPerlPackage {
+    pname = "HTML-RewriteAttributes";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TS/TSIBLEY/HTML-RewriteAttributes-0.05.tar.gz";
+      sha256 = "1808ec7cdf40d2708575fe6155a88f103b17fec77973a5831c2f24c250e7a58c";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    meta = {
+      description = "Concise attribute rewriting";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLSelectorXPath = buildPerlPackage {
+    pname = "HTML-Selector-XPath";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORION/HTML-Selector-XPath-0.25.tar.gz";
+      sha256 = "1qbad8ayffpx7wj76ip05p6rh9p1lkir6qknpl76zy679ghlsp8s";
+    };
+    buildInputs = [ TestBase ];
+  };
+
+  HTMLScrubber = buildPerlPackage {
+    pname = "HTML-Scrubber";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-0.19.tar.gz";
+      sha256 = "1c9b4r9x96a8fbz2zy52fxgq7djp9dq38hiyqra92psnz1w5aa5f";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    buildInputs = [ TestDifferences TestMemoryCycle ];
+  };
+
+  HTMLStripScripts = buildPerlPackage {
+    pname = "HTML-StripScripts";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DRTECH/HTML-StripScripts-1.06.tar.gz";
+      sha256 = "222bfb7ec1fdfa465e32da3dc4abed2edc7364bbe19e8e3c513c7d585b0109ad";
+    };
+    meta = {
+      description = "Strip scripting constructs out of HTML";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLStripScriptsParser = buildPerlPackage {
+    pname = "HTML-StripScripts-Parser";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DRTECH/HTML-StripScripts-Parser-1.03.tar.gz";
+      sha256 = "478c1a4e46eb77fa7bce96ba288168f0b98c27f250e00dc6312365081aed3407";
+    };
+    propagatedBuildInputs = [ HTMLParser HTMLStripScripts ];
+    meta = {
+      description = "XSS filter using HTML::Parser";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLTableExtract = buildPerlPackage {
+    pname = "HTML-TableExtract";
+    version = "2.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSISK/HTML-TableExtract-2.15.tar.gz";
+      sha256 = "1kry9igbcjyiwpwivq5in41dmx02zfhgaqjyv9sa2g6sb2frric6";
+    };
+    preCheck = ''
+      # https://rt.cpan.org/Public/Bug/Display.html?id=121920
+      rm t/30_tree.t
+    '';
+    propagatedBuildInputs = [ HTMLElementExtended ];
+  };
+
+  HTMLTagset = buildPerlPackage {
+    pname = "HTML-Tagset";
+    version = "3.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz";
+      sha256 = "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd";
+    };
+  };
+
+  HTMLTemplate = buildPerlPackage {
+    pname = "HTML-Template";
+    version = "2.97";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAMTREGAR/HTML-Template-2.97.tar.gz";
+      sha256 = "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5";
+    };
+    propagatedBuildInputs = [ CGI ];
+    buildInputs = [ TestPod ];
+  };
+
+  HTMLTidy = buildPerlPackage {
+    pname = "HTML-Tidy";
+    version = "1.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-1.60.tar.gz";
+      sha256 = "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw";
+    };
+
+    patchPhase = ''
+      sed -i "s#/usr/include/tidyp#${pkgs.tidyp}/include/tidyp#" Makefile.PL
+      sed -i "s#/usr/lib#${pkgs.tidyp}/lib#" Makefile.PL
+    '';
+    buildInputs = [ TestException ];
+  };
+
+  HTMLTiny = buildPerlPackage {
+    pname = "HTML-Tiny";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDYA/HTML-Tiny-1.05.tar.gz";
+      sha256 = "d7cdc9d5985e2e44ceba10b756acf1e0d3a1b3ee3b516e5b54adb850fe79fda3";
+    };
+    meta = {
+      description = "Lightweight, dependency free HTML/XML generation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLTokeParserSimple = buildPerlModule {
+    pname = "HTML-TokeParser-Simple";
+    version = "3.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OV/OVID/HTML-TokeParser-Simple-3.16.tar.gz";
+      sha256 = "17aa1v62sp8ycxcicwhankmj4brs6nnfclk9z7mf1rird1f164gd";
+    };
+    propagatedBuildInputs = [ HTMLParser SubOverride ];
+  };
+
+  HTMLTree = buildPerlModule {
+    pname = "HTML-Tree";
+    version = "5.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KE/KENTNL/HTML-Tree-5.07.tar.gz";
+      sha256 = "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ HTMLParser ];
+    meta = {
+      description = "Work with HTML in a DOM-like tree structure";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLTreeBuilderXPath = buildPerlPackage {
+    pname = "HTML-TreeBuilder-XPath";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIROD/HTML-TreeBuilder-XPath-0.14.tar.gz";
+      sha256 = "1wx4i1scng20n405fp3a4vrwvvq9bvbmg977wnd5j2ja8jrbvsr5";
+    };
+    propagatedBuildInputs = [ HTMLTree XMLXPathEngine ];
+    meta = {
+      description = "Add XPath support to HTML::TreeBuilder";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTMLWidget = buildPerlPackage {
+    pname = "HTML-Widget";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFRANKS/HTML-Widget-1.11.tar.gz";
+      sha256 = "02w21rd30cza094m5xs9clzw8ayigbhg2ddzl6jycp4jam0dyhmy";
+    };
+    doCheck = false;
+    propagatedBuildInputs = [ ClassAccessorChained ClassDataAccessor DateCalc EmailValid HTMLScrubber HTMLTree ModulePluggableFast ];
+    buildInputs = [ TestNoWarnings ];
+  };
+
+  HTTPAcceptLanguage = buildPerlModule {
+    pname = "HTTP-AcceptLanguage";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YAPPO/HTTP-AcceptLanguage-0.02.tar.gz";
+      sha256 = "1bs29r72ibp0kmr3l1ypzszflpcw7z4yxxcgaijspsy99rb5yq1f";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    meta = {
+      homepage = "https://github.com/yappo/p5-HTTP-AcceptLanguage";
+      description = "Accept-Language header parser and find available language";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPBody = buildPerlPackage {
+    pname = "HTTP-Body";
+    version = "1.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GE/GETTY/HTTP-Body-1.22.tar.gz";
+      sha256 = "fc0d2c585b3bd1532d92609965d589e0c87cd380e7cca42fb9ad0a1311227297";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ HTTPMessage ];
+    meta = {
+      description = "HTTP Body Parser";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPCookieJar = buildPerlPackage {
+    pname = "HTTP-CookieJar";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/HTTP-CookieJar-0.010.tar.gz";
+      sha256 = "1l7mqsca4fmls7agzwmp6yq1x16y9jwq4114i6i75n654gl37qsn";
+    };
+    propagatedBuildInputs = [ HTTPDate ];
+    buildInputs = [ TestDeep TestRequires URI ];
+    meta = {
+      description = "A minimalist HTTP user agent cookie jar";
+      license = with lib.licenses; [ asl20 ];
+      homepage = "https://github.com/dagolden/HTTP-CookieJar";
+    };
+  };
+
+  HTTPCookies = buildPerlPackage {
+    pname = "HTTP-Cookies";
+    version = "6.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-6.09.tar.gz";
+      sha256 = "1q0z3n3bl5lg5z0bhvk3zgmw536cri7c3vwhrjcqbdx5z9x02gwh";
+    };
+    propagatedBuildInputs = [ HTTPMessage ];
+    meta = {
+      description = "HTTP cookie jars";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPDaemon = buildPerlPackage rec {
+    pname = "HTTP-Daemon";
+    version = "6.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-6.01.tar.gz";
+      sha256 = "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3";
+    };
+    propagatedBuildInputs = [ HTTPMessage ];
+    checkInputs = [ TestNeeds ];
+    meta = {
+      description = "A simple http server class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPDate = buildPerlPackage {
+    pname = "HTTP-Date";
+    version = "6.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-6.05.tar.gz";
+      sha256 = "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n";
+    };
+    meta = {
+      description = "Date conversion routines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ TimeDate ];
+  };
+
+  HTTPEntityParser = buildPerlModule {
+     pname = "HTTP-Entity-Parser";
+     version = "0.25";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/K/KA/KAZEBURO/HTTP-Entity-Parser-0.25.tar.gz";
+       sha256 = "0fpchgj6jgxmjkmljjnrpmyj9anz85rjvs2fq3c7rld3rgcd131s";
+     };
+     propagatedBuildInputs = [ HTTPMultiPartParser HashMultiValue JSONMaybeXS StreamBuffered WWWFormUrlEncoded ];
+     buildInputs = [ HTTPMessage ModuleBuildTiny ];
+     meta = {
+       description = "PSGI compliant HTTP Entity Parser";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/kazeburo/HTTP-Entity-Parser";
+     };
+  };
+
+  HTTPDAV = buildPerlPackage {
+    pname = "HTTP-DAV";
+    version = "0.49";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/COSIMO/HTTP-DAV-0.49.tar.gz";
+      sha256 = "0z4mgb8mc6l5nfsm3ihndjqgpk43q39x1kq9hryy6v8hxkwrscrk";
+    };
+    meta = {
+      description = "WebDAV client library.";
+    };
+    propagatedBuildInputs = [ XMLDOM ];
+  };
+
+  HTTPHeadersActionPack = buildPerlPackage {
+    pname = "HTTP-Headers-ActionPack";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/HTTP-Headers-ActionPack-0.09.tar.gz";
+      sha256 = "c78111ab857e48c69824903d4b6ce8293feffc6b5d670db550a767f853acc7da";
+    };
+    buildInputs = [ TestFatal TestWarnings ];
+    propagatedBuildInputs = [ HTTPDate HTTPMessage ModuleRuntime SubExporter URI ];
+    meta = {
+      description = "HTTP Action, Adventure and Excitement";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPHeaderParserXS = buildPerlPackage {
+    pname = "HTTP-HeaderParser-XS";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKSMITH/HTTP-HeaderParser-XS-0.20.tar.gz";
+      sha256 = "1vs6sw431nnlnbdy6jii9vqlz30ndlfwdpdgm8a1m6fqngzhzq59";
+    };
+    meta.broken =
+      stdenv.isi686 # loadable library and perl binaries are mismatched (got handshake key 0x7d40080, needed 0x7dc0080)
+      || stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.HTTPHeaderParserXS.x86_64-darwin
+  };
+
+  HTTPHeadersFast = buildPerlModule {
+    pname = "HTTP-Headers-Fast";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/HTTP-Headers-Fast-0.22.tar.gz";
+      sha256 = "cc431db68496dd884db4bc0c0b7112c1f4a4f1dc68c4f5a3caa757a1e7481b48";
+    };
+    buildInputs = [ ModuleBuildTiny TestRequires ];
+    propagatedBuildInputs = [ HTTPDate ];
+    meta = {
+      homepage = "https://github.com/tokuhirom/HTTP-Headers-Fast";
+      description = "Faster implementation of HTTP::Headers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPLite = buildPerlPackage {
+    pname = "HTTP-Lite";
+    version = "2.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-2.44.tar.gz";
+      sha256 = "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q";
+    };
+    buildInputs = [ CGI ];
+  };
+
+  HTTPMessage = buildPerlPackage {
+    pname = "HTTP-Message";
+    version = "6.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-6.26.tar.gz";
+      sha256 = "1q952w7r1yj4s2v2cly5zzir7v45nj4h2fbad63bphvmvrcw7rkc";
+    };
+    buildInputs = [ TryTiny ];
+    propagatedBuildInputs = [ EncodeLocale HTTPDate IOHTML LWPMediaTypes URI ];
+    meta = {
+      homepage = "https://github.com/libwww-perl/HTTP-Message";
+      description = "HTTP style message (base class)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPMultiPartParser = buildPerlPackage {
+     pname = "HTTP-MultiPartParser";
+     version = "0.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/C/CH/CHANSEN/HTTP-MultiPartParser-0.02.tar.gz";
+       sha256 = "04hbs0b1lzv2c8dqfcc9qjm5akh25fn40903is36zlalkwaxmpay";
+     };
+     buildInputs = [ TestDeep ];
+     meta = {
+       description = "HTTP MultiPart Parser";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  HTTPNegotiate = buildPerlPackage {
+    pname = "HTTP-Negotiate";
+    version = "6.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-6.01.tar.gz";
+      sha256 = "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw";
+    };
+    propagatedBuildInputs = [ HTTPMessage ];
+    meta = {
+      description = "Choose a variant to serve";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPParserXS = buildPerlPackage {
+    pname = "HTTP-Parser-XS";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/HTTP-Parser-XS-0.17.tar.gz";
+      sha256 = "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr";
+    };
+  };
+
+  HTTPProxy = buildPerlPackage {
+    pname = "HTTP-Proxy";
+    version = "0.304";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/HTTP-Proxy-0.304.tar.gz";
+      sha256 = "b05290534ec73625c21a0565fc35170890dab163843d95331c292c23f504c69d";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "A pure Perl HTTP proxy";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    # tests fail because they require network access
+    doCheck = false;
+  };
+
+  HTTPRequestAsCGI = buildPerlPackage {
+    pname = "HTTP-Request-AsCGI";
+    version = "1.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FL/FLORA/HTTP-Request-AsCGI-1.2.tar.gz";
+      sha256 = "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl";
+    };
+    propagatedBuildInputs = [ ClassAccessor HTTPMessage ];
+  };
+
+  HTTPResponseEncoding = buildPerlPackage {
+    pname = "HTTP-Response-Encoding";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANKOGAI/HTTP-Response-Encoding-0.06.tar.gz";
+      sha256 = "1am8lis8107s5npca1xgazdy5sknknzcqyhdmc220s4a4f77n5hh";
+    };
+    propagatedBuildInputs = [ HTTPMessage ];
+    meta = {
+      description = "Adds encoding() to HTTP::Response";
+    };
+    buildInputs = [ LWP ];
+  };
+
+  HTTPServerSimple = buildPerlPackage {
+    pname = "HTTP-Server-Simple";
+    version = "0.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/HTTP-Server-Simple-0.52.tar.gz";
+      sha256 = "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq";
+    };
+    doCheck = false;
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ CGI ];
+  };
+
+  HTTPServerSimpleAuthen = buildPerlPackage {
+    pname = "HTTP-Server-Simple-Authen";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Server-Simple-Authen-0.04.tar.gz";
+      sha256 = "2dddc8ab9dc8986980151e4ba836a6bbf091f45cf195be1768ebdb4a993ed59b";
+    };
+    propagatedBuildInputs = [ AuthenSimple HTTPServerSimple ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPServerSimpleMason = buildPerlPackage {
+    pname = "HTTP-Server-Simple-Mason";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JESSE/HTTP-Server-Simple-Mason-0.14.tar.gz";
+      sha256 = "b7a49d8e6e55bff0b1f0278d951685466b143243b6f9e59e071f5472ca2a025a";
+    };
+    propagatedBuildInputs = [ HTMLMason HTTPServerSimple HookLexWrap ];
+    meta = {
+      description = "A simple mason server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  HTTPServerSimplePSGI = buildPerlPackage {
+     pname = "HTTP-Server-Simple-PSGI";
+     version = "0.16";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Server-Simple-PSGI-0.16.tar.gz";
+       sha256 = "1fhx2glycd66m4l4m1gja81ixq8nh4r5g9wjhhkrffq4af2cnz2z";
+     };
+     propagatedBuildInputs = [ HTTPServerSimple ];
+     meta = {
+       description = "PSGI handler for HTTP::Server::Simple";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/HTTP-Server-Simple-PSGI";
+     };
+  };
+
+  HTTPTinyCache = buildPerlPackage {
+    pname = "HTTP-Tiny-Cache";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLANCAR/HTTP-Tiny-Cache-0.002.tar.gz";
+      sha256 = "08c6274x7fxl9r7cw1yiq21wv2mjgxw7db0wv5r80dyw377vfzbk";
+    };
+    propagatedBuildInputs = [ FileUtilTempdir Logger ];
+    meta = {
+      homepage = "https://metacpan.org/release/HTTP-Tiny-Cache";
+      description = "Cache HTTP::Tiny responses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  HTTPTinyish = buildPerlPackage {
+    pname = "HTTP-Tinyish";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-0.17.tar.gz";
+      sha256 = "47bd111e474566d733c41870e2374c81689db5e0b5a43adc48adb665d89fb067";
+    };
+    propagatedBuildInputs = [ FileWhich IPCRun3 ];
+    meta = {
+      homepage = "https://github.com/miyagawa/HTTP-Tinyish";
+      description = "HTTP::Tiny compatible HTTP client wrappers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  iCalParser = buildPerlPackage {
+    pname = "iCal-Parser";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RI/RIXED/iCal-Parser-1.21.tar.gz";
+      sha256 = "0d7939a644a8e67017ec7239d3d9604f3986bb9a4ff80be68fe7299ebfd2270c";
+    };
+    propagatedBuildInputs = [ DateTimeFormatICal FreezeThaw IOString TextvFileasData ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ImagePNGLibpng = buildPerlPackage {
+    pname = "Image-PNG-Libpng";
+    version = "0.57";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BK/BKB/Image-PNG-Libpng-0.56.tar.gz";
+      sha256 = "+vu/6/9CP3u4XvJ6MEH7YpG1AzbHpYIiSlysQzHDx9k=";
+    };
+    buildInputs = [ pkgs.libpng ];
+    meta = {
+      description = "Perl interface to the C library \"libpng\"";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.ImagePNGLibpng.x86_64-darwin
+    };
+  };
+
+  Imager = buildPerlPackage {
+    pname = "Imager";
+    version = "1.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TONYC/Imager-1.012.tar.gz";
+      sha256 = "a321c728e3277fd15de842351e69bbef0e2a5a608a31d089e5029b8381e23f21";
+    };
+    buildInputs = [ pkgs.freetype pkgs.fontconfig pkgs.libjpeg pkgs.libpng ];
+    makeMakerFlags = "--incpath ${pkgs.libjpeg.dev}/include --libpath ${pkgs.libjpeg.out}/lib --incpath ${pkgs.libpng.dev}/include --libpath ${pkgs.libpng.out}/lib";
+    meta = {
+      homepage = "http://imager.perl.org/";
+      description = "Perl extension for Generating 24 bit Images";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ImagerQRCode = buildPerlPackage {
+    pname = "Imager-QRCode";
+    version = "0.035";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KU/KURIHARA/Imager-QRCode-0.035.tar.gz";
+      sha256 = "2a848deba29eb3942c44709a6853e318acab0c468cbfedbb9baae54760032513";
+    };
+    propagatedBuildInputs = [ Imager ];
+    meta = {
+      description = "Generate QR Code with Imager using libqrencode";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  ImageInfo = buildPerlPackage {
+    pname = "Image-Info";
+    version = "1.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SREZIC/Image-Info-1.42.tar.gz";
+      sha256 = "2bca560c3f71b3c1cd63ac3a974e62f3baeb986b7ffaa026b929081b914a8f4f";
+    };
+    propagatedBuildInputs = [ IOStringy ];
+    meta = {
+      description = "Extract meta information from image files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ImageSane = buildPerlPackage {
+    pname = "Image-Sane";
+    version = "5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RATCLIFFE/Image-Sane-5.tar.gz";
+      sha256 = "229aa0e9f049efa760f3c2f6e61d9d539af43d8f764b50a6e03064b4729a35ff";
+    };
+    buildInputs = [ pkgs.sane-backends ExtUtilsDepends ExtUtilsPkgConfig TestRequires TryTiny ];
+    propagatedBuildInputs = [ ExceptionClass Readonly ];
+    meta = {
+      description = "Perl extension for the SANE (Scanner Access Now Easy) Project";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ImageScale = buildPerlPackage {
+    pname = "Image-Scale";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AG/AGRUNDMA/Image-Scale-0.14.tar.gz";
+      sha256 = "f09c5f0663b87738365ac2819e186b909abeb9ed85d83bc15ee76872c947cdf8";
+    };
+    buildInputs = [ pkgs.libpng pkgs.libjpeg TestNoWarnings ];
+    propagatedBuildInputs = [ pkgs.zlib ];
+    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 = lib.licenses.gpl2Plus;
+    };
+  };
+
+  ImageSize = buildPerlPackage {
+    pname = "Image-Size";
+    version = "3.300";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJRAY/Image-Size-3.300.tar.gz";
+      sha256 = "0sq2kwdph55h4adx50fmy86brjkkv8grsw33xrhf1k9icpwb3jak";
+    };
+    buildInputs = [ ModuleBuild ];
+    meta = {
+      description = "Read the dimensions of an image in several popular formats";
+      license = with lib.licenses; [ artistic1 lgpl21Plus ];
+    };
+  };
+
+  ImageOCRTesseract = buildPerlPackage {
+    pname = "Image-OCR-Tesseract";
+    version = "1.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEOCHARRE/Image-OCR-Tesseract-1.26.tar.gz";
+      sha256 = "98d904266a7062f09c9b46f77c4e94529e1fe99339e3f83fda1f92013f007cea";
+    };
+    nativeBuildInputs = [ pkgs.which pkgs.makeWrapper pkgs.tesseract pkgs.imagemagick ];
+    propagatedBuildInputs = [ FileFindRule FileWhich LEOCHARRECLI StringShellQuote ];
+    postPatch = ''
+      substituteInPlace lib/Image/OCR/Tesseract.pm \
+        --replace "which('tesseract')" "\"${pkgs.tesseract}/bin/tesseract\"" \
+        --replace "which('convert')" "\"${pkgs.imagemagick}/bin/convert"\"
+    '';
+    postInstall = ''
+      wrapProgram $out/bin/ocr --prefix PATH : ${lib.makeBinPath [ pkgs.tesseract pkgs.imagemagick ]}
+    '';
+    meta = {
+      description = "Read an image with tesseract ocr and get output";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IMAPClient = buildPerlPackage {
+    pname = "IMAP-Client";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CONTEB/IMAP-Client-0.13.tar.gz";
+      sha256 = "15fa4hpw2rqg2iadyz10rnv99hns78wph5qlh3257a3mbfjjyyla";
+    };
+    doCheck = false; # nondeterministic
+  };
+
+  Importer = buildPerlPackage {
+    pname = "Importer";
+    version = "0.026";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Importer-0.026.tar.gz";
+      sha256 = "e08fa84e13cb998b7a897fc8ec9c3459fcc1716aff25cc343e36ef875891b0ef";
+    };
+    meta = {
+      description = "Alternative but compatible interface to modules that export symbols";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ImportInto = buildPerlPackage {
+    pname = "Import-Into";
+    version = "1.002005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Import-Into-1.002005.tar.gz";
+      sha256 = "0rq5kz7c270q33jq6hnrv3xgkvajsc62ilqq7fs40av6zfipg7mx";
+    };
+    propagatedBuildInputs = [ ModuleRuntime ];
+    meta = {
+      description = "Import packages into other packages";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IO = buildPerlPackage {
+    pname = "IO";
+    version = "1.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/IO-1.42.tar.gz";
+      sha256 = "eec5cc33a6cddba8b5d2425b60752882add7e4d41b7431a0ea4dcd73cc1f8cca";
+    };
+    doCheck = false;
+    meta = {
+      description = "Perl core IO modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOAIO = buildPerlPackage {
+    pname = "IO-AIO";
+    version = "4.73";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/IO-AIO-4.73.tar.gz";
+      sha256 = "0nmcwj385zdk65z8b9ivsvbm1d7a3d5gfnhy7mkbgyi4h33lfnws";
+    };
+    buildInputs = [ CanaryStability ];
+    propagatedBuildInputs = [ commonsense ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/treescan
+    '';
+    meta = {
+      description = "Asynchronous/Advanced Input/Output";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOAll = buildPerlPackage {
+    pname = "IO-All";
+    version = "0.87";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/IO-All-0.87.tar.gz";
+      sha256 = "0nsd9knlbd7if2v6zwj4q978axq0w5hk8ymp61z14a821hjivqjl";
+    };
+    meta = {
+      homepage = "https://github.com/ingydotnet/io-all-pm";
+      description = "IO::All of it to Graham and Damian!";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOAsync = buildPerlModule {
+    pname = "IO-Async";
+    version = "0.78";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/IO-Async-0.78.tar.gz";
+      sha256 = "sha256-P7UYhZd7hiGKiepC84yvvOWCO/SPqqLRhaGGwqNYNmw=";
+    };
+    preCheck = "rm t/50resolver.t"; # this test fails with "Temporary failure in name resolution" in sandbox
+    propagatedBuildInputs = [ Future StructDumb ];
+    buildInputs = [ TestFatal TestIdentity TestMetricsAny TestRefcount ];
+    meta = {
+      description = "Asynchronous event-driven programming";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOAsyncSSL = buildPerlModule {
+    pname = "IO-Async-SSL";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/IO-Async-SSL-0.22.tar.gz";
+      sha256 = "0c7363a7f1a08805bd1b2cf2b1a42a950ca71914c2aedbdd985970e011331a21";
+    };
+    buildInputs = [ TestIdentity ];
+    propagatedBuildInputs = [ Future IOAsync IOSocketSSL ];
+    meta = {
+      description = "Use SSL/TLS with IO::Async";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  IOCapture = buildPerlPackage {
+    pname = "IO-Capture";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REYNOLDS/IO-Capture-0.05.tar.gz";
+      sha256 = "c2c15a254ca74fb8c57d25d7b6cbcaff77a3b4fb5695423f1f80bb423abffea9";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOCaptureOutput = buildPerlPackage {
+    pname = "IO-CaptureOutput";
+    version = "1.1105";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/IO-CaptureOutput-1.1105.tar.gz";
+      sha256 = "ae99009fca1273800f169ecb82f4ed1cc6c76795f156bee5c0093005d572f487";
+    };
+    meta = {
+      homepage = "https://github.com/dagolden/IO-CaptureOutput";
+      description = "Capture STDOUT and STDERR from Perl code, subprocesses or XS";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOCompress = buildPerlPackage {
+    pname = "IO-Compress";
+    version = "2.102";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMQS/IO-Compress-2.102.tar.gz";
+      sha256 = "193jvi4800cbcac5n1swj9zgwwqck9c47g0g592ldr7fbfd7zynn";
+    };
+    propagatedBuildInputs = [ CompressRawBzip2 CompressRawZlib ];
+    meta = {
+      description = "IO Interface to compressed data files/buffers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    # Same as CompressRawZlib
+    doCheck = false && !stdenv.isDarwin;
+  };
+
+  IODigest = buildPerlPackage {
+    pname = "IO-Digest";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLKAO/IO-Digest-0.11.tar.gz";
+      sha256 = "14kz7z4xw179aya3116wxac29l4y2wmwrba087lya4v2gxdgiz4g";
+    };
+    propagatedBuildInputs = [ PerlIOviadynamic ];
+  };
+
+  IOHTML = buildPerlPackage {
+    pname = "IO-HTML";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-1.004.tar.gz";
+      sha256 = "1xcbplf8rxb3z4wz66h5w7vy1g83bkxksxwnjp1z5fv3jksjsyy8";
+    };
+    meta = {
+      description = "Open an HTML file with automatic charset detection";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOHandleUtil = buildPerlModule {
+     pname = "IO-Handle-Util";
+     version = "0.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/IO-Handle-Util-0.02.tar.gz";
+       sha256 = "1vncvsx53iiw1yy3drlk44hzx2pk5cial0h74djf9i6s2flndfcd";
+     };
+     propagatedBuildInputs = [ IOString SubExporter asa ];
+     meta = {
+     };
+    buildInputs = [ ModuleBuildTiny TestSimple13 ];
+  };
+
+  IOInteractive = buildPerlPackage {
+    pname = "IO-Interactive";
+    version = "1.022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/IO-Interactive-1.022.tar.gz";
+      sha256 = "0ed53b8ae93ae877e98e0d89b7b429e29ccd1ee4c28e952c4ea9aa73d01febdc";
+    };
+    meta = {
+      description = "Utilities for interactive I/O";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOInteractiveTiny = buildPerlPackage {
+    pname = "IO-Interactive-Tiny";
+    version = "0.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DM/DMUEY/IO-Interactive-Tiny-0.2.tar.gz";
+      sha256 = "45c0696505c7e4347845f5cd2512b7b1bc78fbce4cbed2b58008283fc95ea5f9";
+    };
+    meta = {
+      description = "Is_interactive() without large deps";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  IOLockedFile = buildPerlPackage {
+    pname = "IO-LockedFile";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RANI/IO-LockedFile-0.23.tar.gz";
+      sha256 = "1dgq8zfkaszisdb5hz8jgcl0xc3qpv7bbv562l31xgpiddm7xnxi";
+    };
+  };
+
+  IOMultiplex = buildPerlPackage {
+    pname = "IO-Multiplex";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BB/BBB/IO-Multiplex-1.16.tar.gz";
+      sha256 = "74d22c44b5ad2e7190e2786e8a17d74bbf4cef89b4d1157ba33598b5a2720dad";
+    };
+  };
+
+  IOPager = buildPerlPackage {
+    version = "2.10";
+    pname = "IO-Pager";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JP/JPIERCE/IO-Pager-2.10.tgz";
+      sha256 = "15dimh3i61y6kybhbap91kwh9837xfww072rh95h7j40sb1did5w";
+    };
+    propagatedBuildInputs = [ pkgs.more FileWhich TermReadKey ]; # `more` used in tests
+  };
+
+  IOPty = buildPerlModule {
+    pname = "IO-Pty";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/IO-Tty-1.16.tar.gz";
+      sha256 = "sha256-jxoJwHBzitxpXfkD8uf3QwjdjZkbkUwLw5Cg5gISlN0=";
+    };
+    buildPhase = "make";
+    checkPhase = "make test";
+    installPhase = "make install";
+    meta = {
+      homepage = "https://github.com/toddr/IO-Tty";
+      description = "Pseudo TTY object class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOPrompt = buildPerlModule {
+    pname = "IO-Prompt";
+    version = "0.997004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCONWAY/IO-Prompt-0.997004.tar.gz";
+      sha256 = "f17bb305ee6ac8b5b203e6d826eb940c4f3f6d6f4bfe719c3b3a225f46f58615";
+    };
+    propagatedBuildInputs = [ TermReadKey Want ];
+    doCheck = false; # needs access to /dev/tty
+    meta = {
+      description = "Interactively prompt for user input";
+    };
+  };
+
+  IOSessionData = buildPerlPackage {
+    pname = "IO-SessionData";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/IO-SessionData-1.03.tar.gz";
+      sha256 = "1p9d77pqy9a8dbgw7h7vmmkg0rlckk19dchd4c8gvcyv7qm73934";
+    };
+    outputs = [ "out" "dev" ]; # no "devdoc"
+    meta = {
+      description = "supporting module for SOAP::Lite";
+    };
+  };
+
+  IOSocketInet6 = buildPerlModule {
+    pname = "IO-Socket-INET6";
+    version = "2.72";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/IO-Socket-INET6-2.72.tar.gz";
+      sha256 = "1fqypz6qa5rw2d5y2zq7f49frwra0aln13nhq5gi514j2zx21q45";
+    };
+    propagatedBuildInputs = [ Socket6 ];
+    doCheck = false;
+  };
+
+  IOSocketSSL = buildPerlPackage {
+    pname = "IO-Socket-SSL";
+    version = "2.068";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SU/SULLR/IO-Socket-SSL-2.068.tar.gz";
+      sha256 = "4420fc0056f1827b4dd1245eacca0da56e2182b4ef6fc078f107dc43c3fb8ff9";
+    };
+    propagatedBuildInputs = [ MozillaCA NetSSLeay ];
+    # Fix path to default certificate store.
+    postPatch = ''
+      substituteInPlace lib/IO/Socket/SSL.pm \
+        --replace "\$openssldir/cert.pem" "/etc/ssl/certs/ca-certificates.crt"
+    '';
+    meta = {
+      homepage = "https://github.com/noxxi/p5-io-socket-ssl";
+      description = "Nearly transparent SSL encapsulation for IO::Socket::INET";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    doCheck = false; # tries to connect to facebook.com etc.
+  };
+
+  IOSocketTimeout = buildPerlModule {
+    pname = "IO-Socket-Timeout";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAMS/IO-Socket-Timeout-0.32.tar.gz";
+      sha256 = "edf915d6cc66bee43503aa6dc2b373366f38eaff701582183dad10cb8adf2972";
+    };
+    buildInputs = [ ModuleBuildTiny TestSharedFork TestTCP ];
+    propagatedBuildInputs = [ PerlIOviaTimeout ];
+    meta = {
+      description = "IO::Socket with read/write timeout";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOString = buildPerlPackage {
+    pname = "IO-String";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/IO-String-1.08.tar.gz";
+      sha256 = "2a3f4ad8442d9070780e58ef43722d19d1ee21a803bf7c8206877a10482de5a0";
+    };
+  };
+
+  IOStringy = buildPerlPackage {
+    pname = "IO-Stringy";
+    version = "2.113";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CAPOEIRAB/IO-Stringy-2.113.tar.gz";
+      sha256 = "0kpycb56l6ilvmdx9swx9wpj1x3vfnqdflfjd6dn6spnz750y8ji";
+    };
+  };
+
+  IOStty = buildPerlModule {
+    pname = "IO-Stty";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/IO-Stty-0.04.tar.gz";
+      sha256 = "sha256-XJUJ8ahpPYKH+gE97wv4eqZM2ScThGHvjetVUDxmUcI=";
+    };
+    buildPhase = "make";
+    checkPhase = "make test";
+    installPhase = "make install";
+    meta = {
+      homepage = "http://wiki.github.com/toddr/IO-Stty";
+      description = "Change and print terminal line settings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOTee = buildPerlPackage {
+    pname = "IO-Tee";
+    version = "0.66";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/IO-Tee-0.66.tar.gz";
+      sha256 = "1q2jhp02rywrbyhvl2lv6qp70dcv5cfalrx3cc4c7y8nclhfg71d";
+    };
+  };
+
+  IOTieCombine = buildPerlPackage {
+    pname = "IO-TieCombine";
+    version = "1.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/IO-TieCombine-1.005.tar.gz";
+      sha256 = "1bv9ampayf4bvyxg4ivy18l8k79jvq55x6gl68b2fg8b62w4sba0";
+    };
+    meta = {
+      homepage = "https://github.com/rjbs/io-tiecombine";
+      description = "Produce tied (and other) separate but combined variables";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOTty = buildPerlPackage {
+    pname = "IO-Tty";
+    version = "1.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/IO-Tty-1.15.tar.gz";
+      sha256 = "06mmyr4fkkix1z0j8hnhrccn93isnabf3408kqavn2v2hw7wrya3";
+    };
+    doCheck = !stdenv.isDarwin;  # openpty fails in the sandbox
+  };
+
+  IPCountry = buildPerlPackage {
+    pname = "IP-Country";
+    version = "2.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NW/NWETTERS/IP-Country-2.28.tar.gz";
+      sha256 = "88db833a5ab22ed06cb53d6f205725e3b5371b254596053738885e91fa105f75";
+    };
+    propagatedBuildInputs = [ GeographyCountries ];
+    meta = {
+      description = "Fast lookup of country codes from IP addresses";
+      license = lib.licenses.mit;
+    };
+  };
+
+  GeographyCountries = buildPerlPackage {
+    pname = "Geography-Countries";
+    version = "2009041301";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABIGAIL/Geography-Countries-2009041301.tar.gz";
+      sha256 = "48c42e40e8281ba7c981743a854c48e6def2d51eb0925ea6c96e25c74497f20f";
+    };
+    meta = {
+      description = "2-letter, 3-letter, and numerical codes for countries";
+      license = lib.licenses.mit;
+    };
+  };
+
+
+  IPCRun = buildPerlPackage {
+    pname = "IPC-Run";
+    version = "20200505.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/IPC-Run-20200505.0.tar.gz";
+      sha256 = "00f9wjvhn55zbk3n9il76xvsqy7ddk60lg6phg2rkpx0gwhvyvl1";
+    };
+    doCheck = false; /* attempts a network connection to localhost */
+    meta = {
+      description = "System() and background procs w/ piping, redirs, ptys (Unix, Win32)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ IOTty ];
+    buildInputs = [ Readonly ];
+  };
+
+  IPCRun3 = buildPerlPackage {
+    pname = "IPC-Run3";
+    version = "0.048";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/IPC-Run3-0.048.tar.gz";
+      sha256 = "0r9m8q78bg7yycpixd7738jm40yz71p2q7inm766kzsw3g6c709x";
+    };
+  };
+
+  IPCShareLite = buildPerlPackage {
+    pname = "IPC-ShareLite";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDYA/IPC-ShareLite-0.17.tar.gz";
+      sha256 = "1gz7dbwxrzbzdsjv11kb49jlf9q6lci2va6is0hnavd93nwhdm0l";
+    };
+  };
+
+  IPCSystemSimple = buildPerlPackage {
+    pname = "IPC-System-Simple";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JK/JKEENAN/IPC-System-Simple-1.30.tar.gz";
+      sha256 = "22e6f5222b505ee513058fdca35ab7a1eab80539b98e5ca4a923a70a8ae9ba9e";
+    };
+    meta = {
+      description = "Run commands simply, with detailed diagnostics";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IPCSysV = buildPerlPackage {
+    pname = "IPC-SysV";
+    version = "2.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MH/MHX/IPC-SysV-2.09.tar.gz";
+      sha256 = "1g9ddlba4w2jpasn4sh5v1spag4x87rhfv7b0w8gsj6mfhf595qq";
+    };
+    meta = {
+      description = "System V IPC constants and system calls";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IRCUtils = buildPerlPackage {
+    pname = "IRC-Utils";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HI/HINRIK/IRC-Utils-0.12.tar.gz";
+      sha256 = "c7d6311eb6c79e983833c9e6b4e8d426d07a9874d20f4bc641b313b99c9bc8a0";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/IRC-Utils";
+      description = "Common utilities for IRC-related tasks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  ImageExifTool = buildPerlPackage rec {
+    pname = "Image-ExifTool";
+    version = "12.39";
+
+    src = fetchurl {
+      url = "https://exiftool.org/Image-ExifTool-${version}.tar.gz";
+      sha256 = "sha256-QDq1KTpEcl8EWj9a/bxF0TwghUulH30O5yDV0wsxy6I=";
+    };
+
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/exiftool
+    '';
+
+    meta = with lib; {
+      description = "A tool to read, write and edit EXIF meta information";
+      homepage = "https://exiftool.org/";
+
+      longDescription = ''
+        ExifTool is a platform-independent Perl library plus a command-line
+        application for reading, writing and editing meta information in a wide
+        variety of files. ExifTool supports many different metadata formats
+        including EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop
+        IRB, FlashPix, AFCP and ID3, as well as the maker notes of many digital
+        cameras by Canon, Casio, DJI, FLIR, FujiFilm, GE, GoPro, HP,
+        JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Motorola, Nikon,
+        Nintendo, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Phase One,
+        Reconyx, Ricoh, Samsung, Sanyo, Sigma/Foveon and Sony.
+      '';
+
+      license = with licenses; [ gpl1Plus /* or */ artistic2 ];
+
+      maintainers = [ maintainers.kiloreux ];
+    };
+  };
+
+  Inline = buildPerlPackage {
+    pname = "Inline";
+    version = "0.86";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Inline-0.86.tar.gz";
+      sha256 = "510a7de2d011b0db80b0874e8c0f7390010991000ae135cff7474df1e6d51e3a";
+    };
+    buildInputs = [ TestWarn ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/inline-pm";
+      description = "Write Perl Subroutines in Other Programming Languages";
+      longDescription = ''
+        The Inline module allows you to put source code from other
+        programming languages directly "inline" in a Perl script or
+        module. The code is automatically compiled as needed, and then loaded
+        for immediate access from Perl.
+      '';
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  InlineC = buildPerlPackage {
+    pname = "Inline-C";
+    version = "0.81";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TINITA/Inline-C-0.81.tar.gz";
+      sha256 = "f185258d9050d7f79b4f00f12625cc469c2f700ff62d3e831cb18d80d2c87aac";
+    };
+    buildInputs = [ FileCopyRecursive TestWarn YAMLLibYAML ];
+    propagatedBuildInputs = [ Inline ParseRecDescent Pegex ];
+    postPatch = ''
+      # this test will fail with chroot builds
+      rm -f t/08taint.t
+      rm -f t/28autowrap.t
+    '';
+    meta = {
+      homepage = "https://github.com/ingydotnet/inline-c-pm";
+      description = "C Language Support for Inline";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  InlineJava = buildPerlPackage {
+    pname = "Inline-Java";
+    version = "0.66";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/Inline-Java-0.66.tar.gz";
+      sha256 = "0j6r6gxdn3wzx36cgcx4znj4ihp5fjl4gzk1623vvwgnwrlf0hy7";
+    };
+
+    propagatedBuildInputs = [ Inline ];
+
+    # TODO: upgrade https://github.com/NixOS/nixpkgs/pull/89731
+    makeMakerFlags = "J2SDK=${pkgs.jdk8}";
+
+    # FIXME: Apparently tests want to access the network.
+    doCheck = false;
+
+    meta = {
+      description = "Inline::Java -- Write Perl classes in Java";
+
+      longDescription = ''
+        The Inline::Java module allows you to put Java source code directly
+        "inline" in a Perl script or module.  A Java compiler is launched and
+        the Java code is compiled.  Then Perl asks the Java classes what
+        public methods have been defined.  These classes and methods are
+        available to the Perl program as if they had been written in Perl.
+      '';
+
+      license = lib.licenses.artistic2;
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.InlineJava.x86_64-darwin
+    };
+  };
+
+  IPCSignal = buildPerlPackage {
+    pname = "IPC-Signal";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROSCH/IPC-Signal-1.00.tar.gz";
+      sha256 = "1l3g0zrcwf2whwjhbpwdcridb7c77mydwxvfykqg1h6hqb4gj8bw";
+    };
+  };
+
+  JavaScriptMinifierXS = buildPerlModule {
+    pname = "JavaScript-Minifier-XS";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GT/GTERMARS/JavaScript-Minifier-XS-0.11.tar.gz";
+      sha256 = "1vlyhckpjbrg2v4dy9szsxxl0q44n0y1xl763mg2y2ym9g5144hm";
+    };
+    perlPreHook = lib.optionalString (stdenv.isi686 || stdenv.isDarwin) "export LD=$CC";
+    meta = {
+      description = "XS based JavaScript minifier";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JavaScriptValueEscape = buildPerlModule {
+     pname = "JavaScript-Value-Escape";
+     version = "0.07";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/K/KA/KAZEBURO/JavaScript-Value-Escape-0.07.tar.gz";
+       sha256 = "1p5365lvnax8kbcfrj169lx05af3i3qi5wg5x9mizqgd10vxmjws";
+     };
+     meta = {
+       description = "Avoid XSS with JavaScript value interpolation";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/kazeburo/JavaScript-Value-Escape";
+     };
+  };
+
+  JSON = buildPerlPackage {
+    pname = "JSON";
+    version = "4.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/JSON-4.02.tar.gz";
+      sha256 = "0z32x2lijij28c9fhmzgxc41i9nw24fyvd2a8ajs5zw9b9sqhjj4";
+    };
+    # Do not abort cross-compilation on failure to load native JSON module into host perl
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONAny = buildPerlPackage {
+    pname = "JSON-Any";
+    version = "1.39";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/JSON-Any-1.39.tar.gz";
+      sha256 = "1hspg6khjb38syn59cysnapc1q77qgavfym3fqr6l2kiydf7ajdf";
+    };
+    meta = {
+      description = "Wrapper Class for the various JSON classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFatal TestRequires TestWarnings TestWithoutModule ];
+  };
+
+  JSONCreate = buildPerlPackage {
+    pname = "JSON-Create";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BK/BKB/JSON-Create-0.35.tar.gz";
+      sha256 = "5faefe0d833b8132568865308f3239d3cdaa1b8a1ecc9b5624dcf1efbe10683e";
+    };
+    propagatedBuildInputs = [ JSONParse UnicodeUTF8 ];
+    meta = {
+      description = "Create JSON";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONMaybeXS = buildPerlPackage {
+    pname = "JSON-MaybeXS";
+    version = "1.004003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/JSON-MaybeXS-1.004003.tar.gz";
+      sha256 = "1grg8saa318bs4x2wqnww7y0nra7azrzg35bk5pgvkwxzwbkpvjv";
+    };
+    meta = {
+      description = "Use L<Cpanel::JSON::XS> with a fallback to L<JSON::XS> and L<JSON::PP>";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestNeeds ];
+  };
+
+  JSONPP = buildPerlPackage {
+    pname = "JSON-PP";
+    version = "4.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/JSON-PP-4.05.tar.gz";
+      sha256 = "1kphifz5zzyjnn4s9d8dynvinm76bbsf1b7a7bs48kfgpjkbr8nm";
+    };
+    meta = {
+      description = "JSON::XS compatible pure-Perl module";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONPPCompat5006 = buildPerlPackage {
+    pname = "JSON-PP-Compat5006";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAKAMAKA/JSON-PP-Compat5006-1.09.tar.gz";
+      sha256 = "197030df52635f9bbe25af10742eea5bd74971473118c11311fcabcb62e3716a";
+    };
+    meta = {
+      description = "Helper module in using JSON::PP in Perl 5.6";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONParse = buildPerlPackage {
+    pname = "JSON-Parse";
+    version = "0.61";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BK/BKB/JSON-Parse-0.61.tar.gz";
+      sha256 = "ce8e55e70bef9bcbba2e96af631d10a605900961a22cad977e71aab56c3f2806";
+    };
+    meta = {
+      description = "Read JSON into a Perl variable";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONValidator = buildPerlPackage {
+    pname = "JSON-Validator";
+    version = "4.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/JSON-Validator-4.16.tar.gz";
+      sha256 = "0mhdczx2pxzi4lrrzkxl2a3r0s2b79ffsrar6g2l01idfpri6gi2";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ DataValidateDomain DataValidateIP Mojolicious NetIDNEncode YAMLLibYAML ];
+    meta = {
+      homepage = "https://github.com/mojolicious/json-validator";
+      description = "Validate data against a JSON schema";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+ JSONWebToken = buildPerlModule {
+    pname = "JSON-WebToken";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAICRON/JSON-WebToken-0.10.tar.gz";
+      sha256 = "77c182a98528f1714d82afc548d5b3b4dc93e67069128bb9b9413f24cf07248b";
+    };
+    buildInputs = [ TestMockGuard TestRequires ];
+    propagatedBuildInputs = [ JSON ModuleRuntime ];
+    meta = {
+      homepage = "https://github.com/xaicron/p5-JSON-WebToken";
+      description = "JSON Web Token (JWT) implementation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  JSONXS = buildPerlPackage {
+    pname = "JSON-XS";
+    version = "4.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/JSON-XS-4.03.tar.gz";
+      sha256 = "0s4hdfjwi1sq3cx4bjxrg8k1s4nhb0vm6948iklag89gbzs3cmai";
+    };
+    propagatedBuildInputs = [ TypesSerialiser ];
+    buildInputs = [ CanaryStability ];
+  };
+
+  JSONXSVersionOneAndTwo = buildPerlPackage {
+    pname = "JSON-XS-VersionOneAndTwo";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LB/LBROCARD/JSON-XS-VersionOneAndTwo-0.31.tar.gz";
+      sha256 = "e6092c4d961fae777acf7fe99fb3cd6e5b710fec85765a6b90417480e4c94a34";
+    };
+    propagatedBuildInputs = [ JSONXS ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Later = buildPerlPackage {
+    version = "0.21";
+    pname = "Object-Realize-Later";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/Object-Realize-Later-0.21.tar.gz";
+      sha256 = "1nfqssld7pcdw9sj4mkfnh75w51wl14i1h7npj9fld4fri09cywg";
+    };
+  };
+
+  LaTeXML = buildPerlPackage rec {
+    pname = "LaTeXML";
+    version = "0.8.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BRMILLER/${pname}-${version}.tar.gz";
+      sha256 = "1ccvdq7asxq6iw8x8ihwf5xs2mp7fkwm467xy7g8spkznr8wcacm";
+    };
+    patches = [
+      (fetchpatch {
+        # https://github.com/brucemiller/LaTeXML/issues/1669
+        name = "downgrade-security-FileTemp.patch";
+        url = "https://github.com/brucemiller/LaTeXML/commit/c3d6b9b88f9eafce6eee52b1634ea33085ba9ec6.patch";
+        sha256 = "12w6nfv0bkj2mr4xwcqzkdngrpbq4fn52n85r9njdg913cvfirm7";
+      })
+    ];
+    outputs = [ "out" "tex" ];
+    propagatedBuildInputs = [ ArchiveZip DBFile FileWhich IOString ImageMagick ImageSize JSONXS LWP ParseRecDescent PodParser TextUnidecode XMLLibXSLT ];
+    nativeBuildInputs = [ pkgs.makeWrapper ] ++ lib.optional stdenv.isDarwin shortenPerlShebang;
+    makeMakerFlags = "TEXMF=\${tex} NOMKTEXLSR";
+    # shebangs need to be patched before executables are copied to $out
+    preBuild = ''
+      patchShebangs bin/
+    '' + lib.optionalString stdenv.isDarwin ''
+      for file in bin/*; do
+        shortenPerlShebang "$file"
+      done
+    '';
+    postInstall = ''
+      for file in latexmlc latexmlmath latexmlpost ; do
+        # add runtime dependencies that cause silent failures when missing
+        wrapProgram $out/bin/$file --prefix PATH : ${lib.makeBinPath [ pkgs.ghostscript pkgs.potrace ]}
+      done
+    '';
+    meta = {
+      description = "Transforms TeX and LaTeX into XML/HTML/MathML";
+      homepage = "https://dlmf.nist.gov/LaTeXML/";
+      license = lib.licenses.publicDomain;
+      maintainers = with maintainers; [ xworld21 ];
+    };
+    passthru = {
+      tlType = "run";
+      pkgs = [ LaTeXML.tex ];
+    };
+  };
+
+  LEOCHARRECLI = buildPerlPackage {
+    pname = "LEOCHARRE-CLI";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEOCHARRE/LEOCHARRE-CLI-1.19.tar.gz";
+      sha256 = "37835f11ee35326241b4d30368ae1bc195a50414b3662db3e13b865bd52fcde9";
+    };
+    propagatedBuildInputs = [ FileWhich Filechmod LEOCHARREDebug Linuxusermod YAML ];
+    meta = {
+      description = "Useful subs for coding cli scripts";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LEOCHARREDebug = buildPerlPackage {
+    pname = "LEOCHARRE-Debug";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEOCHARRE/LEOCHARRE-Debug-1.03.tar.gz";
+      sha256 = "c1665aa3abd457cc8624b8c418c6f8bdf58fb3a686f8eed515cf7e93514df192";
+    };
+    meta = {
+      description = "Debug sub";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  libapreq2 = buildPerlPackage {
+    pname = "libapreq2";
+    version = "2.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/libapreq2-2.16.tar.gz";
+      sha256 = "e04c855a3ea070b8863569fbae02fe828f534ac88755b23e24d3863cc9598349";
+    };
+    outputs = [ "out" ];
+    buildInputs = [ pkgs.apacheHttpd pkgs.apr pkgs.aprutil ApacheTest ExtUtilsXSBuilder ];
+    propagatedBuildInputs = [ (pkgs.apacheHttpdPackages.mod_perl.override { inherit perl; }) ];
+    makeMakerFlags = "--with-apache2-src=${pkgs.apacheHttpd.dev} --with-apache2-apxs=${pkgs.apacheHttpd.dev}/bin/apxs --with-apache2-httpd=${pkgs.apacheHttpd.out}/bin/httpd --with-apr-config=${pkgs.apr.dev}/bin/apr-1-config --with-apu-config=${pkgs.aprutil.dev}/bin/apu-1-config";
+    preConfigure = ''
+      # override broken prereq check
+      substituteInPlace configure --replace "prereq_check=\"\$PERL \$PERL_OPTS build/version_check.pl\"" "prereq_check=\"echo\""
+      '';
+    preBuild = ''
+      substituteInPlace apreq2-config --replace "dirname" "${pkgs.coreutils}/bin/dirname"
+      '';
+    installPhase = ''
+      mkdir $out
+
+      # install the library
+      make install DESTDIR=$out
+      cp -r $out/${pkgs.apacheHttpd.dev}/. $out/.
+      cp -r $out/$out/. $out/.
+
+      # install the perl module
+      pushd glue/perl
+      perl Makefile.PL
+      make install DESTDIR=$out
+      cp -r $out/${perl}/lib/perl5 $out/lib/
+      popd
+
+      # install the apache module
+      # https://computergod.typepad.com/home/2007/06/webgui_and_suse.html
+      # NOTE: if using the apache module you must use "apreq" as the module name, not "apreq2"
+      # services.httpd.extraModules = [ { name = "apreq"; path = "''${pkgs.perlPackages.libapreq2}/modules/mod_apreq2.so"; } ];
+      pushd module
+      make install DESTDIR=$out
+      cp -r $out/${pkgs.apacheHttpd.out}/modules $out/
+      popd
+
+      rm -r $out/nix
+    '';
+    doCheck = false; # test would need to start apache httpd
+    meta = {
+      license = lib.licenses.asl20;
+    };
+  };
+
+  libintl-perl = buildPerlPackage {
+    pname = "libintl-perl";
+    version = "1.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GU/GUIDO/libintl-perl-1.32.tar.gz";
+      sha256 = "19gbbh9w3rl805mv6mg1q80fsrg610h098qhf7ycnkjnyac84440";
+    };
+  };
+
+  libnet = buildPerlPackage {
+    pname = "libnet";
+    version = "3.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/libnet-3.13.tar.gz";
+      sha256 = "sha256-WjX7Hy1KopFoDrGvOImfq0U8IsKOcffHvTdHtaPbNIw=";
+    };
+    patches = [
+      (fetchpatch {
+        name = "deterministic-libnet.cfg";
+        url = "https://github.com/steve-m-hay/perl-libnet/commit/7d076c4352f67ee4ed64092cfad3963a2321bd53.patch";
+        sha256 = "0pg9w2m08janqn5nrp4x9w5hbcsyxz87hfskd21zzfrzjk8z28qv";
+      })
+    ];
+    meta = {
+      description = "Collection of network protocol modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  librelative = buildPerlPackage {
+     pname = "lib-relative";
+     version = "1.000";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DB/DBOOK/lib-relative-1.000.tar.gz";
+       sha256 = "1mvcdl87d3kyrdx4y6x79k3n5qdd1x5m1hp8lwjxvgfqbw0cgq6z";
+     };
+     meta = {
+       description = "Add paths relative to the current file to @INC";
+       license = with lib.licenses; [ artistic2 ];
+       homepage = "https://github.com/Grinnz/lib-relative";
+     };
+  };
+
+  libxml_perl = buildPerlPackage {
+    pname = "libxml-perl";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KM/KMACLEOD/libxml-perl-0.08.tar.gz";
+      sha256 = "1jy9af0ljyzj7wakqli0437zb2vrbplqj4xhab7bfj2xgfdhawa5";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+  };
+
+  LinguaENFindNumber = buildPerlPackage {
+    pname = "Lingua-EN-FindNumber";
+    version = "1.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Lingua-EN-FindNumber-1.32.tar.gz";
+      sha256 = "1d176d1c863fb9844bd19d2c2a4e68a0ed73da158f724a89405b90db7e8dbd04";
+    };
+    propagatedBuildInputs = [ LinguaENWords2Nums ];
+    meta = {
+      homepage = "https://github.com/neilbowers/Lingua-EN-FindNumber";
+      description = "Locate (written) numbers in English text";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinguaENInflect = buildPerlPackage {
+    pname = "Lingua-EN-Inflect";
+    version = "1.905";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCONWAY/Lingua-EN-Inflect-1.905.tar.gz";
+      sha256 = "15ij4rk1nznnd9hyg2hzy1ydpi9h1cdii8hdlq9j6mrf931rxhh5";
+    };
+    meta = {
+      description = "Convert singular to plural. Select 'a' or 'an'";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinguaENInflectNumber = buildPerlPackage {
+    pname = "Lingua-EN-Inflect-Number";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Lingua-EN-Inflect-Number-1.12.tar.gz";
+      sha256 = "66fb33838512746f5c597e80264fea66643f7f26570ec2f9205b6135ad67acbf";
+    };
+    propagatedBuildInputs = [ LinguaENInflect ];
+    meta = {
+      homepage = "https://github.com/neilbowers/Lingua-EN-Inflect-Number";
+      description = "Force number of words to singular or plural";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinguaENInflectPhrase = buildPerlPackage {
+    pname = "Lingua-EN-Inflect-Phrase";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/Lingua-EN-Inflect-Phrase-0.20.tar.gz";
+      sha256 = "55058911a99f1755de3eb449a99ffbeb92d88c01ff5dc60511a24679050ddea8";
+    };
+    buildInputs = [ TestNoWarnings ];
+    propagatedBuildInputs = [ LinguaENInflectNumber LinguaENNumberIsOrdinal LinguaENTagger ];
+    meta = {
+      description = "Inflect short English Phrases";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinguaENNumberIsOrdinal = buildPerlPackage {
+    pname = "Lingua-EN-Number-IsOrdinal";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/Lingua-EN-Number-IsOrdinal-0.05.tar.gz";
+      sha256 = "28d5695400c0f4e2bd209793cb74f6da2b9257356aacb2947c603425e09618d6";
+    };
+    buildInputs = [ TestFatal TryTiny ];
+    propagatedBuildInputs = [ LinguaENFindNumber ];
+    meta = {
+      description = "Detect if English number is ordinal or cardinal";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinguaENTagger = buildPerlPackage {
+    pname = "Lingua-EN-Tagger";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AC/ACOBURN/Lingua-EN-Tagger-0.31.tar.gz";
+      sha256 = "14z9fbl3mf6lxhp0v2apdlxy1fw1y07j4ydrjsh7p3w0wj3qr7ll";
+    };
+    propagatedBuildInputs = [ HTMLParser LinguaStem MemoizeExpireLRU ];
+    meta = {
+      description = "Part-of-speech tagger for English natural language processing";
+      license = lib.licenses.gpl3;
+    };
+  };
+
+  LinguaENWords2Nums = buildPerlPackage {
+    pname = "Lingua-EN-Words2Nums";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JO/JOEY/Lingua-EN-Words2Nums-0.18.tar.gz";
+      sha256 = "686556797cd2a4eaa066f19bbf03ab25c06278292c9ead2f187dfd9031ea1d85";
+    };
+    meta = {
+      description = "Convert English text to numbers";
+    };
+  };
+
+  LinguaPTStemmer = buildPerlPackage {
+     pname = "Lingua-PT-Stemmer";
+     version = "0.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Lingua-PT-Stemmer-0.02.tar.gz";
+       sha256 = "17c48sfbgwd2ivlgf59sr6jdhwa3aim8750f8pyzz7xpi8gz0var";
+     };
+     meta = {
+       description = "Portuguese language stemming";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/Lingua-PT-Stemmer";
+     };
+  };
+
+  LinguaStem = buildPerlModule {
+    pname = "Lingua-Stem";
+    version = "2.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SN/SNOWHARE/Lingua-Stem-2.31.tar.gz";
+      sha256 = "0r02cf5p09r09ivxhn4xmsgmbk041p6qq6p6af15jzj2nqr9j6ma";
+    };
+    doCheck = false;
+    propagatedBuildInputs = [ LinguaPTStemmer LinguaStemFr LinguaStemIt LinguaStemRu LinguaStemSnowballDa SnowballNorwegian SnowballSwedish TextGerman ];
+  };
+
+  LinguaStemFr = buildPerlPackage {
+     pname = "Lingua-Stem-Fr";
+     version = "0.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/SD/SDP/Lingua-Stem-Fr-0.02.tar.gz";
+       sha256 = "0vyrspwzaqjxm5mqshf4wvwa3938mkajd1918d9ii2l9m2rn8kwx";
+     };
+     meta = {
+     };
+  };
+
+  LinguaStemIt = buildPerlPackage {
+     pname = "Lingua-Stem-It";
+     version = "0.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AC/ACALPINI/Lingua-Stem-It-0.02.tar.gz";
+       sha256 = "1207r183s5hlh4mfwa6p46vzm0dhvrs2dnss5s41a0gyfkxp7riq";
+     };
+     meta = {
+     };
+  };
+
+  LinguaStemRu = buildPerlPackage {
+     pname = "Lingua-Stem-Ru";
+     version = "0.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Lingua-Stem-Ru-0.04.tar.gz";
+       sha256 = "0a2jmdz7jn32qj5hyiw5kbv8fvlpmws8i00a6xcbkzb48yvwww0j";
+     };
+     meta = {
+       description = "Porter's stemming algorithm for Russian (KOI8-R only)";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/Lingua-Stem-Ru";
+     };
+  };
+
+  LinguaStemSnowballDa = buildPerlPackage {
+     pname = "Lingua-Stem-Snowball-Da";
+     version = "1.01";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/C/CI/CINE/Lingua-Stem-Snowball-Da-1.01.tar.gz";
+       sha256 = "0mm0m7glm1s6i9f6a78jslw6wh573208arxhq93yriqmw17bwf9f";
+     };
+     meta = {
+     };
+  };
+
+  LinguaTranslit = buildPerlPackage {
+    pname = "Lingua-Translit";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALINKE/Lingua-Translit-0.28.tar.gz";
+      sha256 = "113f91d8fc2c630437153a49fb7a52b023af8f6278ed96c070b1f60824b8eae1";
+    };
+    doCheck = false;
+  };
+
+  LinkEmbedder = buildPerlPackage {
+    pname = "LinkEmbedder";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/LinkEmbedder-1.20.tar.gz";
+      sha256 = "19fwr3y8dd1bya2z86x3904s4dxfx15h7b777529j8n74m78ppmi";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/linkembedder";
+      description = "Embed / expand oEmbed resources and other URL / links";
+      license = lib.licenses.artistic2;
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  LinuxACL = buildPerlPackage {
+    pname = "Linux-ACL";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NA/NAZAROV/Linux-ACL-0.05.tar.gz";
+      sha256 = "312940c1f60f47c4fc93fa0a9d2a626425faa837040c8c2f1ad58ee09f62f371";
+    };
+    buildInputs = [ pkgs.acl ];
+    NIX_CFLAGS_LINK = "-L${pkgs.acl.out}/lib -lacl";
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "Perl extension for reading and setting Access Control Lists for files by libacl linux library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LinuxDesktopFiles = buildPerlModule {
+    pname = "Linux-DesktopFiles";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TR/TRIZEN/Linux-DesktopFiles-0.25.tar.gz";
+      sha256 = "60377a74fba90fa465200ee1c7430dbdde69d454d85f9ee101c039803a07e5f5";
+    };
+    meta = {
+      homepage = "https://github.com/trizen/Linux-DesktopFiles";
+      description = "Fast parsing of the Linux desktop files";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  LinuxDistribution = buildPerlModule {
+    pname = "Linux-Distribution";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Linux-Distribution-0.23.tar.gz";
+      sha256 = "603e27da607b3e872a669d7a66d75982f0969153eab2d4b20c341347b4ebda5f";
+    };
+    # The tests fail if the distro it's built on isn't in the supported list.
+    # This includes NixOS.
+    doCheck = false;
+    meta = {
+      description = "Perl extension to detect on which Linux distribution we are running";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  LinuxFD = buildPerlModule {
+    pname = "Linux-FD";
+    version = "0.011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Linux-FD-0.011.tar.gz";
+      sha256 = "6bb579d47644cb0ed35626ff77e909ae69063073c6ac09aa0614fef00fa37356";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ SubExporter ];
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    meta = {
+      description = "Linux specific special filehandles";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  LinuxInotify2 = buildPerlPackage {
+    pname = "Linux-Inotify2";
+    version = "2.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Linux-Inotify2-2.2.tar.gz";
+      sha256 = "0crlxmaa4lsgdjm5p9ib8rdxiy70qj1s68za3q3v57v8ll6s4hfx";
+    };
+    propagatedBuildInputs = [ commonsense ];
+
+    meta = {
+      description = "Scalable directory/file change notification for Perl on Linux";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  Linuxusermod = buildPerlPackage {
+    pname = "Linux-usermod";
+    version = "0.69";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIDUL/Linux-usermod-0.69.tar.gz";
+      sha256 = "97ca186a3c416bf69ed62da046f1a60d88d89b8e6ed25008b2f96e787dee9d60";
+    };
+    meta = {
+      description = "This module adds, removes and modify user and group accounts according to the passwd and shadow files syntax";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  ListAllUtils = buildPerlPackage {
+    pname = "List-AllUtils";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/List-AllUtils-0.18.tar.gz";
+      sha256 = "b7c4bf80090b281c4a1560c76a1a819094c3a1294302f77afb8c60ca4862ecf9";
+    };
+    propagatedBuildInputs = [ ListSomeUtils ListUtilsBy ];
+    meta = {
+      description = "Combines List::Util and List::MoreUtils in one bite-sized package";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ListBinarySearch = buildPerlPackage {
+    pname = "List-BinarySearch";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVIDO/List-BinarySearch-0.25.tar.gz";
+      sha256 = "0ap8y9rsjxg75887klgij90mf459f8dwy0dbx1g06h30pmqk04f8";
+    };
+  };
+
+  ListCompare = buildPerlPackage {
+    pname = "List-Compare";
+    version = "0.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JK/JKEENAN/List-Compare-0.55.tar.gz";
+      sha256 = "cc719479836579d52b02bc328ed80a98f679df043a99b5710ab2c191669eb837";
+    };
+    buildInputs = [ CaptureTiny ];
+    meta = {
+      homepage = "http://thenceforward.net/perl/modules/List-Compare/";
+      description = "Compare elements of two or more lists";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ListMoreUtils = buildPerlPackage {
+    pname = "List-MoreUtils";
+    version = "0.430";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/List-MoreUtils-0.430.tar.gz";
+      sha256 = "09v5cipjf634a1176wy2wicibzz51lry0d0yim9rnbfl5j2ggcb3";
+    };
+    propagatedBuildInputs = [ ExporterTiny ListMoreUtilsXS ];
+    meta = {
+      description = "Provide the stuff missing in List::Util";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestLeakTrace ];
+  };
+
+  ListMoreUtilsXS = buildPerlPackage {
+     pname = "List-MoreUtils-XS";
+     version = "0.430";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RE/REHSACK/List-MoreUtils-XS-0.430.tar.gz";
+       sha256 = "0hmjkhmk1qlzbg8skq7g1zral07k1x0fk4w2fpcfr7hpgkaldkp8";
+     };
+     preConfigure = ''
+       export LD=$CC
+     '';
+     meta = {
+       description = "Provide the stuff missing in List::Util in XS";
+       license = with lib.licenses; [ asl20 ];
+     };
+  };
+
+  ListSomeUtils = buildPerlPackage {
+    pname = "List-SomeUtils";
+    version = "0.58";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/List-SomeUtils-0.58.tar.gz";
+      sha256 = "96eafb359339d22bf2a2de421298847a3c40f6a28b6d44005d0965da86a5469d";
+    };
+    buildInputs = [ TestLeakTrace ];
+    propagatedBuildInputs = [ ModuleImplementation ];
+    meta = {
+      description = "Provide the stuff missing in List::Util";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ListUtilsBy = buildPerlModule {
+    pname = "List-UtilsBy";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/List-UtilsBy-0.11.tar.gz";
+      sha256 = "0nkpylkqccxanr8wc7j9wg6jdrizybjjd6p8q3jbh7f29cxz9pgs";
+    };
+  };
+
+  LocaleCodes = buildPerlPackage {
+    pname = "Locale-Codes";
+    version = "3.66";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SB/SBECK/Locale-Codes-3.66.tar.gz";
+      sha256 = "1rspbig3zb7l7s1mlsk9n0rrisy8qrzwn0ix6a7sd372arnwvylr";
+    };
+    meta = {
+      description = "A distribution of modules to handle locale codes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestInter ];
+  };
+
+  LocaleGettext = buildPerlPackage {
+    pname = "gettext";
+    version = "1.07";
+    buildInputs = [ pkgs.gettext ];
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PV/PVANDRY/gettext-1.07.tar.gz";
+      sha256 = "05cwqjxxary11di03gg3fm6j9lbvg1dr2wpr311c1rwp8salg7ch";
+    };
+    LANG="C";
+  };
+
+  LocaleMaketextLexiconGetcontext = buildPerlPackage {
+    pname = "Locale-Maketext-Lexicon-Getcontext";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAPER/Locale-Maketext-Lexicon-Getcontext-0.05.tar.gz";
+      sha256 = "75cb33df9472a5962de54082f42c6a76b260fc405ba10ca53246fb1f82c09208";
+    };
+    propagatedBuildInputs = [ LocaleMaketextLexicon ];
+    meta = {
+      description = "PO file parser for Maketext";
+      license = lib.licenses.mit;
+    };
+  };
+
+  LocaleMOFile = buildPerlPackage {
+     pname = "Locale-MO-File";
+     version = "0.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-MO-File-0.09.tar.gz";
+       sha256 = "0gsaaqimsh5bdhns2v67j1nvb178hx2536lxmr971cwxy31ns0wp";
+     };
+     propagatedBuildInputs = [ ConstFast MooXStrictConstructor MooXTypesMooseLike ParamsValidate namespaceautoclean ];
+     buildInputs = [ TestDifferences TestException TestHexDifferences TestNoWarnings ];
+     meta = {
+       description = "Locale::MO::File - Write or read gettext MO files.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LocaleMaketextFuzzy = buildPerlPackage {
+    pname = "Locale-Maketext-Fuzzy";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AU/AUDREYT/Locale-Maketext-Fuzzy-0.11.tar.gz";
+      sha256 = "3785171ceb78cc7671319a3a6d8ced9b190e097dfcd9b2a9ebc804cd1a282f96";
+    };
+    meta = {
+      description = "Maketext from already interpolated strings";
+      license = "unrestricted";
+    };
+  };
+
+  LocaleMaketextLexicon = buildPerlPackage {
+    pname = "Locale-Maketext-Lexicon";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DRTECH/Locale-Maketext-Lexicon-1.00.tar.gz";
+      sha256 = "b73f6b04a58d3f0e38ebf2115a4c1532f1a4eef6fac5c6a2a449e4e14c1ddc7c";
+    };
+    meta = {
+      description = "Use other catalog formats in Maketext";
+      license = "mit";
+    };
+  };
+
+  LocaleMsgfmt = buildPerlPackage {
+    pname = "Locale-Msgfmt";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AZ/AZAWAWI/Locale-Msgfmt-0.15.tar.gz";
+      sha256 = "c3276831cbeecf58be02081bcc180bd348daa35da21a7737b7b038a59f643ab4";
+    };
+    meta = {
+      description = "Compile .po files to .mo files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LocalePO = buildPerlPackage {
+    pname = "Locale-PO";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/COSIMO/Locale-PO-0.27.tar.gz";
+      sha256 = "3c994a4b63e6e4e836c6f79a93f51921cab77c90c9753fe0f8b5429220d516b9";
+    };
+    propagatedBuildInputs = [ FileSlurp ];
+    meta = {
+      description = "Perl module for manipulating .po entries from GNU gettext";
+    };
+  };
+
+  LocaleTextDomainOO = buildPerlPackage {
+     pname = "Locale-TextDomain-OO";
+     version = "1.036";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-TextDomain-OO-1.036.tar.gz";
+       sha256 = "0f0fajq4k1sgyywsb7qypsf6xa1sxjx4agm8l8z2284nm3hq65xm";
+     };
+     propagatedBuildInputs = [ ClassLoad Clone JSON LocaleMOFile LocalePO LocaleTextDomainOOUtil LocaleUtilsPlaceholderBabelFish LocaleUtilsPlaceholderMaketext LocaleUtilsPlaceholderNamed MooXSingleton PathTiny TieSub ];
+     buildInputs = [ TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Locale::TextDomain::OO - Perl OO Interface to Uniforum Message Translation";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LocaleTextDomainOOUtil = buildPerlPackage {
+     pname = "Locale-TextDomain-OO-Util";
+     version = "4.002";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-TextDomain-OO-Util-4.002.tar.gz";
+       sha256 = "1826pl11vr9p7zv7vqs7kcd8y5218086l90dw8lw0xzdcmzs0prw";
+     };
+     propagatedBuildInputs = [ namespaceautoclean ];
+     buildInputs = [ TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Locale::TextDomain::OO::Util - Lexicon utils";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LocaleUtilsPlaceholderBabelFish = buildPerlPackage {
+     pname = "Locale-Utils-PlaceholderBabelFish";
+     version = "0.006";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-Utils-PlaceholderBabelFish-0.006.tar.gz";
+       sha256 = "1k54njj8xz19c8bjb0iln1mnfq55j3pvbff7samyrab3k59h071f";
+     };
+     propagatedBuildInputs = [ HTMLParser MooXStrictConstructor MooXTypesMooseLike namespaceautoclean ];
+     buildInputs = [ TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Locale::Utils::PlaceholderBabelFish - Utils to expand BabelFish palaceholders";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LocaleUtilsPlaceholderMaketext = buildPerlPackage {
+     pname = "Locale-Utils-PlaceholderMaketext";
+     version = "1.005";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-Utils-PlaceholderMaketext-1.005.tar.gz";
+       sha256 = "1srlbp8sfnzhndgh9s4d8bglpzw0vb8gnab9r8r8sggkv15n0a2h";
+     };
+     propagatedBuildInputs = [ MooXStrictConstructor MooXTypesMooseLike namespaceautoclean ];
+     buildInputs = [ TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Locale::Utils::PlaceholderMaketext - Utils to expand maketext placeholders";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LocaleUtilsPlaceholderNamed = buildPerlPackage {
+     pname = "Locale-Utils-PlaceholderNamed";
+     version = "1.004";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Locale-Utils-PlaceholderNamed-1.004.tar.gz";
+       sha256 = "1gd68lm5w5c6ndcilx91rn84zviqyrk3fx92jjx5khxm76i8xmvg";
+     };
+     propagatedBuildInputs = [ MooXStrictConstructor MooXTypesMooseLike namespaceautoclean ];
+     buildInputs = [ TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Locale::Utils::PlaceholderNamed - Utils to expand named placeholders";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  locallib = buildPerlPackage {
+    pname = "local-lib";
+    version = "2.000024";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz";
+      sha256 = "01cav7m6qc1x96wna1viiw6n212f94ks7cik4vj1a1lasixr36rf";
+    };
+    meta = {
+      description = "Create and use a local lib/ for perl modules with PERL5LIB";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ ModuleBuild ];
+  };
+
+  LockFileSimple = buildPerlPackage {
+    pname = "LockFile-Simple";
+    version = "0.208";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCHWIGON/lockfile-simple/LockFile-Simple-0.208.tar.gz";
+      sha256 = "18pk5a030dsg1h6wd8c47wl8pzrpyh9zi9h2c9gs9855nab7iis5";
+    };
+  };
+
+  LogAny = buildPerlPackage {
+    pname = "Log-Any";
+    version = "1.708";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PR/PREACTION/Log-Any-1.708.tar.gz";
+      sha256 = "e1407759dc9462ab096d4ddc89feaac8abb341c5429e38cf6f7b8a996a35ecd9";
+    };
+    # Syslog test fails.
+    preCheck = "rm t/syslog.t";
+    meta = {
+      homepage = "https://github.com/preaction/Log-Any";
+      description = "Bringing loggers and listeners together";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogAnyAdapterLog4perl = buildPerlPackage {
+    pname = "Log-Any-Adapter-Log4perl";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PR/PREACTION/Log-Any-Adapter-Log4perl-0.09.tar.gz";
+      sha256 = "19f1drqnzr6g4xwjm6jk4iaa3zmiax8bzxqch04f4jr12bjd75qi";
+    };
+    propagatedBuildInputs = [ LogAny LogLog4perl ];
+    meta = {
+      description = "Log::Any adapter for Log::Log4perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/preaction/Log-Any-Adapter-Log4perl";
+    };
+  };
+
+  LogAnyAdapterTAP = buildPerlPackage {
+    pname = "Log-Any-Adapter-TAP";
+    version = "0.003003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NERDVANA/Log-Any-Adapter-TAP-0.003003.tar.gz";
+      sha256 = "131f0689b2b42b1b31449714c6eda8f811dd96a7c86748f1e03b239cfd0121c0";
+    };
+    propagatedBuildInputs = [ LogAny TryTiny ];
+    meta = {
+      homepage = "https://github.com/silverdirk/perl-Log-Any-Adapter-TAP";
+      description = "Logger suitable for use with TAP test files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogContextual = buildPerlPackage {
+    pname = "Log-Contextual";
+    version = "0.008001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/Log-Contextual-0.008001.tar.gz";
+      sha256 = "b93cbcfbb8796d51c836e3b00243cda5630808c152c14eee5f20ca09c9451993";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ DataDumperConcise ExporterDeclare Moo ];
+    meta = {
+      homepage = "https://github.com/frioux/Log-Contextual";
+      description = "Simple logging interface with a contextual log";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogDispatch = buildPerlPackage {
+    pname = "Log-Dispatch";
+    version = "2.70";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Log-Dispatch-2.70.tar.gz";
+      sha256 = "089z5723lwa8jhl57xa5b901xmvj8kgz60rid33a7lv74k2irnd3";
+    };
+    propagatedBuildInputs = [ DevelGlobalDestruction ParamsValidationCompiler Specio namespaceautoclean ];
+    meta = {
+      description = "Dispatches messages to one or more outputs";
+      license = lib.licenses.artistic2;
+    };
+    buildInputs = [ IPCRun3 TestFatal TestNeeds ];
+  };
+
+  LogDispatchFileRotate = buildPerlPackage {
+    pname = "Log-Dispatch-FileRotate";
+    version = "1.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHOUT/Log-Dispatch-FileRotate-1.36.tar.gz";
+      sha256 = "0vlmi17p7fky3x58rs7r5mdxi6l5jla8zhlb55kvssxc1w5v2b27";
+    };
+    propagatedBuildInputs = [ DateManip LogDispatch ];
+    meta = {
+      description = "Log to Files that Archive/Rotate Themselves";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ PathTiny TestWarn ];
+  };
+
+  Logger = buildPerlPackage {
+    pname = "Log-ger";
+    version = "0.037";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLANCAR/Log-ger-0.037.tar.gz";
+      sha256 = "0f5078g8lkyw09ijpz7dna5xw6yvpd0m283fdrw3s152xmr43qn2";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/Log-ger";
+      description = "A lightweight, flexible logging framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  LogHandler = buildPerlModule {
+    pname = "Log-Handler";
+    version = "0.90";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BL/BLOONIX/Log-Handler-0.90.tar.gz";
+      sha256 = "0kgp3frz0y51j8kw67d6b4yyrrbh7syqraxchc7pfm442bkq0p1s";
+    };
+    propagatedBuildInputs = [ ParamsValidate ];
+    meta = {
+      description = "Log messages to several outputs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogMessage = buildPerlPackage {
+    pname = "Log-Message";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Log-Message-0.08.tar.gz";
+      sha256 = "bd697dd62aaf26d118e9f0a0813429deb1c544e4501559879b61fcbdfe99fe46";
+    };
+    meta = {
+      description = "Powerful and flexible message logging mechanism";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogMessageSimple = buildPerlPackage {
+     pname = "Log-Message-Simple";
+     version = "0.10";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/B/BI/BINGOS/Log-Message-Simple-0.10.tar.gz";
+       sha256 = "15nxi935nfrf8dkdrgvcrf2qlai4pbz03yj8sja0n9mcq2jd24ma";
+     };
+     propagatedBuildInputs = [ LogMessage ];
+     meta = {
+       description = "Simplified interface to Log::Message";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LogTrace = buildPerlPackage {
+    pname = "Log-Trace";
+    version = "1.070";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BB/BBC/Log-Trace-1.070.tar.gz";
+      sha256 = "1qrnxn9b05cqyw1286djllnj8wzys10754glxx6z5hihxxc85jwy";
+    };
+  };
+
+  MCE = buildPerlPackage {
+     pname = "MCE";
+     version = "1.874";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MA/MARIOROY/MCE-1.874.tar.gz";
+       sha256 = "1l6khsmwzfr88xb81kdvmdskxgz3pm4yz2ybxkbml4bmhh0y62fq";
+     };
+     meta = {
+       description = "Many-Core Engine for Perl providing parallel processing capabilities";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/marioroy/mce-perl";
+     };
+  };
+
+  LogLog4perl = buildPerlPackage {
+    pname = "Log-Log4perl";
+    version = "1.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/Log-Log4perl-1.53.tar.gz";
+      sha256 = "13n39byny3yif3x6nrj9iriw8jhbhxqavwrrlm277v3f066v9gwg";
+    };
+    meta = {
+      homepage = "https://mschilli.github.io/log4perl/";
+      description = "Log4j implementation for Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogDispatchArray = buildPerlPackage {
+    pname = "Log-Dispatch-Array";
+    version = "1.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Log-Dispatch-Array-1.003.tar.gz";
+      sha256 = "0dvzp0gsh17jqg02460ndchyapr1haahndq1p9v6mwkv5wf9680c";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ LogDispatch ];
+    meta = {
+      homepage = "https://github.com/rjbs/log-dispatch-array";
+      description = "Log events to an array (reference)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogDispatchouli = buildPerlPackage {
+    pname = "Log-Dispatchouli";
+    version = "2.022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Log-Dispatchouli-2.022.tar.gz";
+      sha256 = "2a2a4176adafb85a1eb9c9dc389052919e8c2c9df99aaba538c06b8da964a5df";
+    };
+    buildInputs = [ TestDeep TestFatal ];
+    propagatedBuildInputs = [ LogDispatchArray StringFlogger SubExporterGlobExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/Log-Dispatchouli";
+      description = "A simple wrapper around Log::Dispatch";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogJournald = buildPerlModule rec {
+    pname = "Log-Journald";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LK/LKUNDRAK/Log-Journald-0.30.tar.gz";
+      sha256 = "55992cf9a1e1fb833f428300525bfa7cf7ed46b83ec414f82a091789b37d08a3";
+    };
+    buildInputs = [ pkgs.pkg-config pkgs.systemd ];
+    postPatch = ''
+      substituteInPlace Build.PL \
+        --replace "libsystemd-journal" "libsystemd"
+    '';
+    meta = {
+      description = "Send messages to a systemd journal";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LogLogLite = buildPerlPackage {
+    pname = "Log-LogLite";
+    version = "0.82";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RANI/Log-LogLite-0.82.tar.gz";
+      sha256 = "0sqsa4750wvhw4cjmxpxqg30i1jjcddadccflisrdb23qn5zn285";
+    };
+    propagatedBuildInputs = [ IOLockedFile ];
+    meta = {
+      description = "Helps us create simple logs for our application";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LongJump = buildPerlPackage {
+    pname = "Long-Jump";
+    version = "0.000001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Long-Jump-0.000001.tar.gz";
+      sha256 = "d5d6456d86992b559d8f66fc90960f919292cd3803c13403faac575762c77af4";
+    };
+    buildInputs = [ Test2Suite ];
+    meta = {
+      description = "Mechanism for returning to a specific point from a deeply nested stack";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LWP = buildPerlPackage {
+    pname = "libwww-perl";
+    version = "6.49";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-6.49.tar.gz";
+      sha256 = "19k0cg4j4qz005a4ngy48z4r8dc99dxlpq8kvj7qnk15mvgd1r63";
+    };
+    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 = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+      substituteInPlace Makefile.PL --replace 'if has_module' 'if 0; #'
+    '';
+    doCheck = !stdenv.isDarwin;
+    meta = with lib; {
+      description = "The World-Wide Web library for Perl";
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFatal TestNeeds TestRequiresInternet ];
+  };
+
+  LWPAuthenOAuth = buildPerlPackage {
+    pname = "LWP-Authen-OAuth";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TIMBRODY/LWP-Authen-OAuth-1.02.tar.gz";
+      sha256 = "e78e0bd7de8002cfb4760073258d555ef55b2c27c07a94b3d8a2166a17fd96bc";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "Generate signed OAuth requests";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LWPMediaTypes = buildPerlPackage {
+    pname = "LWP-MediaTypes";
+    version = "6.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-6.04.tar.gz";
+      sha256 = "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg";
+    };
+    meta = {
+      description = "Guess media type for a file or a URL";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFatal ];
+  };
+
+  LWPProtocolConnect = buildPerlPackage {
+    pname = "LWP-Protocol-connect";
+    version = "6.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BE/BENNING/LWP-Protocol-connect-6.09.tar.gz";
+      sha256 = "9f252394775e23aa42c3176611e5930638ab528d5190110b4731aa5b0bf35a15";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ LWPProtocolHttps ];
+    meta = {
+      description = "Provides HTTP/CONNECT proxy support for LWP::UserAgent";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LWPProtocolHttps = buildPerlPackage {
+    pname = "LWP-Protocol-https";
+    version = "6.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/LWP-Protocol-https-6.09.tar.gz";
+      sha256 = "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn";
+    };
+    patches = [ ../development/perl-modules/lwp-protocol-https-cert-file.patch ];
+    propagatedBuildInputs = [ IOSocketSSL LWP ];
+    doCheck = false; # tries to connect to https://www.apache.org/.
+    meta = {
+      description = "Provide https support for LWP::UserAgent";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestRequiresInternet ];
+  };
+
+  LWPProtocolhttp10 = buildPerlPackage {
+     pname = "LWP-Protocol-http10";
+     version = "6.03";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/G/GA/GAAS/LWP-Protocol-http10-6.03.tar.gz";
+       sha256 = "1lxq40qfwfai9ryhzhsdnycc4189c8kfl43rf7qq34fmz48skzzk";
+     };
+     propagatedBuildInputs = [ LWP ];
+     meta = {
+       description = "Legacy HTTP/1.0 support for LWP";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  LWPUserAgentCached = buildPerlPackage {
+    pname = "LWP-UserAgent-Cached";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OL/OLEG/LWP-UserAgent-Cached-0.08.tar.gz";
+      hash = "sha256-Pc5atMeAQWVs54Vk92Az5b0ew4b1TS57MHQK5I7nh8M=";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "LWP::UserAgent with simple caching mechanism";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  LWPUserAgentDNSHosts = buildPerlModule {
+    pname = "LWP-UserAgent-DNS-Hosts";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MASAKI/LWP-UserAgent-DNS-Hosts-0.14.tar.gz";
+      sha256 = "07w741r98synwnrh9hkv47wr67arhr2bmnvb6s5zqvq87x27jscr";
+    };
+    propagatedBuildInputs = [ LWP ScopeGuard ];
+    buildInputs = [ ModuleBuildTiny TestFakeHTTPD TestSharedFork TestTCP TestUseAllModules ];
+    meta = {
+      description = "Override LWP HTTP/HTTPS request's host like /etc/hosts";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/masaki/p5-LWP-UserAgent-DNS-Hosts";
+    };
+  };
+
+  LWPUserAgentDetermined = buildPerlPackage {
+    pname = "LWP-UserAgent-Determined";
+    version = "1.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/LWP-UserAgent-Determined-1.07.tar.gz";
+      sha256 = "06d8d50e8cd3692a11cb4fb44a2f84e5476a98f0e2e6a4a0dfce9f67e55ddb53";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "A virtual browser that retries errors";
+    };
+  };
+
+  LWPUserAgentMockable = buildPerlModule {
+    pname = "LWP-UserAgent-Mockable";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJEMMESON/LWP-UserAgent-Mockable-1.18.tar.gz";
+      sha256 = "0923ahl22c0gdzrihj7dqnrawia9hmcl462asf4ry8d5wd84z1i5";
+    };
+    propagatedBuildInputs = [ HookLexWrap LWP SafeIsa ];
+    # Tests require network connectivity
+    # https://rt.cpan.org/Public/Bug/Display.html?id=63966 is the bug upstream,
+    # which doesn't look like it will get fixed anytime soon.
+    doCheck = false;
+    buildInputs = [ ModuleBuildTiny TestRequiresInternet ];
+  };
+
+  LWPxParanoidAgent = buildPerlPackage {
+    pname = "LWPx-ParanoidAgent";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-1.12.tar.gz";
+      sha256 = "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c";
+    };
+    doCheck = false; # 3 tests fail, probably because they try to connect to the network
+    propagatedBuildInputs = [ LWP NetDNS ];
+  };
+
+  maatkit = callPackage ../development/perl-modules/maatkit { };
+
+  MacPasteboard = buildPerlPackage {
+    pname = "Mac-Pasteboard";
+    version = "0.011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WY/WYANT/Mac-Pasteboard-0.011.tar.gz";
+      sha256 = "1a82pacp6pph3y2agdihzr4vc0phx85mq5am9czc81g8n484b35x";
+    };
+    meta = with lib; {
+      description = "Manipulate Mac OS X pasteboards";
+      license = with licenses; [ artistic1 gpl1Plus ];
+      platforms = platforms.darwin;
+    };
+    buildInputs = [ pkgs.darwin.apple_sdk.frameworks.ApplicationServices ];
+  };
+
+  MailAuthenticationResults = buildPerlPackage {
+    pname = "Mail-AuthenticationResults";
+    version = "1.20200824.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-AuthenticationResults-1.20200824.1.tar.gz";
+      sha256 = "16hyl631yk1d5g3jns0n4mkjawlzqnf003brnk6qc3mbkziaifik";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      description = "Object Oriented Authentication-Results Headers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ JSON ];
+  };
+
+  MailMaildir = buildPerlPackage {
+    version = "1.0.0";
+    pname = "Mail-Maildir";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEROALTI/Mail-Maildir-100/Mail-Maildir-1.0.0.tar.bz2";
+      sha256 = "1krkqfps6q3ifrhi9450l5gm9199qyfcm6vidllr0dv65kdaqpj4";
+    };
+  };
+
+  MailBox = buildPerlPackage {
+    version = "3.009";
+    pname = "Mail-Box";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/Mail-Box-3.009.tar.gz";
+      sha256 = "0rcig7mzp8c5r4dxnynjaryyv4claljraxl44gn1kj8l1rmj31ci";
+    };
+
+    doCheck = false;
+
+    propagatedBuildInputs = [ DevelGlobalDestruction FileRemove Later MailTransport ];
+  };
+
+  MailMboxMessageParser = buildPerlPackage {
+    pname = "Mail-Mbox-MessageParser";
+    version = "1.5111";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCOPPIT/Mail-Mbox-MessageParser-1.5111.tar.gz";
+      sha256 = "5723c0aa9cc10bab9ed1e3bfd9d5c95f7159e71c1a475414eb1af1dee3a46237";
+    };
+    buildInputs = [ FileSlurper TestCompile TestPod TestPodCoverage TextDiff UNIVERSALrequire URI ];
+    propagatedBuildInputs = [ FileHandleUnget ];
+    meta = {
+      homepage = "https://github.com/coppit/mail-mbox-messageparser";
+      description = "A fast and simple mbox folder reader";
+      license = lib.licenses.gpl2;
+      maintainers = with maintainers; [ romildo ];
+    };
+  };
+
+  MailMessage = buildPerlPackage {
+     pname = "Mail-Message";
+     version = "3.010";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MA/MARKOV/Mail-Message-3.010.tar.gz";
+       sha256 = "04wblxrkcjwn7hw6vkvf307lbpc9blj1glqmm59q3642wcd4nhaq";
+     };
+     propagatedBuildInputs = [ IOStringy MIMETypes MailTools URI UserIdentity ];
+     meta = {
+       description = "Processing MIME messages";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MailDKIM = buildPerlPackage rec {
+    pname = "Mail-DKIM";
+    version = "1.20200907";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DKIM-1.20200907.tar.gz";
+      sha256 = "1x8v4pa0447c1xqri1jn96i8vlyjpl6jmz63nb1vifbp16yi3zxb";
+    };
+    propagatedBuildInputs = [ CryptOpenSSLRSA MailAuthenticationResults MailTools NetDNS ];
+    doCheck = false; # tries to access the domain name system
+    buildInputs = [ NetDNSResolverMock TestRequiresInternet YAMLLibYAML ];
+  };
+
+  MailIMAPClient = buildPerlPackage {
+    pname = "Mail-IMAPClient";
+    version = "3.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLOBBES/Mail-IMAPClient-3.42.tar.gz";
+      sha256 = "0znf035ikaxyfishv507qq6g691xvbnziqlcwfikkj2l1kan88hw";
+    };
+    propagatedBuildInputs = [ ParseRecDescent ];
+  };
+
+  MailPOP3Client = buildPerlPackage {
+    pname = "Mail-POP3Client";
+    version = "2.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SD/SDOWD/Mail-POP3Client-2.19.tar.gz";
+      sha256 = "1142d6247a93cb86b23ed8835553bb2d227ff8213ee2743e4155bb93f47acb59";
+    };
+    meta = {
+      description = "Perl 5 module to talk to a POP3 (RFC1939) server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MailRFC822Address = buildPerlPackage {
+    pname = "Mail-RFC822-Address";
+    version = "0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PD/PDWARREN/Mail-RFC822-Address-0.3.tar.gz";
+      sha256 = "351ef4104ecb675ecae69008243fae8243d1a7e53c681eeb759e7b781684c8a7";
+    };
+  };
+
+  MailSender = buildPerlPackage {
+    pname = "Mail-Sender";
+    version = "0.903";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CAPOEIRAB/Mail-Sender-0.903.tar.gz";
+      sha256 = "4413eb49f520a8318151811ccb05a8d542973aada20aa503ad32f9ffc98a39bf";
+    };
+    meta = {
+      homepage = "https://github.com/Perl-Email-Project/Mail-Sender";
+      description = "(DEPRECATED) module for sending mails with attachments through an SMTP server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MailSendmail = buildPerlPackage {
+    pname = "Mail-Sendmail";
+    version = "0.80";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Mail-Sendmail-0.80.tar.gz";
+      sha256 = "1r38qbkj7jwj8cqy1rnqzkk81psxi08b1aiq392817f3bk5ri2jv";
+    };
+    # The test suite simply loads the module and attempts to send an email to
+    # the module's author, the latter of which is a) more of an integration
+    # test, b) impossible to verify, and c) won't work from a sandbox. Replace
+    # it in its entirety with the following simple smoke test.
+    checkPhase = ''
+      perl -I blib/lib -MMail::Sendmail -e 'print "1..1\nok 1\n"'
+    '';
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "Simple platform independent mailer";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MailSPF = buildPerlPackage {
+    pname = "Mail-SPF";
+    version = "2.9.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-v2.9.0.tar.gz";
+      sha256 = "61cb5915f1c7acc7a931ffc1bfc1291bdfac555e2a46eb2391b995ea9ecb6162";
+    };
+    # remove this patch patches = [ ../development/perl-modules/Mail-SPF.patch ];
+
+    buildInputs = [ ModuleBuild NetDNSResolverProgrammable ];
+    propagatedBuildInputs = [ Error NetAddrIP NetDNS URI ];
+
+    buildPhase = "perl Build.PL --install_base=$out --install_path=\"sbin=$out/bin\" --install_path=\"lib=$out/${perl.libPrefix}\"; ./Build build ";
+
+    doCheck = false; # The main test performs network access
+    meta = {
+      description = "An object-oriented implementation of Sender Policy Framework";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+
+  MailTools = buildPerlPackage {
+    pname = "MailTools";
+    version = "2.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/MailTools-2.21.tar.gz";
+      sha256 = "1js43bp2dnd8n2rv8clsv749166jnyqnc91k4wkkmw5n4rlbvnaa";
+    };
+    propagatedBuildInputs = [ TimeDate ];
+    meta = {
+      description = "Various e-mail related modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MailTransport = buildPerlPackage {
+     pname = "Mail-Transport";
+     version = "3.005";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MA/MARKOV/Mail-Transport-3.005.tar.gz";
+       sha256 = "18wna71iyrgn63l7samacvnx2a5ydpcffkg313c8a4jwf0zvkp6h";
+     };
+     propagatedBuildInputs = [ MailMessage ];
+     meta = {
+       description = "Email message exchange";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MathBase85 = buildPerlPackage {
+    pname = "Math-Base85";
+    version = "0.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PT/PTC/Math-Base85-0.4.tar.gz";
+      sha256 = "03cbp5ls98zcj183wjzlzjcrhbc96mw3p1hagzy1yplj1xh5ia4y";
+    };
+    meta = {
+      description = "Perl extension for base 85 numbers, as referenced by RFC 1924";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MathBaseConvert = buildPerlPackage {
+    pname = "Math-Base-Convert";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKER/Math-Base-Convert-0.11.tar.gz";
+      sha256 = "8c0971355f24c93b79e77ad54a4570090a1a598fcb9b86f5c17eba42f38b40e0";
+    };
+  };
+
+  MathLibm = buildPerlPackage {
+    pname = "Math-Libm";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSLEWART/Math-Libm-1.00.tar.gz";
+      sha256 = "0xn2a950mzzs5q1c4q98ckysn9dz20x7r35g02zvk35chgr0klxz";
+    };
+  };
+
+  MathCalcParser = buildPerlPackage {
+    pname = "Math-Calc-Parser";
+    version = "1.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Math-Calc-Parser-1.005.tar.gz";
+      sha256 = "afc3eb496ab3a3a301b3437af07e197eb743c06090f0101dacf820302f2b7f75";
+    };
+    buildInputs = [ TestNeeds ];
+    meta = {
+      homepage = "https://github.com/Grinnz/Math-Calc-Parser";
+      description = "Parse and evaluate mathematical expressions";
+      license = lib.licenses.artistic2;
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MathCalcUnits = buildPerlPackage {
+    pname = "Math-Calc-Units";
+    version = "1.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SF/SFINK/Math-Calc-Units-1.07.tar.gz";
+      sha256 = "13wgbxv2fmigdj0vf7nwkq1y2q07jgfj8wdrpqkywfxv4zdwzqv1";
+    };
+    meta = {
+      description = "Human-readable unit-aware calculator";
+      license = with lib.licenses; [ artistic1 gpl2 ];
+    };
+  };
+
+  MathBigInt = buildPerlPackage {
+    pname = "Math-BigInt";
+    version = "1.999818";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PJ/PJACKLAM/Math-BigInt-1.999818.tar.gz";
+      sha256 = "b27634356ce2af9b7c0123ac8395a89a32fb15aeae82fcd39de8156cad278c15";
+    };
+    meta = {
+      description = "Arbitrary size integer/float math package";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MathBigIntGMP = buildPerlPackage {
+    pname = "Math-BigInt-GMP";
+    version = "1.6007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PJ/PJACKLAM/Math-BigInt-GMP-1.6007.tar.gz";
+      sha256 = "07y0akadx2nm1bsp17v12785s3ni1l5qyqkk4q3pxcyc41nmwwjx";
+    };
+    buildInputs = [ pkgs.gmp ];
+    doCheck = false;
+    NIX_CFLAGS_COMPILE = "-I${pkgs.gmp.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
+    propagatedBuildInputs = [ MathBigInt ];
+  };
+
+  MathBigIntLite = buildPerlPackage {
+     pname = "Math-BigInt-Lite";
+     version = "0.19";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/P/PJ/PJACKLAM/Math-BigInt-Lite-0.19.tar.gz";
+       sha256 = "06hm4vgihxr7m4jrq558phnnxy4am6ifba447j0h4p6jym5h7xih";
+     };
+     propagatedBuildInputs = [ MathBigInt ];
+     meta = {
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MathClipper = buildPerlModule {
+    pname = "Math-Clipper";
+    version = "1.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHELDRAKE/Math-Clipper-1.29.tar.gz";
+      sha256 = "14vmz1x8hwnlk239dcsh0n39kd7cd7v5g1iikgbyjvc66gqw89sk";
+    };
+    nativeBuildInputs = [ pkgs.ld-is-cc-hook ];
+    buildInputs = [ ExtUtilsCppGuess ExtUtilsTypemapsDefault ExtUtilsXSpp ModuleBuildWithXSpp TestDeep ];
+  };
+
+  MathConvexHullMonotoneChain = buildPerlPackage {
+    pname = "Math-ConvexHull-MonotoneChain";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Math-ConvexHull-MonotoneChain-0.01.tar.gz";
+      sha256 = "1xcl7cz62ydddji9qzs4xsfxss484jqjlj4iixa4aci611cw92r8";
+    };
+  };
+
+  MathFibonacci = buildPerlPackage {
+    pname = "Math-Fibonacci";
+    version = "1.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPUL/Math-Fibonacci-1.5.tar.gz";
+      sha256 = "70a8286e94558df99dc92f52d83e1e20a7b8f7852bcc3a1de7d9e338260b99ba";
+    };
+    meta = {
+      description = "This module provides a few functions related to Fibonacci numbers";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  MathGMP = buildPerlPackage {
+    pname = "Math-GMP";
+    version = "2.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Math-GMP-2.20.tar.gz";
+      sha256 = "0psmpj3j8cw02b5bzb7qnkd4rcpxm82891rwpdi2hx2jxy0mznhn";
+    };
+    buildInputs = [ pkgs.gmp AlienGMP ];
+    NIX_CFLAGS_COMPILE = "-I${pkgs.gmp.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
+    meta = {
+      description = "High speed arbitrary size integer math";
+      license = with lib.licenses; [ lgpl21Plus ];
+    };
+  };
+
+  MathGMPz = buildPerlPackage {
+    pname = "Math-GMPz";
+    version = "0.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SI/SISYPHUS/Math-GMPz-0.48.tar.gz";
+      sha256 = "f4459ed32fb9bb793e2504fd442c515fd468a4a34d2a1f98e46ca41e275c73cb";
+    };
+    buildInputs = [ pkgs.gmp ];
+    NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
+    meta = {
+      homepage = "https://github.com/sisyphus/math-gmpz";
+      description = "Perl interface to the GMP integer functions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MathGeometryVoronoi = buildPerlPackage {
+    pname = "Math-Geometry-Voronoi";
+    version = "1.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAMTREGAR/Math-Geometry-Voronoi-1.3.tar.gz";
+      sha256 = "0b206k2q5cznld45cjhgm0as0clc9hk135ds8qafbkl3k175w1vj";
+    };
+    propagatedBuildInputs = [ ClassAccessor ParamsValidate ];
+  };
+
+  MathInt128 = buildPerlPackage {
+    pname = "Math-Int128";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Math-Int128-0.22.tar.gz";
+      sha256 = "1g0ra7ldv4fz3kqqg45dlrfavi2abfmlhf0py5ank1jk2x0clc56";
+    };
+    propagatedBuildInputs = [ MathInt64 ];
+    meta = {
+      description = "Manipulate 128 bits integers in Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.is32bit; # compiler doesn't support a 128-bit integer type
+    };
+  };
+
+  MathInt64 = buildPerlPackage {
+    pname = "Math-Int64";
+    version = "0.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Math-Int64-0.54.tar.gz";
+      sha256 = "0lfkc0cry65lnsi28gjyz2kvdkanbhhpc0pyrswsczj3k3k53z6w";
+    };
+    meta = {
+      description = "Manipulate 64 bits integers in Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MathPari = buildPerlPackage rec {
+    pname = "Math-Pari";
+    version = "2.030518";
+    nativeBuildInputs = [ pkgs.unzip ];
+    pariversion = "2.1.7";
+    pari_tgz = fetchurl {
+      url = "https://pari.math.u-bordeaux.fr/pub/pari/OLD/2.1/pari-${pariversion}.tgz";
+      sha256 = "1yjml5z1qdn258qh6329v7vib2gyx6q2np0s5ybci0rhmz6z4hli";
+    };
+    preConfigure = "cp ${pari_tgz} pari-${pariversion}.tgz";
+    makeMakerFlags = "pari_tgz=pari-${pariversion}.tgz";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILYAZ/modules/Math-Pari-2.030518.zip";
+      sha256 = "dc38955a9690be6bafa8de2526212377c3ec9fe8da5ec02263a9caf94b58bb91";
+    };
+    meta = {
+      description = "Perl interface to PARI";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MathPlanePath = buildPerlPackage {
+    pname = "Math-PlanePath";
+    version = "129";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/Math-PlanePath-129.tar.gz";
+      sha256 = "0zirgq9n422wc1j95pijkr88wwmzhll5nxh3sb2vcxsh9l75v8cd";
+    };
+    propagatedBuildInputs = [ MathLibm constant-defer ];
+    buildInputs = [ DataFloat MathBigIntLite NumberFraction ];
+  };
+
+  MathPrimeUtil = buildPerlPackage {
+    pname = "Math-Prime-Util";
+    version = "0.73";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANAJ/Math-Prime-Util-0.73.tar.gz";
+      sha256 = "4afa6dd8cdb97499bd4eca6925861812c29d9f5a0f1ac27ad9d2d9c9b5602894";
+    };
+    propagatedBuildInputs = [ MathPrimeUtilGMP ];
+    meta = {
+      homepage = "https://github.com/danaj/Math-Prime-Util";
+      description = "Utilities related to prime numbers, including fast sieves and factoring";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+    buildInputs = [ TestWarn ];
+  };
+
+  MathPrimeUtilGMP = buildPerlPackage {
+    pname = "Math-Prime-Util-GMP";
+    version = "0.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANAJ/Math-Prime-Util-GMP-0.52.tar.gz";
+      sha256 = "2697c7fd5c7e35fdec7f50ed56a67be807a2f22657589e637dad3592744003be";
+    };
+    buildInputs = [ pkgs.gmp ];
+    NIX_CFLAGS_COMPILE = "-I${pkgs.gmp.dev}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.gmp.out}/lib -lgmp";
+    meta = {
+      homepage = "https://github.com/danaj/Math-Prime-Util-GMP";
+      description = "Utilities related to prime numbers, using GMP";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MathProvablePrime = buildPerlPackage {
+    pname = "Math-ProvablePrime";
+    version = "0.045";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FELIPE/Math-ProvablePrime-0.045.tar.gz";
+      sha256 = "32dce42861ce065a875a91ec14c6557e89af07df10cc450d1c4ded13dcbe3dd5";
+    };
+    buildInputs = [ FileWhich TestClass TestDeep TestException TestNoWarnings ];
+    propagatedBuildInputs = [ BytesRandomSecureTiny ];
+    meta = {
+      description = "Generate a provable prime number, in pure Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MathRandom = buildPerlPackage {
+    pname = "Math-Random";
+    version = "0.72";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GROMMEL/Math-Random-0.72.tar.gz";
+      sha256 = "0k15pk2qx9wrp5xqzhymm1ph4nb314ysrsyr0pjnvn8ii0r241dy";
+    };
+    meta = {
+    };
+  };
+
+  MathRandomISAAC = buildPerlPackage {
+    pname = "Math-Random-ISAAC";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JAWNSY/Math-Random-ISAAC-1.004.tar.gz";
+      sha256 = "0z1b3xbb3xz71h25fg6jgsccra7migq7s0vawx2rfzi0pwpz0wr7";
+    };
+    buildInputs = [ TestNoWarnings ];
+    meta = {
+      description = "Perl interface to the ISAAC PRNG algorithm";
+      license = with lib.licenses; [ publicDomain mit artistic2 gpl3 ];
+    };
+  };
+
+  MathRandomMTAuto = buildPerlPackage {
+    pname = "Math-Random-MT-Auto";
+    version = "6.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JD/JDHEDDEN/Math-Random-MT-Auto-6.23.tar.gz";
+      sha256 = "04v3fxbqg6bs7dpljw64v62jqb10l2xdrln4l3slz5k266nvbg2q";
+    };
+    propagatedBuildInputs = [ ObjectInsideOut ];
+    meta = {
+      description = "Auto-seeded Mersenne Twister PRNGs";
+      license = "unrestricted";
+    };
+  };
+
+  MathRandomSecure = buildPerlPackage {
+    pname = "Math-Random-Secure";
+    version = "0.080001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/Math-Random-Secure-0.080001.tar.gz";
+      sha256 = "0dgbf4ncll4kmgkyb9fsaxn0vf2smc9dmwqzgh3259zc2zla995z";
+    };
+    buildInputs = [ ListMoreUtils TestSharedFork TestWarn ];
+    propagatedBuildInputs = [ CryptRandomSource MathRandomISAAC ];
+    meta = {
+      description = "Cryptographically-secure, cross-platform replacement for rand()";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  MathRound = buildPerlPackage {
+    pname = "Math-Round";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GROMMEL/Math-Round-0.07.tar.gz";
+      sha256 = "09wkvqj4hfq9y0fimri967rmhnq90dc2wf20lhlmqjp5hsd359vk";
+    };
+  };
+
+  MathVecStat = buildPerlPackage {
+    pname = "Math-VecStat";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AS/ASPINELLI/Math-VecStat-0.08.tar.gz";
+      sha256 = "03bdcl9pn2bc9b50c50nhnr7m9wafylnb3v21zlch98h9c78x6j0";
+    };
+  };
+
+  MaxMindDBCommon = buildPerlPackage {
+    pname = "MaxMind-DB-Common";
+    version = "0.040001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/MaxMind-DB-Common-0.040001.tar.gz";
+      sha256 = "1mqvnabskhyvi2f10f602gisfk39ws51ky55lixd0033sd5xzikb";
+    };
+    propagatedBuildInputs = [ DataDumperConcise DateTime ListAllUtils MooXStrictConstructor ];
+    meta = {
+      description = "Code shared by the MaxMind DB reader and writer modules";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  MaxMindDBReader = buildPerlPackage {
+    pname = "MaxMind-DB-Reader";
+    version = "1.000014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/MaxMind-DB-Reader-1.000014.tar.gz";
+      sha256 = "1a9rrvarw3q6378w3sqv632w36a9bsh0r90yfa49lzwnkj7hf81q";
+    };
+    propagatedBuildInputs = [ DataIEEE754 DataPrinter DataValidateIP MaxMindDBCommon ];
+    buildInputs = [ PathClass TestBits TestFatal TestNumberDelta TestRequires ];
+    meta = {
+      description = "Read MaxMind DB files and look up IP addresses";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  MaxMindDBReaderXS = buildPerlModule {
+    pname = "MaxMind-DB-Reader-XS";
+    version = "1.000008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/MaxMind-DB-Reader-XS-1.000008.tar.gz";
+      sha256 = "11y71m77y38mi68gw5dqx54z9syvax42x3m9v7mgx35c5z4gpal4";
+    };
+    propagatedBuildInputs = [ pkgs.libmaxminddb MathInt128 MaxMindDBReader ];
+    buildInputs = [ NetWorks PathClass TestFatal TestNumberDelta TestRequires ];
+    meta = {
+      description = "Fast XS implementation of MaxMind DB reader";
+      license = with lib.licenses; [ artistic2 ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.MaxMindDBReaderXS.x86_64-darwin
+    };
+  };
+
+  MaxMindDBWriter = buildPerlModule {
+    pname = "MaxMind-DB-Writer";
+    version = "0.300003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/MaxMind-DB-Writer-0.300003.tar.gz";
+      sha256 = "0gpbrlmxjl45k0wg5v9ghw415hd0fns9fk8ncxzlfyjzjsxgalxs";
+    };
+    propagatedBuildInputs = [ DigestSHA1 MaxMindDBReader MooseXParamsValidate MooseXStrictConstructor NetWorks SerealDecoder SerealEncoder ];
+    buildInputs = [ DevelRefcount JSON TestBits TestDeep TestFatal TestHexDifferences TestRequires TestWarnings ];
+    hardeningDisable = [ "format" ];
+    meta = {
+      description = "Create MaxMind DB database files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.MaxMindDBWriter.x86_64-darwin
+    };
+  };
+
+  Memoize = buildPerlPackage {
+    pname = "Memoize";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJD/Memoize-1.03.tgz";
+      sha256 = "5239cc5f644a50b0de9ffeaa51fa9991eb06ecb1bf4678873e3ab89af9c0daf3";
+    };
+  };
+
+  MemoizeExpireLRU = buildPerlPackage {
+     pname = "Memoize-ExpireLRU";
+     version = "0.56";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Memoize-ExpireLRU-0.56.tar.gz";
+       sha256 = "1xnp3jqabl4il5kfadlqimbxhzsbm7gpwrgw0m5s5fdsrc0n70zf";
+     };
+     meta = {
+       description = "Expiry plug-in for Memoize that adds LRU cache expiration";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/Memoize-ExpireLRU";
+     };
+  };
+
+  Menlo = buildPerlPackage {
+    pname = "Menlo";
+    version = "1.9019";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Menlo-1.9019.tar.gz";
+      sha256 = "3b573f68e7b3a36a87c860be258599330fac248b518854dfb5657ac483dca565";
+    };
+    propagatedBuildInputs = [ CPANCommonIndex CPANMetaCheck CaptureTiny ExtUtilsHelpers ExtUtilsInstallPaths Filepushd HTTPTinyish ModuleCPANfile ParsePMFile StringShellQuote Win32ShellQuote locallib ];
+    meta = {
+      homepage = "https://github.com/miyagawa/cpanminus";
+      description = "A CPAN client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MenloLegacy = buildPerlPackage {
+    pname = "Menlo-Legacy";
+    version = "1.9022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Menlo-Legacy-1.9022.tar.gz";
+      sha256 = "a6acac3fee318a804b439de54acbc7c27f0b44cfdad8551bbc9cd45986abc201";
+    };
+    propagatedBuildInputs = [ Menlo ];
+    meta = {
+      homepage = "https://github.com/miyagawa/cpanminus";
+      description = "Legacy internal and client support for Menlo";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MetaBuilder = buildPerlModule {
+    pname = "Meta-Builder";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Meta-Builder-0.004.tar.gz";
+      sha256 = "acb499aa7206eb9db21eb85357a74521bfe3bdae4a6416d50a7c75b939cf56fe";
+    };
+    buildInputs = [ FennecLite TestException ];
+    meta = {
+      description = "Tools for creating Meta objects to track custom metrics";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MetaCPANClient = buildPerlPackage {
+    pname = "MetaCPAN-Client";
+    version = "2.029000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MICKEY/MetaCPAN-Client-2.029000.tar.gz";
+      sha256 = "0z75qzrr6r9ijp469majavq8la2jbgn1dq02vdm5m6ip7f887n65";
+    };
+
+    # Most tests are online, so we only include offline tests
+    postPatch = ''
+      substituteInPlace Makefile.PL \
+         --replace '"t/*.t t/api/*.t"' \
+        '"t/00-report-prereqs.t t/api/_get.t t/api/_get_or_search.t t/api/_search.t t/entity.t t/request.t t/resultset.t"'
+    '';
+
+    buildInputs = [ LWPProtocolHttps TestFatal TestNeeds ];
+    propagatedBuildInputs = [ IOSocketSSL JSONMaybeXS Moo RefUtil SafeIsa TypeTiny URI ];
+    meta = {
+      homepage = "https://github.com/metacpan/metacpan-client";
+      description = "A comprehensive, DWIM-featured client to the MetaCPAN API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MethodSignaturesSimple = buildPerlPackage {
+    pname = "Method-Signatures-Simple";
+    version = "1.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RH/RHESA/Method-Signatures-Simple-1.07.tar.gz";
+      sha256 = "1p6sf6iyyn73pc89mfr65bzxvbw1ibcsp4j10iv8ik3p353pvkf8";
+    };
+    propagatedBuildInputs = [ DevelDeclare ];
+    meta = {
+      description = "Basic method declarations with signatures, without source filters";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MetricsAny = buildPerlModule {
+    pname = "Metrics-Any";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Metrics-Any-0.06.tar.gz";
+      sha256 = "0dwqzd40f6isb2sxn7lymsp0ism7s4xwfhb2ilavnxx2x3w9sllw";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "abstract collection of monitoring metrics";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  # TODO: use CPAN version
+  MHonArc = buildPerlPackage rec {
+    pname = "MHonArc";
+    version = "2.6.19";
+
+    src = fetchurl {
+      url = "https://www.mhonarc.org/release/MHonArc/tar/MHonArc-${version}.tar.gz";
+      sha256 = "0ll3v93yji334zqp6xfzfxc0127pmjcznmai1l5q6dzawrs2igzq";
+    };
+
+    patches = [ ../development/perl-modules/mhonarc.patch ];
+
+    outputs = [ "out" "dev" ]; # no "devdoc"
+
+    installTargets = [ "install" ];
+
+    meta = with lib; {
+      homepage = "https://www.mhonarc.org/";
+      description = "A mail-to-HTML converter";
+      maintainers = with maintainers; [ lovek323 ];
+      license = licenses.gpl2;
+    };
+  };
+
+  MIMECharset = buildPerlPackage {
+    pname = "MIME-Charset";
+    version = "1.012.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEZUMI/MIME-Charset-1.012.2.tar.gz";
+      sha256 = "878c779c0256c591666bd06c0cde4c0d7820eeeb98fd1183082aee9a1e7b1d13";
+    };
+    meta = {
+      description = "Charset Information for MIME";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  mimeConstruct = buildPerlPackage {
+    pname = "mime-construct";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROSCH/mime-construct-1.11.tar.gz";
+      sha256 = "00wk9950i9q6qwp1vdq9xdddgk54lqd0bhcq2hnijh8xnmhvpmsc";
+    };
+    outputs = [ "out" ];
+    buildInputs = [ ProcWaitStat ];
+  };
+
+  MIMEEncWords = buildPerlPackage {
+    pname = "MIME-EncWords";
+    version = "1.014.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEZUMI/MIME-EncWords-1.014.3.tar.gz";
+      sha256 = "e9afb548611d4e7e6c50b7f06bbd2b1bb2808e37a810deefb537c67af5485238";
+    };
+    propagatedBuildInputs = [ MIMECharset ];
+    meta = {
+      homepage = "https://metacpan.org/pod/MIME::EncWords";
+      description = "Deal with RFC 2047 encoded words (improved)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MIMELite = buildPerlPackage {
+    pname = "MIME-Lite";
+    version = "3.031";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/MIME-Lite-3.031.tar.gz";
+      sha256 = "f1235866482b67f00858b3edaa4ff4cf909ef900f1d15d889948bf9c03a591e0";
+    };
+    propagatedBuildInputs = [ EmailDateFormat ];
+    meta = {
+      description = "Low-calorie MIME generator (DEPRECATED)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MIMELiteHTML = buildPerlPackage {
+    pname = "MIME-Lite-HTML";
+    version = "1.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALIAN/MIME-Lite-HTML-1.24.tar.gz";
+      sha256 = "db603ccbf6653bcd28cfa824d72e511ead019fc8afb9f1854ec872db2d3cd8da";
+    };
+    doCheck = false;
+    propagatedBuildInputs = [ LWP MIMELite ];
+    meta = {
+      description = "Provide routine to transform a HTML page in a MIME-Lite mail";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MIMETools = buildPerlPackage {
+    pname = "MIME-tools";
+    version = "5.509";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSKOLL/MIME-tools-5.509.tar.gz";
+      sha256 = "0wv9rzx5j1wjm01c3dg48qk9wlbm6iyf91j536idk09xj869ymv4";
+    };
+    propagatedBuildInputs = [ MailTools ];
+    buildInputs = [ TestDeep ];
+    meta = {
+      description = "class for parsed-and-decoded MIME message";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MIMETypes = buildPerlPackage {
+    pname = "MIME-Types";
+    version = "2.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/MIME-Types-2.18.tar.gz";
+      sha256 = "1glml03gyj5xkadn3vcxzm06bvi343j1jg6ksz69is9a3yj3bjii";
+    };
+    meta = {
+      description = "Definition of MIME types";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Minion = buildPerlPackage {
+    pname = "Minion";
+    version = "10.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SRI/Minion-10.14.tar.gz";
+      sha256 = "1xs0z61p42qqzqwlag4fci40lzxfy6pdccijgf8wswb2vk6xambg";
+    };
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/mojolicious/minion";
+      description = "A high performance job queue for Perl";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MinionBackendSQLite = buildPerlModule {
+    pname = "Minion-Backend-SQLite";
+    version = "5.0.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Minion-Backend-SQLite-v5.0.4.tar.gz";
+      sha256 = "0xhcsxm3x5v9azmyy12wiwlbpiisq06hgj3yf9ggqx8fp9jqppb1";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ Minion MojoSQLite ];
+    meta = {
+      homepage = "https://github.com/Grinnz/Minion-Backend-SQLite";
+      description = "SQLite backend for Minion job queue";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MinionBackendmysql = buildPerlPackage {
+    pname = "Minion-Backend-mysql";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PR/PREACTION/Minion-Backend-mysql-0.21.tar.gz";
+      sha256 = "0dbq0pmyjcrmdjpsrkr1pxvzvdphn6mb6lk5yyyhm380prwrjahn";
+    };
+    buildInputs = [ Testmysqld ];
+    propagatedBuildInputs = [ Minion Mojomysql ];
+    meta = {
+      homepage = "https://github.com/preaction/Minion-Backend-mysql";
+      description = "MySQL backend for Minion job queue";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MixinLinewise = buildPerlPackage {
+    pname = "Mixin-Linewise";
+    version = "0.108";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz";
+      sha256 = "7df20678474c0973930a472b0c55e3f8e85b7790b68ab18ef618f9c453c8aef2";
+    };
+    propagatedBuildInputs = [ PerlIOutf8_strict SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/mixin-linewise";
+      description = "Write your linewise code for handles; this does the rest";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MLDBM = buildPerlModule {
+    pname = "MLDBM";
+    version = "2.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/MLDBM-2.05.tar.gz";
+      sha256 = "586880ed0c20801abbf6734747e13e0203edefece6ebc4f20ddb5059f02a17a2";
+    };
+    meta = {
+      description = "Store multi-level Perl hash structure in single level tied hash";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MNI-Perllib = callPackage ../development/perl-modules/MNI {};
+
+  Mo = buildPerlPackage {
+     pname = "Mo";
+     version = "0.40";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/T/TI/TINITA/Mo-0.40.tar.gz";
+       sha256 = "1fff81awg9agfawf3wxx0gpf6vgav8w920rmxsbjg30z75943lli";
+     };
+     meta = {
+       description = "Micro Objects. Mo is less.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/ingydotnet/mo-pm";
+     };
+  };
+
+  MockConfig = buildPerlPackage {
+     pname = "Mock-Config";
+     version = "0.03";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RU/RURBAN/Mock-Config-0.03.tar.gz";
+       sha256 = "06q0xkg5cwdwafzmb9rkaa305ddv7vli9gpm6n9jnkyaaxbk9f55";
+     };
+     meta = {
+       description = "temporarily set Config or XSConfig values";
+       license = with lib.licenses; [ artistic1 gpl1Plus artistic2 ];
+     };
+  };
+
+  ModernPerl = buildPerlPackage {
+    pname = "Modern-Perl";
+    version = "1.20200211";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHROMATIC/Modern-Perl-1.20200211.tar.gz";
+      sha256 = "da1c83cee84fab9edb9e31d7f7abac43e1337b2e66015191ec4b6da59298c480";
+    };
+    meta = {
+      homepage = "https://github.com/chromatic/Modern-Perl";
+      description = "Enable all of the features of Modern Perl with one import";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Modulecpmfile = buildPerlModule {
+    pname = "Module-cpmfile";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/Module-cpmfile-0.002.tar.gz";
+      sha256 = "18dxc5wgds1way0dvd6dx5rhc2siyaa38nhpy4gb5v7ldnj3yjc8";
+    };
+    buildInputs = [ ModuleBuildTiny ModuleCPANfile Test2Suite ];
+    propagatedBuildInputs = [ YAMLPP ];
+    meta = {
+      homepage = "https://github.com/skaji/cpmfile";
+      description = "Parse cpmfile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  ModuleBuild = buildPerlPackage {
+    pname = "Module-Build";
+    version = "0.4231";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Module-Build-0.4231.tar.gz";
+      sha256 = "05xpn8qg814y49vrih16zfr9iiwb7pmdf57ahjnc2h0p5illq3vy";
+    };
+    meta = {
+      description = "Build and install Perl modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleBuildDeprecated = buildPerlModule {
+    pname = "Module-Build-Deprecated";
+    version = "0.4210";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Module-Build-Deprecated-0.4210.tar.gz";
+      sha256 = "be089313fc238ee2183473aca8c86b55fb3cf44797312cbe9b892d6362621703";
+    };
+    doCheck = false;
+    meta = {
+      description = "A collection of modules removed from Module-Build";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleBuildPluggable = buildPerlModule {
+    pname = "Module-Build-Pluggable";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Module-Build-Pluggable-0.10.tar.gz";
+      sha256 = "e5bb2acb117792c984628812acb0fec376cb970caee8ede57535e04d762b0e40";
+    };
+    propagatedBuildInputs = [ ClassAccessorLite ClassMethodModifiers DataOptList ];
+    meta = {
+      homepage = "https://github.com/tokuhirom/Module-Build-Pluggable";
+      description = "Module::Build meets plugins";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestSharedFork ];
+  };
+
+  ModuleBuildPluggableCPANfile = buildPerlModule {
+    pname = "Module-Build-Pluggable-CPANfile";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZEBURO/Module-Build-Pluggable-CPANfile-0.05.tar.gz";
+      sha256 = "4aec6cba240cb6e78016406b6a3a875634cc2aec08ffc5f1572da1cdc40e1e7c";
+    };
+    buildInputs = [ CaptureTiny TestRequires TestSharedFork ];
+    propagatedBuildInputs = [ ModuleBuildPluggable ModuleCPANfile ];
+    meta = {
+      homepage = "https://github.com/kazeburo/Module-Build-Pluggable-CPANfile";
+      description = "Include cpanfile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleBuildPluggablePPPort = buildPerlModule {
+    pname = "Module-Build-Pluggable-PPPort";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Module-Build-Pluggable-PPPort-0.04.tar.gz";
+      sha256 = "44084ba3d8815f343bd391585ac5d8339a4807ce5c0dd84c98db8f310b64c0ea";
+    };
+    buildInputs = [ TestRequires TestSharedFork ];
+    propagatedBuildInputs = [ ModuleBuildPluggable ];
+    meta = {
+      description = "Generate ppport.h";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleBuildTiny = buildPerlModule {
+    pname = "Module-Build-Tiny";
+    version = "0.039";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz";
+      sha256 = "7d580ff6ace0cbe555bf36b86dc8ea232581530cbeaaea09bccb57b55797f11c";
+    };
+    buildInputs = [ FileShareDir ];
+    propagatedBuildInputs = [ ExtUtilsHelpers ExtUtilsInstallPaths ];
+    meta = {
+      description = "A tiny replacement for Module::Build";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleBuildWithXSpp = buildPerlModule {
+    pname = "Module-Build-WithXSpp";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Module-Build-WithXSpp-0.14.tar.gz";
+      sha256 = "0d39fjg9c0n820bk3fb50vvlwhdny4hdl69xmlyzql5xzp4cicsk";
+    };
+    propagatedBuildInputs = [ ExtUtilsCppGuess ExtUtilsXSpp ];
+  };
+
+  ModuleBuildXSUtil = buildPerlModule {
+    pname = "Module-Build-XSUtil";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HI/HIDEAKIO/Module-Build-XSUtil-0.19.tar.gz";
+      sha256 = "004ly9xxjlsbrr2vhxsa1n84z3034gxrzr7z0wl45szd8v1v6qwh";
+    };
+    buildInputs = [ CaptureTiny CwdGuard FileCopyRecursiveReduced ];
+    propagatedBuildInputs = [ DevelCheckCompiler ];
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "A Module::Build class for building XS modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleCompile = buildPerlPackage rec {
+    pname = "Module-Compile";
+    version = "0.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Module-Compile-0.38.tar.gz";
+      sha256 = "8090cfbb61123437eefec3e3bed86005d1f7c5a529fb6fda2ebebc6564b9aa10";
+    };
+    propagatedBuildInputs = [ CaptureTiny DigestSHA1 ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/module-compile-pm";
+      description = "Perl Module Compilation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleCPANTSAnalyse = buildPerlPackage {
+     pname = "Module-CPANTS-Analyse";
+     version = "1.01";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Module-CPANTS-Analyse-1.01.tar.gz";
+       sha256 = "0jf83v9ylw7s9i2zv0l1v11gafp3k4389asc52r6s6q5s2j0p6dx";
+     };
+     propagatedBuildInputs = [ ArchiveAnyLite ArrayDiff DataBinary FileFindObject PerlPrereqScannerNotQuiteLite SoftwareLicense ];
+     buildInputs = [ ExtUtilsMakeMakerCPANfile TestFailWarnings ];
+     meta = {
+       description = "Generate Kwalitee ratings for a distribution";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://cpants.cpanauthors.org";
+     };
+  };
+
+  ModuleCPANfile = buildPerlPackage {
+     pname = "Module-CPANfile";
+     version = "1.1004";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Module-CPANfile-1.1004.tar.gz";
+       sha256 = "08a9a5mybf0llwlfvk7n0q7az6lrrzgzwc3432mcwbb4k8pbxvw8";
+     };
+     meta = {
+       description = "Parse cpanfile";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/cpanfile";
+     };
+    buildInputs = [ Filepushd ];
+  };
+
+  ModuleExtractUse = buildPerlModule {
+     pname = "Module-ExtractUse";
+     version = "0.343";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DO/DOMM/Module-ExtractUse-0.343.tar.gz";
+       sha256 = "00hcggwnqk953s4zbvkcabd5mfidg60hawlqsw6146in91dlclj8";
+     };
+     propagatedBuildInputs = [ ParseRecDescent PodStrip ];
+     buildInputs = [ TestDeep TestNoWarnings ];
+     meta = {
+       description = "Find out what modules are used";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ModuleFind = buildPerlPackage {
+    pname = "Module-Find";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CR/CRENZ/Module-Find-0.15.tar.gz";
+      sha256 = "0pm8v398rv4sy7sn7zzfbq4szxw6p1q4963ancsi17iyzskq4m2w";
+    };
+    meta = {
+      description = "Find and use installed modules in a (sub)category";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleImplementation = buildPerlPackage {
+    pname = "Module-Implementation";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Module-Implementation-0.09.tar.gz";
+      sha256 = "0vfngw4dbryihqhi7g9ks360hyw8wnpy3hpkzyg0q4y2y091lpy1";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    propagatedBuildInputs = [ ModuleRuntime TryTiny ];
+    meta = {
+      description = "Loads one of several alternate underlying implementations for a module";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  ModuleInfo = buildPerlPackage {
+    pname = "Module-Info";
+    version = "0.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Module-Info-0.37.tar.gz";
+      sha256 = "0j143hqxgdkdpj5qssppq72gjr0n73c4f7is6wgrrcchjx905a4f";
+    };
+    buildInputs = [ TestPod TestPodCoverage ];
+    meta = {
+      description = "Information about Perl modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ BUtils ];
+  };
+
+  ModuleInstall = buildPerlPackage {
+    pname = "Module-Install";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Module-Install-1.19.tar.gz";
+      sha256 = "06q12cm97yh4p7qbm0a2p96996ii6ss59qy57z0f7f9svy6sflqs";
+    };
+    propagatedBuildInputs = [ FileRemove ModuleBuild ModuleScanDeps YAMLTiny ];
+    meta = {
+      description = "Standalone, extensible Perl module installer";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleInstallAuthorRequires = buildPerlPackage {
+    pname = "Module-Install-AuthorRequires";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FL/FLORA/Module-Install-AuthorRequires-0.02.tar.gz";
+      sha256 = "1v2ciw75dj5y8lh10d1vrhwmjx266gpqavr8m21jlpblgm9j2qyc";
+    };
+    propagatedBuildInputs = [ ModuleInstall ];
+    meta = {
+      description = "Declare author-only dependencies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleInstallAuthorTests = buildPerlPackage {
+    pname = "Module-Install-AuthorTests";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Module-Install-AuthorTests-0.002.tar.gz";
+      sha256 = "121dyggy38316xss06v1zkwx4b59gl7b00c5q99xyzimwqnp49a0";
+    };
+    propagatedBuildInputs = [ ModuleInstall ];
+    meta = {
+      description = "Designate tests only run by module authors";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleInstallGithubMeta = buildPerlPackage {
+    pname = "Module-Install-GithubMeta";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Module-Install-GithubMeta-0.30.tar.gz";
+      sha256 = "2ead44c973c748d72d9f199e41c44dc1801fe9ae06b0fadc59447693a3c98281";
+    };
+    buildInputs = [ CaptureTiny ];
+    propagatedBuildInputs = [ ModuleInstall ];
+    meta = {
+      homepage = "https://github.com/bingos/module-install-githubmeta/";
+      description = "A Module::Install extension to include GitHub meta information in META.yml";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ModuleInstallReadmeFromPod = buildPerlPackage {
+    pname = "Module-Install-ReadmeFromPod";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Module-Install-ReadmeFromPod-0.30.tar.gz";
+      sha256 = "79f6df5536619faffbda696bdd25ccad17c469bf32e51cd3e613366d49400169";
+    };
+    buildInputs = [ TestInDistDir ];
+    propagatedBuildInputs = [ CaptureTiny IOAll ModuleInstall PodMarkdown ];
+    meta = {
+      homepage = "https://github.com/bingos/module-install-readmefrompod/";
+      description = "A Module::Install extension to automatically convert POD to a README";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ModuleInstallReadmeMarkdownFromPod = buildPerlPackage {
+    pname = "Module-Install-ReadmeMarkdownFromPod";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATTN/Module-Install-ReadmeMarkdownFromPod-0.04.tar.gz";
+      sha256 = "300b2e244f83b9a54a95f8404c1cd3af0635b4fae974ca65390ee428ec668591";
+    };
+    buildInputs = [ URI ];
+    propagatedBuildInputs = [ ModuleInstall PodMarkdown ];
+    meta = {
+      homepage = "http://search.cpan.org/dist/Module-Install-ReadmeMarkdownFromPod/";
+      description = "Create README.mkdn from POD";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ModuleInstallRepository = buildPerlPackage {
+    pname = "Module-Install-Repository";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Module-Install-Repository-0.06.tar.gz";
+      sha256 = "00e2590d09339ccccbdaa328d12ad8ec77e831a38c9ad663705e59ecbb18722b";
+    };
+    buildInputs = [ PathClass ];
+    meta = {
+      description = "Automatically sets repository URL from svn/svk/Git checkout";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ModuleManifest = buildPerlPackage {
+    pname = "Module-Manifest";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Module-Manifest-1.09.tar.gz";
+      sha256 = "a395f80ff15ea0e66fd6c453844b6787ed4a875a3cd8df9f7e29280250bd539b";
+    };
+    buildInputs = [ TestException TestWarn ];
+    propagatedBuildInputs = [ ParamsUtil ];
+    meta = {
+      description = "Parse and examine a Perl distribution MANIFEST file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModulePath = buildPerlPackage {
+    pname = "Module-Path";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Module-Path-0.19.tar.gz";
+      sha256 = "b33179ce4dd73dfcde7d46808804b9ffbb11db0245fe455a7d001747562feaca";
+    };
+    buildInputs = [ DevelFindPerl ];
+    meta = {
+      homepage = "https://github.com/neilbowers/Module-Path";
+      description = "Get the full path to a locally installed module";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModulePluggable = buildPerlPackage {
+    pname = "Module-Pluggable";
+    version = "5.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SI/SIMONW/Module-Pluggable-5.2.tar.gz";
+      sha256 = "b3f2ad45e4fd10b3fb90d912d78d8b795ab295480db56dc64e86b9fa75c5a6df";
+    };
+    patches = [
+      # !!! merge this patch into Perl itself (which contains Module::Pluggable as well)
+      ../development/perl-modules/module-pluggable.patch
+    ];
+    meta = {
+      description = "Automatically give your module the ability to have plugins";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ AppFatPacker ];
+  };
+
+  ModulePluggableFast = buildPerlPackage {
+    pname = "Module-Pluggable-Fast";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/Module-Pluggable-Fast-0.19.tar.gz";
+      sha256 = "0pq758wlasmh77xyd2xh75m5b2x14s8pnsv63g5356gib1q5gj08";
+    };
+    propagatedBuildInputs = [ UNIVERSALrequire ];
+  };
+
+  ModuleRefresh = buildPerlPackage {
+    pname = "Module-Refresh";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/Module-Refresh-0.17.tar.gz";
+      sha256 = "6b30a6ceddc6512ab4490c16372ecf309a259f2ca147d622e478ac54e08511c3";
+    };
+    buildInputs = [ PathClass ];
+    meta = {
+      description = "Refresh %INC files when updated on disk";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleRuntime = buildPerlModule {
+    pname = "Module-Runtime";
+    version = "0.016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Module-Runtime-0.016.tar.gz";
+      sha256 = "097hy2czwkxlppri32m599ph0xfvfsbf0a5y23a4fdc38v32wc38";
+    };
+    meta = {
+      description = "Runtime module handling";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleRuntimeConflicts = buildPerlPackage {
+    pname = "Module-Runtime-Conflicts";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Module-Runtime-Conflicts-0.003.tar.gz";
+      sha256 = "707cdc75038c70fe91779b888ac050f128565d3967ba96680e1b1c7cc9733875";
+    };
+    propagatedBuildInputs = [ DistCheckConflicts ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/Module-Runtime-Conflicts";
+      description = "Provide information on conflicts for Module::Runtime";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleScanDeps = buildPerlPackage {
+    pname = "Module-ScanDeps";
+    version = "1.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSCHUPP/Module-ScanDeps-1.29.tar.gz";
+      sha256 = "0kl8p0006j52vq4bd59fyv7pm3yyv0h7pwaalrkn4brs6n8wxc7f";
+    };
+    buildInputs = [ TestRequires ];
+    meta = {
+      description = "Recursively scan Perl code for dependencies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleSignature = buildPerlPackage {
+    pname = "Module-Signature";
+    version = "0.87";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AU/AUDREYT/Module-Signature-0.87.tar.gz";
+      sha256 = "214e8055c50fec371a95743520fe26940004e76169063b2b44ec90a0d45d6982";
+    };
+    buildInputs = [ IPCRun ];
+    meta = {
+      description = "Module signature file manipulation";
+      license = lib.licenses.cc0;
+    };
+  };
+
+  ModuleUtil = buildPerlModule {
+    pname = "Module-Util";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATTLAW/Module-Util-1.09.tar.gz";
+      sha256 = "6cfbcb6a45064446ec8aa0ee1a7dddc420b54469303344187aef84d2c7f3e2c6";
+    };
+    meta = {
+      description = "Module name tools and transformations";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ModuleVersions = buildPerlPackage {
+    pname = "Module-Versions";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TH/THW/Module-Versions-0.02.zip";
+      sha256 = "0g7qs6vqg91xpwg1cdy91m3kh9m1zbkzyz1qsy453b572xdscf0d";
+    };
+    buildInputs = [ pkgs.unzip ];
+  };
+
+  ModuleVersionsReport = buildPerlPackage {
+    pname = "Module-Versions-Report";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JESSE/Module-Versions-Report-1.06.tar.gz";
+      sha256 = "a3261d0d84b17678d8c4fd55eb0f892f5144d81ca53ea9a38d75d1a00ad9796a";
+    };
+    meta = {
+      description = "Report versions of all modules in memory";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MojoDOM58 = buildPerlPackage {
+    pname = "Mojo-DOM58";
+    version = "2.000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Mojo-DOM58-2.000.tar.gz";
+      sha256 = "1wsy0j6jpd06gc1ay6isyzqh5cdc834g5w0amslqcjgvf4snlk46";
+    };
+    meta = {
+      description = "Minimalistic HTML/XML DOM parser with CSS selectors";
+      license = with lib.licenses; [ artistic2 ];
+      homepage = "https://github.com/Grinnz/Mojo-DOM58";
+    };
+  };
+
+  mod_perl2 = buildPerlPackage {
+    pname = "mod_perl";
+    version = "2.0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/mod_perl-2.0.11.tar.gz";
+      sha256 = "0x3gq4nz96y202cymgrf56n8spm7bffkd1p74dh9q3zrrlc9wana";
+    };
+
+    patches = [
+      # Fix build on perl-5.34.0, https://github.com/Perl/perl5/issues/18617
+      ../development/perl-modules/mod_perl2-PL_hash_seed.patch
+    ];
+
+    makeMakerFlags = "MP_AP_DESTDIR=$out";
+    buildInputs = [ pkgs.apacheHttpd ];
+    doCheck = false; # would try to start Apache HTTP server
+    meta = {
+      description = "Embed a Perl interpreter in the Apache HTTP server";
+      license = lib.licenses.asl20;
+    };
+
+    passthru.tests = nixosTests.mod_perl;
+  };
+
+  Mojolicious = buildPerlPackage {
+    pname = "Mojolicious";
+    version = "9.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SRI/Mojolicious-9.19.tar.gz";
+      sha256 = "15qs99sl3ckzqwpqk4kawhamdm6160bzxyikf3blym4fn1k6s1a5";
+    };
+    meta = {
+      homepage = "https://mojolicious.org";
+      description = "Real-time web framework";
+      license = lib.licenses.artistic2;
+      maintainers = with maintainers; [ thoughtpolice sgo ];
+    };
+  };
+
+  MojoliciousPluginAssetPack = buildPerlPackage {
+    pname = "Mojolicious-Plugin-AssetPack";
+    version = "2.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SRI/Mojolicious-Plugin-AssetPack-2.13.tar.gz";
+      sha256 = "1254yy70c7wv3p64pjyxc2h1p9czs65jm6lzl42qmn1x19i8fggj";
+    };
+    propagatedBuildInputs = [ FileWhich IPCRun3 Mojolicious ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojolicious-plugin-assetpack";
+      description = "Compress and convert css, less, sass, javascript and coffeescript files";
+      license = lib.licenses.artistic2;
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MojoliciousPluginGravatar = buildPerlPackage {
+    pname = "Mojolicious-Plugin-Gravatar";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KO/KOORCHIK/Mojolicious-Plugin-Gravatar-0.04.tar.gz";
+      sha256 = "a49f970c6c70f9930b304a752163cb95f1d998712f79cb13640832e4b7b675dd";
+    };
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      description = "Globally Recognized Avatars for Mojolicious";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MojoliciousPluginMail = buildPerlModule {
+    pname = "Mojolicious-Plugin-Mail";
+    version = "1.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHARIFULN/Mojolicious-Plugin-Mail-1.5.tar.gz";
+      sha256 = "56f0d341ebc3a7acf3919f5add43e98216ea1285aa0d87e7fb00c02bb0eff146";
+    };
+    propagatedBuildInputs = [ MIMEEncWords MIMELite Mojolicious ];
+    meta = {
+      homepage = "https://github.com/sharifulin/Mojolicious-Plugin-Mail";
+      description = "Mojolicious Plugin for send mail";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoliciousPluginOpenAPI = buildPerlPackage {
+    pname = "Mojolicious-Plugin-OpenAPI";
+    version = "4.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Mojolicious-Plugin-OpenAPI-4.02.tar.gz";
+      sha256 = "0rkkkcd3y3gjj0kis0hrab6mz8rk1qd57nz4npy39bag6h1kpyfv";
+    };
+    propagatedBuildInputs = [ JSONValidator ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojolicious-plugin-openapi";
+      description = "OpenAPI / Swagger plugin for Mojolicious";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoliciousPluginStatus = buildPerlPackage {
+    pname = "Mojolicious-Plugin-Status";
+    version = "1.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SRI/Mojolicious-Plugin-Status-1.17.tar.gz";
+      sha256 = "1d475ch43vbfn3h4lsmr3n6rhgxgz670xqj4rcdjd4g1wfpiyasc";
+    };
+    propagatedBuildInputs = [ BSDResource CpanelJSONXS FileMap Mojolicious Sereal ];
+    meta = {
+      homepage = "https://github.com/mojolicious/mojo-status";
+      description = "Mojolicious server status plugin";
+      license = with lib.licenses; [ artistic2 ];
+      maintainers = [ maintainers.thoughtpolice ];
+    };
+  };
+
+  MojoliciousPluginSyslog = buildPerlPackage {
+    pname = "Mojolicious-Plugin-Syslog";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Mojolicious-Plugin-Syslog-0.05.tar.gz";
+      sha256 = "sha256-G5Ur6EJ00gAeawLkqw93Et8O4wiPk2qFRlQofh0BPp8=";
+    };
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojolicious-plugin-syslog";
+      description = "A plugin for enabling a Mojolicious app to log to syslog";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoliciousPluginTextExceptions = buildPerlPackage {
+    pname = "Mojolicious-Plugin-TextExceptions";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/Mojolicious-Plugin-TextExceptions-0.02.tar.gz";
+      sha256 = "0x7qkd9nmarzb7kvk4dvhka4s44mfcd026zz3ikfwk3qql2p86rs";
+    };
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/marcusramberg/mojolicious-plugin-textexceptions";
+      description = "Render exceptions as text in command line user agents";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoliciousPluginWebpack = buildPerlPackage {
+    pname = "Mojolicious-Plugin-Webpack";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Mojolicious-Plugin-Webpack-1.01.tar.gz";
+      sha256 = "1w6dr7yb8lvvx5z2xsmshp2cf4b7dynv05yhq0rk7zwif5v6gsvm";
+    };
+    propagatedBuildInputs = [ Mojolicious Filechdir ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojolicious-plugin-webpack";
+      description = "Mojolicious <3 Webpack";
+      license = lib.licenses.artistic2;
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  MojoRedis = buildPerlPackage {
+    pname = "Mojo-Redis";
+    version = "3.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Mojo-Redis-3.25.tar.gz";
+      sha256 = "17xxhfavj9j1pzjpxf1j72rq3vm2vj0j4h62088l64v11cs86zig";
+    };
+    propagatedBuildInputs = [ Mojolicious ProtocolRedisFaster ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojo-redis";
+      description = "Redis driver based on Mojo::IOLoop";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoSAML = buildPerlModule {
+    pname = "Mojo-SAML";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JB/JBERGER/Mojo-SAML-0.07.tar.gz";
+      sha256 = "03biykpz281z9nmd846jlxwzbaqlqwvh987aw9spl7bgvfn4rhkj";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ CryptOpenSSLRSA CryptOpenSSLX509 DataGUID Mojolicious XMLCanonicalizeXML ];
+    meta = {
+      description = "A SAML2 toolkit using the Mojo toolkit";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoSQLite = buildPerlModule {
+    pname = "Mojo-SQLite";
+    version = "3.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Mojo-SQLite-3.005.tar.gz";
+      sha256 = "0appzyhr5adzdfxns31lj568hz18bkmxmcv7fpafrx67b98cpza1";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ DBDSQLite Mojolicious SQLAbstract URIdb ];
+    meta = {
+      homepage = "https://github.com/Grinnz/Mojo-SQLite";
+      description = "A tiny Mojolicious wrapper for SQLite";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  Mojomysql = buildPerlPackage rec {
+    pname = "Mojo-mysql";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/Mojo-mysql-1.20.tar.gz";
+      sha256 = "efc0927d3b479b71b4d1e6b476c2b81e01404134cc5d919ac902207e0a219c67";
+    };
+    propagatedBuildInputs = [ DBDmysql Mojolicious SQLAbstract ];
+    buildInputs = [ TestDeep ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/mojo-mysql";
+      description = "Mojolicious and Async MySQL/MariaDB";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoIOLoopDelay = buildPerlModule {
+    pname = "Mojo-IOLoop-Delay";
+    version = "8.76";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JB/JBERGER/Mojo-IOLoop-Delay-8.76.tar.gz";
+      sha256 = "1vd9s1r82wfxh8y1g2ninsyvzkawx7n6ncll8lhdj89p91hw1jwf";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/jberger/Mojo-IOLoop-Delay";
+      description = "(DISCOURAGED) Promises/A+ and flow-control helpers";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  MojoIOLoopForkCall = buildPerlModule {
+    pname = "Mojo-IOLoop-ForkCall";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JB/JBERGER/Mojo-IOLoop-ForkCall-0.20.tar.gz";
+      sha256 = "2b9962244c25a71e4757356fb3e1237cf869e26d1c27215115ba7b057a81f1a6";
+    };
+    propagatedBuildInputs = [ IOPipely Mojolicious MojoIOLoopDelay ];
+    preBuild = ''
+      # This module needs the deprecated Mojo::IOLoop::Delay
+      substituteInPlace lib/Mojo/IOLoop/ForkCall.pm \
+        --replace "use Mojo::IOLoop;" "use Mojo::IOLoop; use Mojo::IOLoop::Delay;"
+    '';
+    meta = {
+      homepage = "https://github.com/jberger/Mojo-IOLoop-ForkCall";
+      description = "Run blocking functions asynchronously by forking (deprecated)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  MojoJWT = buildPerlModule {
+    pname = "Mojo-JWT";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JB/JBERGER/Mojo-JWT-0.09.tar.gz";
+      sha256 = "11jqm2sbgf5nikkb0d56xxwrd74757ks53nh8p72nvqc7sc06kn0";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ Mojolicious ];
+    meta = {
+      homepage = "https://github.com/jberger/Mojo-JWT";
+      description = "JSON Web Token the Mojo way";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoPg = buildPerlPackage {
+    pname = "Mojo-Pg";
+    version = "4.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SRI/Mojo-Pg-4.22.tar.gz";
+      sha256 = "11s3f3km6i3in9wx9q4rkxgvj9rc6w8pdahrc19hi6zkxz3i87nr";
+    };
+    propagatedBuildInputs = [ DBDPg Mojolicious SQLAbstract ];
+    buildInputs = [ TestDeep ];
+    meta = {
+      homepage = "https://github.com/mojolicious/mojo-pg";
+      description = "Mojolicious <3 PostgreSQL";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MojoUserAgentCached = buildPerlPackage {
+    pname = "Mojo-UserAgent-Cached";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NICOMEN/Mojo-UserAgent-Cached-1.16.tar.gz";
+      sha256 = "17gp1kn97s1wv973w0g92alx13lmcvdan794471sfq2is6s6v1qd";
+    };
+    buildInputs = [ ModuleInstall ];
+    propagatedBuildInputs = [ AlgorithmLCSS CHI DataSerializer DevelStackTrace Mojolicious Readonly StringTruncate ];
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      homepage = "https://github.com/nicomen/mojo-useragent-cached";
+      description = "Caching, Non-blocking I/O HTTP, Local file and WebSocket user agent";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  MongoDB = buildPerlPackage {
+    pname = "MongoDB";
+    version = "2.2.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MONGODB/MongoDB-v2.2.2.tar.gz";
+      sha256 = "201935f92dac94f39c35de73661e8b252439e496f228657db85ff93257c3268f";
+    };
+    buildInputs = [ JSONMaybeXS PathTiny TestDeep TestFatal TimeMoment ];
+    propagatedBuildInputs = [ AuthenSASLSASLprep AuthenSCRAM BSON IOSocketSSL NetSSLeay ClassXSAccessor BSONXS TypeTinyXS MozillaCA Moo NetDNS SafeIsa SubQuote TieIxHash TypeTiny UUIDURandom boolean namespaceclean ];
+    meta = {
+      homepage = "https://github.com/mongodb-labs/mongo-perl-driver";
+      description = "Official MongoDB Driver for Perl (EOL)";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  MonitoringPlugin = buildPerlPackage {
+    pname = "Monitoring-Plugin";
+    version = "0.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NI/NIERLEIN/Monitoring-Plugin-0.40.tar.gz";
+      sha256 = "0vr3wwdn3zs246qwi04bqk8jir6l88j5m59jk97hmfyj4xz6pfpq";
+    };
+    propagatedBuildInputs = [ ClassAccessor ConfigTiny MathCalcUnits ParamsValidate ];
+    meta = {
+      description = ''
+        A family of perl modules to streamline writing Naemon,
+        Nagios, Icinga or Shinken (and compatible) plugins
+      '';
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOPipely = buildPerlPackage {
+    pname = "IO-Pipely";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCAPUTO/IO-Pipely-0.005.tar.gz";
+      sha256 = "e33b6cf5cb2b46ee308513f51e623987a50a89901e81bf19701dce35179f2e74";
+    };
+    meta = {
+      description = "Portably create pipe() or pipe-like handles";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Moo = buildPerlPackage {
+    pname = "Moo";
+    version = "2.004004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Moo-2.004004.tar.gz";
+      sha256 = "0ii2rzzs0wfc697d7v3s76fi1y3kl7p1hvxbv330i1vq2nqpfjvi";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ClassMethodModifiers ModuleRuntime RoleTiny SubQuote ];
+    meta = {
+      description = "Minimalist Object Orientation (with Moose compatibility)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Moose = buildPerlPackage {
+    pname = "Moose";
+    version = "2.2013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Moose-2.2013.tar.gz";
+      sha256 = "df74dc78088921178edf72d827017d6c92737c986659f2dadc533ae24675e77c";
+    };
+    buildInputs = [ CPANMetaCheck TestCleanNamespaces TestFatal TestRequires ];
+    propagatedBuildInputs = [ ClassLoadXS DevelGlobalDestruction DevelOverloadInfo DevelStackTrace EvalClosure ModuleRuntimeConflicts PackageDeprecationManager PackageStashXS SubExporter ];
+    preConfigure = ''
+      export LD=$CC
+    '';
+    meta = {
+      homepage = "http://moose.perl.org/";
+      description = "A postmodern object system for Perl 5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.eelco ];
+    };
+  };
+
+  MooXHandlesVia = buildPerlPackage {
+    pname = "MooX-HandlesVia";
+    version = "0.001009";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/MooX-HandlesVia-0.001009.tar.gz";
+      sha256 = "04kcyflg49rclxa1nm035c05jpyvhdacjyy1wklbgv4li3im6qvi";
+    };
+    buildInputs = [ MooXTypesMooseLike TestException TestFatal ];
+    propagatedBuildInputs = [ DataPerl Moo ];
+    meta = {
+      description = "NativeTrait-like behavior for Moo";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooXLocalePassthrough = buildPerlPackage {
+     pname = "MooX-Locale-Passthrough";
+     version = "0.001";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Locale-Passthrough-0.001.tar.gz";
+       sha256 = "04h5xhqdvydd4xk9ckb6a79chn0ygf915ix55vg1snmba9z841bs";
+     };
+     propagatedBuildInputs = [ Moo ];
+     meta = {
+       description = "provide API used in translator modules without translating";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXLocaleTextDomainOO = buildPerlPackage {
+     pname = "MooX-Locale-TextDomain-OO";
+     version = "0.001";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Locale-TextDomain-OO-0.001.tar.gz";
+       sha256 = "0g8pwj45ccqrzvs9cqyhw29nm68vai1vj46ad39rajnqzp7m53jv";
+     };
+     propagatedBuildInputs = [ LocaleTextDomainOO MooXLocalePassthrough ];
+     meta = {
+       description = "provide API used in translator modules without translating";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXOptions = buildPerlPackage {
+     pname = "MooX-Options";
+     version = "4.103";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Options-4.103.tar.gz";
+       sha256 = "0v9j0wxx4f6z6lrmdqf2k084b2c2f2jbvh86pwib0vgjz1sdbyad";
+     };
+     propagatedBuildInputs = [ GetoptLongDescriptive MROCompat MooXLocalePassthrough PathClass UnicodeLineBreak strictures ];
+     buildInputs = [ Mo MooXCmd MooXLocaleTextDomainOO Moose TestTrap ];
+     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 lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXSingleton = buildPerlModule {
+     pname = "MooX-Singleton";
+     version = "1.20";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AJ/AJGB/MooX-Singleton-1.20.tar.gz";
+       sha256 = "03i1wfag279ldjjkwi9gvpfs8fgi05my47icq5ggi66yzxpn5mzp";
+     };
+     propagatedBuildInputs = [ RoleTiny ];
+     buildInputs = [ Moo ];
+     meta = {
+       description = "turn your Moo class into singleton";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXStrictConstructor = buildPerlPackage {
+     pname = "MooX-StrictConstructor";
+     version = "0.011";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/H/HA/HARTZELL/MooX-StrictConstructor-0.011.tar.gz";
+       sha256 = "1qjkqrmzgz7lxhv14klsv0v9v6blf8js86d47ah24kpw5y12yf6s";
+     };
+     propagatedBuildInputs = [ Moo strictures ];
+     buildInputs = [ TestFatal ];
+     meta = {
+       description = "Make your Moo-based object constructors blow up on unknown attributes.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXTypesMooseLike = buildPerlPackage {
+    pname = "MooX-Types-MooseLike";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz";
+      sha256 = "1d6jg9x3p7gm2r0xmbcag374a44gf5pcga2swvxhlhzakfm80dqx";
+    };
+    propagatedBuildInputs = [ ModuleRuntime ];
+    buildInputs = [ Moo TestFatal ];
+  };
+
+  MooXTypesMooseLikeNumeric = buildPerlPackage {
+    pname = "MooX-Types-MooseLike-Numeric";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MATEU/MooX-Types-MooseLike-Numeric-1.03.tar.gz";
+      sha256 = "16adeb617b963d010179922c2e4e8762df77c75232e17320b459868c4970c44b";
+    };
+    buildInputs = [ Moo TestFatal ];
+    propagatedBuildInputs = [ MooXTypesMooseLike ];
+    meta = {
+      description = "Moo types for numbers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooXTypeTiny = buildPerlPackage {
+    pname = "MooX-TypeTiny";
+    version = "0.002003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/MooX-TypeTiny-0.002003.tar.gz";
+      sha256 = "d81e26ff6f8db10261f0087f96dc54367dcb49a9f3de8d53238f834ece19624b";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ Moo TypeTiny ];
+    meta = {
+      description = "Optimized type checks for Moo + Type::Tiny";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseAutobox = buildPerlModule {
+    pname = "Moose-Autobox";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Moose-Autobox-0.16.tar.gz";
+      sha256 = "0mbhd0p7gf6qdhaylldl0ahq59zghs0vd5n1iqcbfkj8ryj1sh4j";
+    };
+    buildInputs = [ ModuleBuildTiny TestException ];
+    propagatedBuildInputs = [ ListMoreUtils Moose SyntaxKeywordJunction autobox namespaceautoclean ];
+    meta = {
+      description = "Autoboxed wrappers for Native Perl datatypes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXABC = buildPerlPackage {
+    pname = "MooseX-ABC";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/MooseX-ABC-0.06.tar.gz";
+      sha256 = "1sky0dpi22wrymmkjmqba4k966zn7vrbpx918wn2nmg48swyrgjf";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      description = "Abstract base classes for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXAliases = buildPerlPackage {
+    pname = "MooseX-Aliases";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/MooseX-Aliases-0.11.tar.gz";
+      sha256 = "0j07zqczjfmng3md6nkha7560i786d0cp3gdmrx49hr64jbhz1f4";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ Moose ];
+  };
+
+  MooseXAppCmd = buildPerlModule {
+    pname = "MooseX-App-Cmd";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-App-Cmd-0.32.tar.gz";
+      sha256 = "2e3bbf7283a4bee72d91d26eb204436030992bbe55cbd35ec33a546f16f973ff";
+    };
+    buildInputs = [ ModuleBuildTiny MooseXConfigFromFile TestOutput YAML ];
+    propagatedBuildInputs = [ AppCmd MooseXGetopt MooseXNonMoose ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-App-Cmd";
+      description = "Mashes up MooseX::Getopt and App::Cmd";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXStorageFormatJSONpm = buildPerlPackage {
+    pname = "MooseX-Storage-Format-JSONpm";
+    version = "0.093093";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/MooseX-Storage-Format-JSONpm-0.093093.tar.gz";
+      sha256 = "ebe0407a7eb1870270e0e2579f097dfd7df2aea3307fb71f324fb69e242cc58f";
+    };
+    buildInputs = [ Moose TestDeepJSON TestWithoutModule DigestHMAC MooseXTypes ];
+    propagatedBuildInputs = [ JSON MooseXRoleParameterized MooseXStorage namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/rjbs/MooseX-Storage-Format-JSONpm";
+      description = "A format role for MooseX::Storage using JSON.pm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooX = buildPerlPackage {
+    pname = "MooX";
+    version = "0.101";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GE/GETTY/MooX-0.101.tar.gz";
+      sha256 = "2ff91a656e78aae0aca42293829d7a7e5acb9bf22b0401635b2ab6c870de32d5";
+    };
+    propagatedBuildInputs = [ DataOptList ImportInto Moo ];
+    meta = {
+      homepage = "https://github.com/Getty/p5-moox";
+      description = "Using Moo and MooX:: packages the most lazy way";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooXAliases = buildPerlPackage {
+    pname = "MooX-Aliases";
+    version = "0.001006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/MooX-Aliases-0.001006.tar.gz";
+      sha256 = "0rrqqsm8i6rckzxgzcj2p2s4cfszzddzwbcm04yjcqdcihkk2q01";
+    };
+    propagatedBuildInputs = [ Moo strictures ];
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "easy aliasing of methods and attributes in Moo";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooXCmd = buildPerlPackage {
+     pname = "MooX-Cmd";
+     version = "0.017";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Cmd-0.017.tar.gz";
+       sha256 = "1xbhmq07v9z371ygkyghva9aryhc22kwbzn5qwkp72c0ma6z4gwl";
+     };
+     propagatedBuildInputs = [ ListMoreUtils ModulePluggable Moo PackageStash ParamsUtil RegexpCommon ];
+     buildInputs = [ CaptureTiny ];
+     meta = {
+       description = "Giving an easy Moo style way to make command organized CLI apps";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  MooXlate = buildPerlPackage {
+    pname = "MooX-late";
+    version = "0.100";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/MooX-late-0.100.tar.gz";
+      sha256 = "2ae5b1e3da5abc0e4006278ecbcfa8fa7c224ea5529a6a688acbb229c09e6a5f";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    propagatedBuildInputs = [ Moo SubHandlesVia ];
+    meta = {
+      description = "Easily translate Moose code to Moo";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MouseXSimpleConfig = buildPerlPackage {
+    pname = "MouseX-SimpleConfig";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MJ/MJGARDNER/MouseX-SimpleConfig-0.11.tar.gz";
+      sha256 = "257f384091d33d340373a6153947039c698dc449d1ef989335644fc3d2da0069";
+    };
+    propagatedBuildInputs = [ ConfigAny MouseXConfigFromFile ];
+    meta = {
+      description = "A Mouse role for setting attributes from a simple configfile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestPostgreSQL = buildPerlModule {
+    pname = "Test-PostgreSQL";
+    version = "1.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TJ/TJC/Test-PostgreSQL-1.27.tar.gz";
+      sha256 = "b1bd231693100cc40905fb0ba3173173201621de9c8301f21c5b593b0a46f907";
+    };
+    buildInputs = [ ModuleBuildTiny TestSharedFork pkgs.postgresql ];
+    propagatedBuildInputs = [ DBDPg DBI FileWhich FunctionParameters Moo TieHashMethod TryTiny TypeTiny ];
+
+    makeMakerFlags = "POSTGRES_HOME=${pkgs.postgresql}";
+
+    meta = {
+      homepage = "https://github.com/TJC/Test-postgresql";
+      description = "PostgreSQL runner for tests";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  TestUseAllModules = buildPerlPackage {
+    pname = "Test-UseAllModules";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Test-UseAllModules-0.17.tar.gz";
+      sha256 = "a71f2fe8b96ab8bfc2760aa1d3135ea049a5b20dcb105457b769a1195c7a2509";
+    };
+    meta = {
+      description = "Do use_ok() for all the MANIFESTed modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestValgrind = buildPerlPackage {
+    pname = "Test-Valgrind";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VP/VPIT/Test-Valgrind-1.19.tar.gz";
+      sha256 = "06w1c0ddmmdkhhvv9pxq2nv5i40nbqf4cssfkq38yypfbyhsff0q";
+    };
+    propagatedBuildInputs = [ EnvSanctify FileHomeDir PerlDestructLevel XMLTwig ];
+    meta = {
+      description = "Generate suppressions, analyse and test any command with valgrind.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "http://search.cpan.org/dist/Test-Valgrind/";
+    };
+  };
+
+  MouseXTypesPathClass = buildPerlPackage {
+    pname = "MouseX-Types-Path-Class";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MASAKI/MouseX-Types-Path-Class-0.07.tar.gz";
+      sha256 = "228d4b4f3f0ed9547278691d0b7c5fe53d90874a69df709a49703c6af87c09de";
+    };
+    buildInputs = [ TestUseAllModules ];
+    propagatedBuildInputs = [ MouseXTypes PathClass ];
+    meta = {
+      description = "A Path::Class type library for Mouse";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MouseXTypes = buildPerlPackage {
+    pname = "MouseX-Types";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GF/GFUJI/MouseX-Types-0.06.tar.gz";
+      sha256 = "77288441fdadd15beeec9a0813ece8aec1542f1d8ceaaec14755b3f316fbcf8b";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ AnyMoose ];
+    meta = {
+      description = "Organize your Mouse types in libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MouseXConfigFromFile = buildPerlPackage {
+    pname = "MouseX-ConfigFromFile";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MASAKI/MouseX-ConfigFromFile-0.05.tar.gz";
+      sha256 = "921b31cb13fc1f982a602f8e23815b7add23a224257e43790e287504ce879534";
+    };
+    buildInputs = [ TestUseAllModules ];
+    propagatedBuildInputs = [ MouseXTypesPathClass ];
+    meta = {
+      description = "An abstract Mouse role for setting attributes from a configfile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MouseXGetopt = buildPerlModule {
+    pname = "MouseX-Getopt";
+    version = "0.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GF/GFUJI/MouseX-Getopt-0.38.tar.gz";
+      sha256 = "de3ea8ef452dd9501ea8c4eda8744b7224602602b04692607edd7d62b79f038f";
+    };
+    buildInputs = [ ModuleBuildTiny MouseXConfigFromFile MouseXSimpleConfig TestException TestWarn ];
+    propagatedBuildInputs = [ GetoptLongDescriptive Mouse ];
+    meta = {
+      homepage = "https://github.com/gfx/mousex-getopt";
+      description = "A Mouse role for processing command line options";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXAttributeChained = buildPerlModule {
+    pname = "MooseX-Attribute-Chained";
+    version = "1.0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOMHUKINS/MooseX-Attribute-Chained-1.0.3.tar.gz";
+      sha256 = "0kjydmkxh8hpkbbmsgd5wrkhgq7w69lgfg6lx4s5g2xpqfkqmqz7";
+    };
+    propagatedBuildInputs = [ Moose ];
+  };
+
+  MooseXAttributeHelpers = buildPerlModule {
+    pname = "MooseX-AttributeHelpers";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-AttributeHelpers-0.25.tar.gz";
+      sha256 = "b0c819ec83999b258b248f82059fa5975a0cee365423abbee0efaca5401c5ec6";
+    };
+    buildInputs = [ ModuleBuildTiny TestException ];
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      description = "Extend your attribute interfaces (deprecated)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXClone = buildPerlModule {
+    pname = "MooseX-Clone";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Clone-0.06.tar.gz";
+      sha256 = "19wd74dihybnz1lbbsqn0clwxzb6y0aa0i25a8zhajz7p5fq5myb";
+    };
+    propagatedBuildInputs = [ DataVisitor HashUtilFieldHashCompat namespaceautoclean ];
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  MooseXConfigFromFile = buildPerlModule {
+    pname = "MooseX-ConfigFromFile";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-ConfigFromFile-0.14.tar.gz";
+      sha256 = "9ad343cd9f86d714be9b54b9c68a443d8acc6501b6ad6b15e9ca0130b2e96f08";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestFatal TestRequires TestWithoutModule ];
+    propagatedBuildInputs = [ MooseXTypesPathTiny ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-ConfigFromFile";
+      description = "An abstract Moose role for setting attributes from a configfile";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXDaemonize = buildPerlModule {
+    pname = "MooseX-Daemonize";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Daemonize-0.22.tar.gz";
+      sha256 = "8a7fb999dca9b802a85136a10141b2d3378a3ecde0527c1df73d55edb28e59b3";
+    };
+    buildInputs = [ DevelCheckOS ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ MooseXGetopt MooseXTypesPathClass ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Daemonize";
+      description = "Role for daemonizing your Moose based application";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXEmulateClassAccessorFast = buildPerlPackage {
+    pname = "MooseX-Emulate-Class-Accessor-Fast";
+    version = "0.009032";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/MooseX-Emulate-Class-Accessor-Fast-0.009032.tar.gz";
+      sha256 = "153r30nggcyyx7ai15dbnba2h5145f8jdsh6wj54298d3zpvgvl2";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ Moose namespaceclean ];
+    meta = {
+      description = "Emulate Class::Accessor::Fast behavior using Moose attributes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXGetopt = buildPerlModule {
+    pname = "MooseX-Getopt";
+    version = "0.74";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Getopt-0.74.tar.gz";
+      sha256 = "1de0df3b431ebe9f3563bdf4569eacd7e07e865a8397f2a990d0cb57d4cb2c24";
+    };
+    buildInputs = [ ModuleBuildTiny MooseXStrictConstructor PathTiny TestDeep TestFatal TestNeeds TestTrap TestWarnings ];
+    propagatedBuildInputs = [ GetoptLongDescriptive MooseXRoleParameterized ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Getopt";
+      description = "A Moose role for processing command line options";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXHasOptions = buildPerlPackage {
+    pname = "MooseX-Has-Options";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PS/PSHANGOV/MooseX-Has-Options-0.003.tar.gz";
+      sha256 = "07c21cf8ed500b272020ff8da19f194728bb414e0012a2f0cc54ef2ef6222a68";
+    };
+    buildInputs = [ Moose TestDeep TestDifferences TestException TestMost TestWarn namespaceautoclean ];
+    propagatedBuildInputs = [ ClassLoad ListMoreUtils StringRewritePrefix ];
+    meta = {
+      homepage = "https://github.com/pshangov/moosex-has-options";
+      description = "Succinct options for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXHasSugar = buildPerlPackage {
+    pname = "MooseX-Has-Sugar";
+    version = "1.000006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KE/KENTNL/MooseX-Has-Sugar-1.000006.tar.gz";
+      sha256 = "efeed3ddb3a8ea18f416d485f3c2b0427145d267e63368c651d488eaa8c28d09";
+    };
+    buildInputs = [ TestFatal namespaceclean ];
+    propagatedBuildInputs = [ SubExporterProgressive ];
+    meta = {
+      homepage = "https://github.com/kentfredric/MooseX-Has-Sugar";
+      description = "Sugar Syntax for moose 'has' fields";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXLazyRequire = buildPerlModule {
+    pname = "MooseX-LazyRequire";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-LazyRequire-0.11.tar.gz";
+      sha256 = "ef620c1e019daf9cf3f23a943d25a94c91e93ab312bcd63be2e9740ec0b94288";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ Moose aliased namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-LazyRequire";
+      description = "Required attributes which fail only when trying to use them";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXMarkAsMethods = buildPerlPackage {
+    pname = "MooseX-MarkAsMethods";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSRCHBOY/MooseX-MarkAsMethods-0.15.tar.gz";
+      sha256 = "1y3yxwcjjajm66pvca54cv9fax7a6dy36xqr92x7vzyhfqrw3v69";
+    };
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      description = "Mark overload code symbols as methods";
+      license = lib.licenses.lgpl21;
+    };
+  };
+
+  MooseXMethodAttributes = buildPerlPackage {
+    pname = "MooseX-MethodAttributes";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-MethodAttributes-0.32.tar.gz";
+      sha256 = "0yqrihv609j2q0hrmpmvgpn0mnxc0z3ws39cqhwxvlmpfijqhcyb";
+    };
+    buildInputs = [ MooseXRoleParameterized TestFatal TestNeeds ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/moosex-methodattributes";
+      description = "Code attribute introspection";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXNonMoose = buildPerlPackage {
+    pname = "MooseX-NonMoose";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/MooseX-NonMoose-0.26.tar.gz";
+      sha256 = "0zdaiphc45s5xj0ax5mkijf5d8v6w6yccb3zplgj6f30y7n55gnb";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ListMoreUtils Moose ];
+    meta = {
+      description = "Easy subclassing of non-Moose classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXOneArgNew = buildPerlPackage {
+    pname = "MooseX-OneArgNew";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/MooseX-OneArgNew-0.005.tar.gz";
+      sha256 = "0gqhqdkwsnxmni0xv43iplplgp6g55khdwc5117j9i569r3wykvy";
+    };
+    propagatedBuildInputs = [ MooseXRoleParameterized ];
+    meta = {
+      homepage = "https://github.com/rjbs/moosex-oneargnew";
+      description = "Teach ->new to accept single, non-hashref arguments";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXRelatedClassRoles = buildPerlPackage {
+    pname = "MooseX-RelatedClassRoles";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HD/HDP/MooseX-RelatedClassRoles-0.004.tar.gz";
+      sha256 = "17vynkf6m5d039qkr4in1c9lflr8hnwp1fgzdwhj4q6jglipmnrh";
+    };
+    propagatedBuildInputs = [ MooseXRoleParameterized ];
+  };
+
+  MooseXParamsValidate = buildPerlPackage {
+    pname = "MooseX-Params-Validate";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/MooseX-Params-Validate-0.21.tar.gz";
+      sha256 = "1n9ry6gnskkp9ir6s7d5jirn3mh14ydgpmwqz6wcp6d9md358ac8";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ DevelCaller Moose ParamsValidate ];
+    meta = {
+      description = "An extension of Params::Validate using Moose's types";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXRoleParameterized = buildPerlModule {
+    pname = "MooseX-Role-Parameterized";
+    version = "1.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Role-Parameterized-1.11.tar.gz";
+      sha256 = "17pc5dly7ba0p50p2xcmp7bar8m262jcqgbkgyswl3kzbmn7dzhw";
+    };
+    buildInputs = [ CPANMetaCheck ModuleBuildTiny TestFatal TestNeeds ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Role-Parameterized";
+      description = "Roles with composition parameters";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXRoleWithOverloading = buildPerlPackage {
+    pname = "MooseX-Role-WithOverloading";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Role-WithOverloading-0.17.tar.gz";
+      sha256 = "0rb8k0dp1a55bm2pr6r0vsi5msvjl1dslfidxp1gj80j7zbrbc4j";
+    };
+    propagatedBuildInputs = [ Moose aliased namespaceautoclean ];
+    meta = {
+      description = "Roles which support overloading";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXRunnable = buildPerlModule {
+    pname = "MooseX-Runnable";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Runnable-0.10.tar.gz";
+      sha256 = "40d8fd1b5524ae965965a1f144d7a0a0c850594c524402b2319b24d5c4af1199";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestSimple13 TestTableDriven ];
+    propagatedBuildInputs = [ ListSomeUtils MooseXTypesPathTiny ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Runnable";
+      description = "Tag a class as a runnable application";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXSemiAffordanceAccessor = buildPerlPackage {
+    pname = "MooseX-SemiAffordanceAccessor";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/MooseX-SemiAffordanceAccessor-0.10.tar.gz";
+      sha256 = "1mdil9ckgmgr78z59p8wfa35ixn5855ndzx14y01dvfxpiv5gf55";
+    };
+    propagatedBuildInputs = [ Moose ];
+  };
+
+  MooseXSetOnce = buildPerlPackage {
+    pname = "MooseX-SetOnce";
+    version = "0.200002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/MooseX-SetOnce-0.200002.tar.gz";
+      sha256 = "0ndnl8dj7nh8lvckl6r3jw31d0dmq30qf2pqkgcz0lykzjvhdvfb";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ Moose ];
+  };
+
+  MooseXSingleton = buildPerlModule {
+    pname = "MooseX-Singleton";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Singleton-0.30.tar.gz";
+      sha256 = "0hb5s1chsgbx2nlb0f112mdh2v1zwww8f4i3gvfvcghx3grv5135";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestRequires TestWarnings ];
+    propagatedBuildInputs = [ Moose ];
+  };
+
+  MooseXStorage = buildPerlPackage {
+    pname = "MooseX-Storage";
+    version = "0.53";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Storage-0.53.tar.gz";
+      sha256 = "8704bfe505f66b340f62e85c9ff319c19e9670b26d4b012c91f4e103b1daace0";
+    };
+    buildInputs = [ TestDeep TestDeepType TestFatal TestNeeds TestDeepJSON TestWithoutModule DigestHMAC MooseXTypes ];
+    propagatedBuildInputs = [ ModuleRuntime Moose MooseXRoleParameterized PodCoverage StringRewritePrefix namespaceautoclean IOStringy JSON JSONXS JSONMaybeXS CpanelJSONXS YAML YAMLOld YAMLTiny YAMLLibYAML YAMLSyck ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Storage";
+      description = "A serialization framework for Moose classes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXStrictConstructor = buildPerlPackage {
+    pname = "MooseX-StrictConstructor";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/MooseX-StrictConstructor-0.21.tar.gz";
+      sha256 = "c72a5ae9583706ccdec71d401dcb3054013a7536b750df1436613d858ea2920d";
+    };
+    buildInputs = [ Moo TestFatal TestNeeds ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      description = "Make your object constructors blow up on unknown attributes";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  MooseXTraits = buildPerlModule {
+    pname = "MooseX-Traits";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Traits-0.13.tar.gz";
+      sha256 = "74afe0c4faf4e3b97c57f289437caa60becca34cd5821f489dd4cc9da4fbe29a";
+    };
+    buildInputs = [ ModuleBuildTiny MooseXRoleParameterized TestFatal TestRequires TestSimple13 ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Traits";
+      description = "Automatically apply roles at object creation time";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTraitsPluggable = buildPerlPackage {
+    pname = "MooseX-Traits-Pluggable";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/MooseX-Traits-Pluggable-0.12.tar.gz";
+      sha256 = "1jjqmcidy4kdgp5yffqqwxrsab62mbhbpvnzdy1rpwnb1savg5mb";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ ListMoreUtils Moose namespaceautoclean ];
+  };
+
+  MooseXTypes = buildPerlModule {
+    pname = "MooseX-Types";
+    version = "0.50";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-0.50.tar.gz";
+      sha256 = "9cd87b3492cbf0be9d2df9317b2adf9fc30663770e69906654bea3f41b17cb08";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestRequires ];
+    propagatedBuildInputs = [ CarpClan Moose SubExporterForMethods namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types";
+      description = "Organise your Moose types in libraries";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesCommon = buildPerlModule {
+    pname = "MooseX-Types-Common";
+    version = "0.001014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-Common-0.001014.tar.gz";
+      sha256 = "ef93718b6d2f240d50b5c3acb1a74b4c2a191869651470001a82be1f35d0ef0f";
+    };
+    buildInputs = [ ModuleBuildTiny TestDeep TestWarnings ];
+    propagatedBuildInputs = [ MooseXTypes ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types-Common";
+      description = "A library of commonly used type constraints";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesDateTime = buildPerlModule {
+    pname = "MooseX-Types-DateTime";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-DateTime-0.13.tar.gz";
+      sha256 = "b89fa26636f6a17eaa3868b4514340472b68bbdc2161a1d79a22a1bf5b1d39c6";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestSimple13 ];
+    propagatedBuildInputs = [ DateTime MooseXTypes ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types-DateTime";
+      description = "DateTime related constraints and coercions for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesDateTimeMoreCoercions = buildPerlModule {
+    pname = "MooseX-Types-DateTime-MoreCoercions";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-DateTime-MoreCoercions-0.15.tar.gz";
+      sha256 = "21bb3a597719888edb6ceaa132418d5cf92ecb92a50cce37b94259a55e0e3796";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal TestSimple13 ];
+    propagatedBuildInputs = [ DateTimeXEasy MooseXTypesDateTime TimeDurationParse ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types-DateTime-MoreCoercions";
+      description = "Extensions to MooseX::Types::DateTime";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesLoadableClass = buildPerlModule {
+    pname = "MooseX-Types-LoadableClass";
+    version = "0.015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-LoadableClass-0.015.tar.gz";
+      sha256 = "e037d3778253dcf92946435715bada0e6449c0a2808fa3ff32a965064d5a3bf4";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ MooseXTypes ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types-LoadableClass";
+      description = "ClassName type constraint with coercion to load the class";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesPathClass = buildPerlModule {
+    pname = "MooseX-Types-Path-Class";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-Path-Class-0.09.tar.gz";
+      sha256 = "0zpgwzxj6d9k2lbg6v6zd1bcbzjz2h336rm816krbblq6ssvm177";
+    };
+    propagatedBuildInputs = [ MooseXTypes PathClass ];
+    meta = {
+      description = "A Path::Class type library for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ ModuleBuildTiny TestNeeds ];
+  };
+
+  MooseXTypesPathTiny = buildPerlModule {
+    pname = "MooseX-Types-Path-Tiny";
+    version = "0.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-Path-Tiny-0.012.tar.gz";
+      sha256 = "19eede02dd654e70f73e34cd7af0063765173bcaefeeff1bdbe21318ecfd9158";
+    };
+    buildInputs = [ Filepushd ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ MooseXGetopt MooseXTypesStringlike PathTiny ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/moosex-types-path-tiny";
+      description = "Path::Tiny types and coercions for Moose";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  MooseXTypesPerl = buildPerlPackage {
+    pname = "MooseX-Types-Perl";
+    version = "0.101343";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/MooseX-Types-Perl-0.101343.tar.gz";
+      sha256 = "0nijy676q27bvjb8swxrb1j4lq2xq8jbqkaxs1l9q81k7jpvx17h";
+    };
+    propagatedBuildInputs = [ MooseXTypes ];
+    meta = {
+      description = "Moose types that check against Perl syntax";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesStringlike = buildPerlPackage {
+    pname = "MooseX-Types-Stringlike";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/MooseX-Types-Stringlike-0.003.tar.gz";
+      sha256 = "06fgamdiz0n7cgghb8ycjd5mcidj8w769zs2gws6z6jjbkn4kqrf";
+    };
+    propagatedBuildInputs = [ MooseXTypes ];
+    meta = {
+      homepage = "https://github.com/dagolden/moosex-types-stringlike";
+      description = "Moose type constraints for strings or string-like objects";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  MooseXTypesStructured = buildPerlModule {
+    pname = "MooseX-Types-Structured";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-Structured-0.36.tar.gz";
+      sha256 = "0mrxc00sid7526c6brrnjr6288468sszic3wazij71v3z59bdka3";
+    };
+    buildInputs = [ DateTime ModuleBuildTiny MooseXTypesDateTime TestFatal TestNeeds ];
+    propagatedBuildInputs = [ DevelPartialDump MooseXTypes ];
+    meta = {
+      description = "MooseX::Types::Structured - Structured Type Constraints for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MooseXTypesURI = buildPerlModule {
+    pname = "MooseX-Types-URI";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/MooseX-Types-URI-0.08.tar.gz";
+      sha256 = "d310d20fa361fe2dff758236df87949cc7bf98e5cf3a7c79115365eccde6ccc1";
+    };
+    buildInputs = [ ModuleBuildTiny TestSimple13 ];
+    propagatedBuildInputs = [ MooseXTypesPathClass URIFromHash ];
+    meta = {
+      homepage = "https://github.com/moose/MooseX-Types-URI";
+      description = "URI related types and coercions for Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MP3Info = buildPerlPackage {
+    pname = "MP3-Info";
+    version = "1.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMERELO/MP3-Info-1.26.tar.gz";
+      sha256 = "1rwbrsdw6y6jgcjvrlji6fbcvwl4wlka3mkhlw12a7s2683k8qjp";
+    };
+    meta = {
+      description = "Manipulate / fetch info from MP3 audio files";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  MP3Tag = buildPerlPackage {
+    pname = "MP3-Tag";
+    version = "1.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILYAZ/modules/MP3-Tag-1.15.zip";
+      sha256 = "1lanbwv97sfsb7h4vsg1v0dv3yghpz01nf3rzl4a9p3ycgs4ib5a";
+    };
+    buildInputs = [ pkgs.unzip ];
+
+    postPatch = ''
+      substituteInPlace Makefile.PL --replace "'PL_FILES'" "#'PL_FILES'"
+    '';
+    postFixup = ''
+      perl data_pod.PL PERL5LIB:$PERL5LIB
+    '';
+    outputs = [ "out" ];
+    meta = {
+      description = "Module for reading tags of MP3 audio files";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  Mouse = buildPerlModule {
+    pname = "Mouse";
+    version = "2.5.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/Mouse-v2.5.10.tar.gz";
+      sha256 = "1vijm8wkyws1jhnqmx104585q3srw9z1crcpy1zlcfhm8qww53ff";
+    };
+    buildInputs = [ ModuleBuildXSUtil TestException TestFatal TestLeakTrace TestOutput TestRequires TryTiny ];
+    perlPreHook = "export LD=$CC";
+    NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isi686 "-fno-stack-protector";
+    hardeningDisable = lib.optional stdenv.isi686 "stackprotector";
+  };
+
+  MouseXNativeTraits = buildPerlPackage {
+    pname = "MouseX-NativeTraits";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GF/GFUJI/MouseX-NativeTraits-1.09.tar.gz";
+      sha256 = "0pnbchkxfz9fwa8sniyjqp0mz75b3k2fafq9r09znbbh51dbz9gq";
+    };
+    buildInputs = [ AnyMoose TestFatal ];
+    propagatedBuildInputs = [ Mouse ];
+    meta = {
+      description = "Extend attribute interfaces for Mouse";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MozillaCA = buildPerlPackage {
+    pname = "Mozilla-CA";
+    version = "20200520";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABH/Mozilla-CA-20200520.tar.gz";
+      sha256 = "b3ca0002310bf24a16c0d5920bdea97a2f46e77e7be3e7377e850d033387c726";
+    };
+
+    postPatch = ''
+      ln -s --force ${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt lib/Mozilla/CA/cacert.pem
+    '';
+
+    meta = {
+      description = "Mozilla's CA cert bundle in PEM format";
+      license = lib.licenses.mpl20;
+    };
+  };
+
+  MozillaLdap = callPackage ../development/perl-modules/Mozilla-LDAP { };
+
+  MROCompat = buildPerlPackage {
+    pname = "MRO-Compat";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/MRO-Compat-0.13.tar.gz";
+      sha256 = "1y547lr6zccf7919vx01v22zsajy528psanhg5aqschrrin3nb4a";
+    };
+    meta = {
+      description = "Mro::* interface compatibility for Perls < 5.9.5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MusicBrainzDiscID = buildPerlPackage {
+    pname = "MusicBrainz-DiscID";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-0.06.tar.gz";
+      sha256 = "1azc91jnwa3gdmy9pc8mflakgvsvf69ywwlqllxmdzwpk386w2xs";
+    };
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    # Makefile.PL in this package uses which to find pkg-config -- make it use path instead
+    patchPhase = ''sed -ie 's/`which pkg-config`/"pkg-config"/' Makefile.PL'';
+    doCheck = false; # The main test performs network access
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    propagatedBuildInputs = [ pkgs.libdiscid ];
+  };
+
+  MusicBrainz = buildPerlModule {
+    pname = "WebService-MusicBrainz";
+    version = "1.0.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-1.0.5.tar.gz";
+      sha256 = "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj";
+    };
+    propagatedBuildInputs = [ Mojolicious ];
+    doCheck = false; # Test performs network access.
+  };
+
+  MustacheSimple = buildPerlPackage {
+    pname = "Mustache-Simple";
+    version = "1.3.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CM/CMS/Mustache-Simple-v1.3.6.tar.gz";
+      sha256 = "51db5d51ff4b25a670d8bfabe3902b6d45434ecf78b29bc1fff19af6e7383003";
+    };
+    propagatedBuildInputs = [ YAMLLibYAML ];
+    meta = {
+      description = "A simple Mustache Renderer";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  MySQLDiff = buildPerlPackage rec {
+    pname = "MySQL-Diff";
+    version = "0.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ES/ESTRABD/MySQL-Diff-0.60.tar.gz";
+      sha256 = "5d7080a4bd5714ff9ef536aa774a7adb3c6f0e760215ca6c39d8a3545344f956";
+    };
+    propagatedBuildInputs = [ pkgs.mariadb.client FileSlurp StringShellQuote ];
+    meta = {
+      homepage = "https://github.com/estrabd/mysqldiff";
+      description = "Generates a database upgrade instruction set";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  namespaceautoclean = buildPerlPackage {
+    pname = "namespace-autoclean";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/namespace-autoclean-0.29.tar.gz";
+      sha256 = "45ebd8e64a54a86f88d8e01ae55212967c8aa8fed57e814085def7608ac65804";
+    };
+    buildInputs = [ TestNeeds ];
+    propagatedBuildInputs = [ SubIdentify namespaceclean ];
+    meta = {
+      homepage = "https://github.com/moose/namespace-autoclean";
+      description = "Keep imports out of your namespace";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  namespaceclean = buildPerlPackage {
+    pname = "namespace-clean";
+    version = "0.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RI/RIBASUSHI/namespace-clean-0.27.tar.gz";
+      sha256 = "8a10a83c3e183dc78f9e7b7aa4d09b47c11fb4e7d3a33b9a12912fd22e31af9d";
+    };
+    propagatedBuildInputs = [ BHooksEndOfScope PackageStash ];
+    meta = {
+      description = "Keep imports and functions out of your namespace";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetIdent = buildPerlPackage {
+    pname = "Net-Ident";
+    version = "1.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Net-Ident-1.25.tar.gz";
+      sha256 = "2e5bd58b01c2a66e8049a2f8d9c93e1b5f6dce53e0ee3a481ce6a6f411f2c8f8";
+    };
+    meta = {
+      homepage = "https://github.com/toddr/Net-Ident";
+      description = "Lookup the username on the remote end of a TCP/IP connection";
+      license = lib.licenses.mit;
+    };
+  };
+
+  NetINET6Glue = buildPerlPackage {
+    pname = "Net-INET6Glue";
+    version = "0.604";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SU/SULLR/Net-INET6Glue-0.604.tar.gz";
+      sha256 = "05xvbdrqq88npzg14bjm9wmjykzplwirzcm8rp61852hz6c67hwh";
+    };
+    meta = {
+      homepage = "https://github.com/noxxi/p5-net-inet6glue";
+      description = "Make common modules IPv6 ready by hotpatching";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  NetAddrIP = buildPerlPackage {
+    pname = "NetAddr-IP";
+    version = "4.079";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gz";
+      sha256 = "ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7";
+    };
+    meta = {
+      description = "Manages IPv4 and IPv6 addresses and subnets";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetAmazonAWSSign = buildPerlPackage {
+    pname = "Net-Amazon-AWSSign";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NA/NATON/Net-Amazon-AWSSign-0.12.tar.gz";
+      sha256 = "0gpdjz5095hd3y1xhnbv45m6q2shw0c9r7spj1jvb8hy7dmhq10x";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Perl extension to create signatures for AWS requests";
+    };
+  };
+
+  NetAmazonEC2 = buildPerlPackage {
+    pname = "Net-Amazon-EC2";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MALLEN/Net-Amazon-EC2-0.36.tar.gz";
+      sha256 = "1wbjgmxjzr8mjpwj3mglan9hyh327cz27sfsir0w4rphwy93ca2f";
+    };
+    propagatedBuildInputs = [ LWPProtocolHttps Moose ParamsValidate XMLSimple ];
+    buildInputs = [ TestException ];
+    meta = {
+      description = "Perl interface to the Amazon Elastic Compute Cloud (EC2) environment.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetAmazonMechanicalTurk = buildPerlModule {
+    pname = "Net-Amazon-MechanicalTurk";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MT/MTURK/Net-Amazon-MechanicalTurk-1.02.tar.gz";
+      sha256 = "13hgggfchhp4m3l2rn3d1v6g6ccwmwf9xiyc9izv5570930mw2cd";
+    };
+    patches =
+      [ ../development/perl-modules/net-amazon-mechanicalturk.patch ];
+    propagatedBuildInputs = [ DigestHMAC LWPProtocolHttps XMLParser ];
+    doCheck = false; /* wants network */
+  };
+
+  NetAmazonS3 = buildPerlPackage {
+    pname = "Net-Amazon-S3";
+    version = "0.97";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BARNEY/Net-Amazon-S3-0.97.tar.gz";
+      sha256 = "0d6yg0l6r6ziqjvgsswr484l66nznmj0b9rx4jnsygj8s1vmdn03";
+    };
+    buildInputs = [ TestDeep TestException TestLWPUserAgent TestMockTime TestWarnings ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetAmazonS3Policy = buildPerlModule {
+    pname = "Net-Amazon-S3-Policy";
+    version = "0.1.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PO/POLETTIX/Net-Amazon-S3-Policy-0.1.6.tar.gz";
+      sha256 = "056rhq6vsdpwi2grbmxj8341qjrz0258civpnhs78j37129nxcfj";
+    };
+    propagatedBuildInputs = [ JSON ];
+    meta = {
+      description = "Manage Amazon S3 policies for HTTP POST forms";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetAsyncHTTP = buildPerlModule {
+    pname = "Net-Async-HTTP";
+    version = "0.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Net-Async-HTTP-0.48.tar.gz";
+      sha256 = "0gpp46lg7sr5xpsjhqkb022f9v88wy73carsrn5pvbmwjpwxcjwx";
+    };
+    buildInputs = [ HTTPCookies TestIdentity TestMetricsAny TestRefcount ];
+    propagatedBuildInputs = [ Future HTTPMessage IOAsync MetricsAny StructDumb URI ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  NetAsyncPing = buildPerlPackage {
+    pname = "Net-Async-Ping";
+    version = "0.004001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABRAXXA/Net-Async-Ping-0.004001.tar.gz";
+      sha256 = "0nz9i9fp7wp620f4i9z8fip1zhcaz34ckhd00ymksw8cfr8fhmwh";
+    };
+    propagatedBuildInputs = [ IOAsync Moo NetFrameLayerIPv6 namespaceclean ];
+    buildInputs = [ TestFatal ];
+    preCheck = "rm t/icmp_ps.t t/icmpv6_ps.t"; # ping socket tests fail
+    meta = {
+      description = "asyncronously check remote host for reachability";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/frioux/Net-Async-Ping";
+    };
+  };
+
+  NetAsyncWebSocket = buildPerlModule {
+    pname = "Net-Async-WebSocket";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Net-Async-WebSocket-0.13.tar.gz";
+      sha256 = "000nw7gnj7ks55nib3fiikxx9bfmbla6fimxrbn2z2n7sd187b0d";
+    };
+    propagatedBuildInputs = [ IOAsync ProtocolWebSocket URI ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  NetAMQP = buildPerlModule {
+    pname = "Net-AMQP";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHIPS/Net-AMQP-0.06.tar.gz";
+      sha256 = "0b2ba7de2cd7ddd5fe102a2e2ae7aeba21eaab1078bf3bfd3c5a722937256380";
+    };
+    doCheck = false; # failures on 32bit
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ ClassAccessor ClassDataInheritable XMLLibXML ];
+    meta = {
+      description = "Advanced Message Queue Protocol (de)serialization and representation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetCIDR = buildPerlPackage {
+    pname = "Net-CIDR";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRSAM/Net-CIDR-0.20.tar.gz";
+      sha256 = "c75edc6818bb360d71c139169fd64ad65c35fff6d2b9fac7b9f9e6c467f187b5";
+    };
+    meta = {
+      description = "Manipulate IPv4/IPv6 netblocks in CIDR notation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.bjornfor ];
+    };
+  };
+
+  NetCIDRLite = buildPerlPackage {
+    pname = "Net-CIDR-Lite";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/ST/STIGTSP/Net-CIDR-Lite-0.22.tar.gz";
+      sha256 = "05w57db2lx4djb4vixzdr6qgrzyzkk047nl812g7nq8s6k5xh5s3";
+    };
+    meta = {
+      description = "Perl extension for merging IPv4 or IPv6 CIDR addresses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  NetCoverArtArchive = buildPerlPackage {
+    pname = "Net-CoverArtArchive";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CY/CYCLES/Net-CoverArtArchive-1.02.tar.gz";
+      sha256 = "1lfx8lrjgb3s11fcm243jp5sghngd9svkgmg7xmssmj34q4f49ap";
+    };
+    buildInputs = [ FileFindRule ];
+    propagatedBuildInputs = [ JSONAny LWP Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/metabrainz/CoverArtArchive";
+      description = "Query the coverartarchive.org";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetDBus = buildPerlPackage {
+    pname = "Net-DBus";
+    version = "1.2.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANBERR/Net-DBus-1.2.0.tar.gz";
+      sha256 = "e7a1ac9ef4a1235b3fdbd5888f86c347182306467bd79abc9b0756a64b441cbc";
+    };
+    nativeBuildInputs = [ buildPackages.pkg-config ];
+    buildInputs = [ pkgs.dbus TestPod TestPodCoverage ];
+    propagatedBuildInputs = [ XMLTwig ];
+
+    # https://gitlab.com/berrange/perl-net-dbus/-/merge_requests/19
+    patches = (fetchpatch {
+      url = "https://gitlab.com/berrange/perl-net-dbus/-/commit/6bac8f188fb06e5e5edd27aee672d66b7c28caa4.patch";
+      sha256 = "19nf4xn9xhyd0sd2az9iliqldjj0k6ah2dmkyqyvq4rp2d9k5jgb";
+    });
+
+    postPatch = ''
+      substituteInPlace Makefile.PL --replace pkg-config $PKG_CONFIG
+    '';
+
+    meta = {
+      homepage = "http://www.freedesktop.org/wiki/Software/dbus";
+      description = "Extension for the DBus bindings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetDNS = buildPerlPackage rec {
+    pname = "Net-DNS";
+    version = "1.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-1.29.tar.gz";
+      sha256 = "1ia35l9bdnwic6fb5knkvn6bl939np5q2r824d1023cggvl6wbc5";
+    };
+    propagatedBuildInputs = [ DigestHMAC ];
+    makeMakerFlags = "--noonline-tests";
+    meta = {
+      description = "Perl Interface to the Domain Name System";
+      license = lib.licenses.mit;
+    };
+  };
+
+  NetDNSResolverMock = buildPerlPackage {
+     pname = "Net-DNS-Resolver-Mock";
+     version = "1.20200215";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MB/MBRADSHAW/Net-DNS-Resolver-Mock-1.20200215.tar.gz";
+       sha256 = "1rv745c16l3m3w6xx2hjmmgzkdklmzm9imdfiddmdr9hwm8g3xxy";
+     };
+     propagatedBuildInputs = [ NetDNS ];
+     meta = {
+       description = "Mock a DNS Resolver object for testing";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+    buildInputs = [ TestException ];
+  };
+
+  NetDomainTLD = buildPerlPackage {
+    pname = "Net-Domain-TLD";
+    version = "1.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXP/Net-Domain-TLD-1.75.tar.gz";
+      sha256 = "4c37f811184d68ac4179d48c10ea31922dd5fca2c1bffcdcd95c5a2a3b4002ee";
+    };
+    meta = {
+      description = "Work with TLD names";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetFastCGI = buildPerlPackage {
+     pname = "Net-FastCGI";
+     version = "0.14";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/C/CH/CHANSEN/Net-FastCGI-0.14.tar.gz";
+       sha256 = "0sjrnlzci21sci5m52zz0x9bf889j67i6vnhrjlypsfm9w5914qi";
+     };
+     buildInputs = [ TestException TestHexString ];
+     meta = {
+       description = "FastCGI Toolkit";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  NetFrame = buildPerlModule {
+    pname = "Net-Frame";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GO/GOMOR/Net-Frame-1.21.tar.gz";
+      sha256 = "0ffphcw52dgn07k7q02di77zq2zzc0p3vlv2gnphr7v3ifi5gcxw";
+    };
+    propagatedBuildInputs = [ BitVector ClassGomor NetIPv6Addr ];
+    preCheck = "rm t/13-gethostsubs.t"; # it performs DNS queries
+    meta = {
+      description = "the base framework for frame crafting";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  NetFrameLayerIPv6 = buildPerlModule {
+    pname = "Net-Frame-Layer-IPv6";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GO/GOMOR/Net-Frame-Layer-IPv6-1.08.tar.gz";
+      sha256 = "1mzp778jmjn23990gj0mibhr9mrwmaw85nh7wf25hzzkx0mqabds";
+    };
+    propagatedBuildInputs = [ NetFrame ];
+    meta = {
+      description = "Internet Protocol v6 layer object";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  NetFreeDB = buildPerlPackage {
+    pname = "Net-FreeDB";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSHULTZ/Net-FreeDB-0.10.tar.gz";
+      sha256 = "11dfi14qnzsnmr71cygir85zfj15n08b7d5g0i4cj5pb70if2hzp";
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestMost TestWarn ];
+    propagatedBuildInputs = [ CDDBFile Moo ];
+    meta = {
+      description = "Perl interface to freedb server(s)";
+      license = with lib.licenses; [ artistic1 ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.NetFreeDB.x86_64-darwin
+    };
+  };
+
+  NetHTTP = buildPerlPackage {
+    pname = "Net-HTTP";
+    version = "6.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/Net-HTTP-6.19.tar.gz";
+      sha256 = "52b76ec13959522cae64d965f15da3d99dcb445eddd85d2ce4e4f4df385b2fc4";
+    };
+    propagatedBuildInputs = [ URI ];
+    __darwinAllowLocalNetworking = true;
+    meta = {
+      homepage = "https://github.com/libwww-perl/Net-HTTP";
+      description = "Low-level HTTP connection (client)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    doCheck = false; /* wants network */
+  };
+
+  NetHTTPSNB = buildPerlPackage {
+    pname = "Net-HTTPS-NB";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OL/OLEG/Net-HTTPS-NB-0.15.tar.gz";
+      sha256 = "0kwc4z8pqnbc396wjnlgdmri10zdh91f2bi6saxkpfjzlm7wysba";
+    };
+    propagatedBuildInputs = [ IOSocketSSL NetHTTP ];
+    meta = {
+      homepage = "https://github.com/olegwtf/p5-Net-HTTPS-NB";
+      description = "Non-blocking HTTPS client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetIDNEncode = buildPerlModule {
+    pname = "Net-IDN-Encode";
+    version = "2.500";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFAERBER/Net-IDN-Encode-2.500.tar.gz";
+      sha256 = "1aiy7adirk3wpwlczd8sldi9k1dray0jrg1lbcrcw97zwcrkciam";
+    };
+    buildInputs = [ TestNoWarnings ];
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "Internationalizing Domain Names in Applications (IDNA)";
+    };
+  };
+
+  NetIMAPClient = buildPerlPackage {
+    pname = "Net-IMAP-Client";
+    version = "0.9505";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GANGLION/Net-IMAP-Client-0.9505.tar.gz";
+      sha256 = "d3f6a608b85e09a8080a67a9933837aae6f2cd0e8ee39df3380123dc5e3de912";
+    };
+    propagatedBuildInputs = [ IOSocketSSL ListMoreUtils ];
+    meta = {
+      description = "Not so simple IMAP client library";
+    };
+  };
+
+  NetIP = buildPerlPackage {
+    pname = "Net-IP";
+    version = "1.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANU/Net-IP-1.26.tar.gz";
+      sha256 = "0ffn2xqqbkfi7v303sp5dwgbv36jah3vg8r4nxhxfiv60vric3q4";
+    };
+    meta = {
+      description = "Perl extension for manipulating IPv4/IPv6 addresses";
+    };
+  };
+
+  NetIPLite = buildPerlPackage {
+    pname = "Net-IP-Lite";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXKOM/Net-IP-Lite-0.03.tar.gz";
+      sha256 = "c9916e6cfaa53be275379ce4b2a550ae176ddfab50dad43b43ed43e8267802a9";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      homepage = "https://metacpan.org/pod/Net::IP::Lite";
+      description = "Perl extension for manipulating IPv4/IPv6 addresses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  NetIPv4Addr = buildPerlPackage {
+    pname = "Net-IPv4Addr";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FRAJULAC/Net-IPv4Addr-0.10.tar.gz";
+      sha256 = "1zk3591822dg187sgkwjjvg18qmvkn3yib1c34mq8z5i617xwi9q";
+    };
+    meta = {
+    };
+  };
+
+  NetIPv6Addr = buildPerlPackage {
+    pname = "Net-IPv6Addr";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BK/BKB/Net-IPv6Addr-1.01.tar.gz";
+      sha256 = "008blh52k8g3syfk4dlmg7wclhdmksqkb5vk2qaxjpxmzq1pzqi7";
+    };
+    propagatedBuildInputs = [ MathBase85 NetIPv4Addr ];
+    meta = {
+      description = "Check and manipulate IPv6 addresses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetLDAPServer = buildPerlPackage {
+    pname = "Net-LDAP-Server";
+    version = "0.43";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AA/AAR/Net-LDAP-Server-0.43.tar.gz";
+      sha256 = "0qmh3cri3fpccmwz6bhwp78yskrb3qmalzvqn0a23hqbsfs4qv6x";
+    };
+    propagatedBuildInputs = [ perlldap ConvertASN1 ];
+    meta = {
+      description = "LDAP server side protocol handling";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  NetLDAPSID = buildPerlPackage {
+    pname = "Net-LDAP-SID";
+    version = "0.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KARMAN/Net-LDAP-SID-0.001.tar.gz";
+      sha256 = "1mnnpkmj8kpb7qw50sm8h4sd8py37ssy2xi5hhxzr5whcx0cvhm8";
+    };
+    meta = {
+      description= "Active Directory Security Identifier manipulation";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  NetLDAPServerTest = buildPerlPackage {
+    pname = "Net-LDAP-Server-Test";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KARMAN/Net-LDAP-Server-Test-0.22.tar.gz";
+      sha256 = "13idip7jky92v4adw60jn2gcc3zf339gsdqlnc9nnvqzbxxp285i";
+    };
+    propagatedBuildInputs = [ perlldap NetLDAPServer DataDump NetLDAPSID ];
+    meta = {
+      description= "test Net::LDAP code";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  NetNetmask = buildPerlPackage {
+    pname = "Net-Netmask";
+    version = "2.0001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMASLAK/Net-Netmask-2.0001.tar.gz";
+      sha256 = "0waiix46wv93a5zzjjv7ypdnfdf7lizwrhx12128rcvzcvw6wd8p";
+    };
+    buildInputs = [ Test2Suite TestUseAllModules ];
+    meta = {
+      description = "Parse, manipulate and lookup IP network blocks";
+    };
+  };
+
+  NetOAuth = buildPerlModule {
+    pname = "Net-OAuth";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KG/KGRENNAN/Net-OAuth-0.28.tar.gz";
+      sha256 = "0k4h4a5048h7qgyx25ih64x0l4airx8a6d9gjq08wmxcl2fk3z3v";
+    };
+    buildInputs = [ TestWarn ];
+    propagatedBuildInputs = [ ClassAccessor ClassDataInheritable DigestHMAC DigestSHA1 LWP ];
+    meta = {
+      description = "An implementation of the OAuth protocol";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetPatricia = buildPerlPackage {
+    pname = "Net-Patricia";
+    version = "1.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRUBER/Net-Patricia-1.22.tar.gz";
+      sha256 = "70835a926e1c5a8d0324c72fffee82eeb7ec6c141dee04fd446820b64f71c552";
+    };
+    propagatedBuildInputs = [ NetCIDRLite Socket6 ];
+  };
+
+  NetPing = buildPerlPackage {
+    pname = "Net-Ping";
+    version = "2.74";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Net-Ping-2.74.tar.gz";
+      sha256 = "04bxfglhxvffbwcg32rm1bzv54h183jyazhih5apqppdpdcqjami";
+    };
+    meta = {
+      description = "Check a remote host for reachability";
+    };
+  };
+
+  NetDNSResolverProgrammable = buildPerlPackage {
+    pname = "Net-DNS-Resolver-Programmable";
+    version = "0.009";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BIGPRESH/Net-DNS-Resolver-Programmable-0.009.tar.gz";
+      sha256 = "8080a2ab776629585911af1179bdb7c4dc2bebfd4b5efd77b11d1dac62454bf8";
+    };
+    propagatedBuildInputs = [ NetDNS ];
+    meta = {
+      description = "Programmable DNS resolver class for offline emulation of DNS";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetPrometheus = buildPerlModule {
+    pname = "Net-Prometheus";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Net-Prometheus-0.11.tar.gz";
+      sha256 = "0skjkz6q68y8g9blm7i03k4wprac3djq15akmlv1kmgag3i0ky12";
+    };
+    propagatedBuildInputs = [ RefUtil StructDumb URI ];
+    buildInputs = [ HTTPMessage TestFatal ];
+    meta = {
+      description = "export monitoring metrics for F<prometheus>";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetSCP = buildPerlPackage {
+    pname = "Net-SCP";
+    version = "0.08.reprise";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IV/IVAN/Net-SCP-0.08.reprise.tar.gz";
+      sha256 = "88a9b2df69e769e5855a408b19f61915b82e8fe070ab5cf4d525dd3b8bbe31c1";
+    };
+    propagatedBuildInputs = [ pkgs.openssl ];
+    patchPhase = ''
+      sed -i 's|$scp = "scp";|$scp = "${pkgs.openssh}/bin/scp";|' SCP.pm
+    '';
+    meta = {
+      description = "Simple wrappers around ssh and scp commands.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ NetSSH StringShellQuote ];
+  };
+
+  NetServer = buildPerlPackage {
+    pname = "Net-Server";
+    version = "2.009";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RH/RHANDOM/Net-Server-2.009.tar.gz";
+      sha256 = "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2";
+    };
+    doCheck = false; # seems to hang waiting for connections
+    meta = {
+      description = "Extensible, general Perl server engine";
+    };
+  };
+
+  NetSFTPForeign = buildPerlPackage {
+    pname = "Net-SFTP-Foreign";
+    version = "1.91";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Net-SFTP-Foreign-1.91.tar.gz";
+      sha256 = "b7395081314f26f3b93c857d65e9c80a04a63709df698583f22a360ffce7e178";
+    };
+    propagatedBuildInputs = [ pkgs.openssl ];
+    patchPhase = ''
+      sed -i "s|$ssh_cmd = 'ssh'|$ssh_cmd = '${pkgs.openssh}/bin/ssh'|" lib/Net/SFTP/Foreign/Backend/Unix.pm
+    '';
+    meta = {
+      description = "Secure File Transfer Protocol client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetServerCoro = buildPerlPackage {
+     pname = "Net-Server-Coro";
+     version = "1.3";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AL/ALEXMV/Net-Server-Coro-1.3.tar.gz";
+       sha256 = "11pvfxsi0q37kd17z597wb8r9dv3r96fiagq57kc746k1lmp06hy";
+     };
+     propagatedBuildInputs = [ Coro NetServer ];
+     meta = {
+       description = "A co-operative multithreaded server using Coro";
+       license = with lib.licenses; [ mit ];
+     };
+  };
+
+  NetServerSSPrefork = buildPerlPackage {
+     pname = "Net-Server-SS-PreFork";
+     version = "0.06pre";
+     src = fetchFromGitHub {
+       owner = "kazuho";
+       repo = "p5-Net-Server-SS-PreFork";
+       rev = "5fccc0c270e25c65ef634304630af74b48807d21";
+       sha256 = "0z02labw0dd76sdf301bhrmgnsjds0ddsg22138g8ys4az49bxx6";
+     };
+     checkInputs = [ HTTPMessage LWP TestSharedFork HTTPServerSimple TestTCP TestUNIXSock ];
+     buildInputs = [ ModuleInstall ];
+     propagatedBuildInputs = [ NetServer ServerStarter ];
+     meta = {
+       description = "A hot-deployable variant of Net::Server::PreFork";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  NetSMTPSSL = buildPerlPackage {
+    pname = "Net-SMTP-SSL";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Net-SMTP-SSL-1.04.tar.gz";
+      sha256 = "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv";
+    };
+    propagatedBuildInputs = [ IOSocketSSL ];
+  };
+
+  NetSMTPTLS = buildPerlPackage {
+    pname = "Net-SMTP-TLS";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz";
+      sha256 = "19g48kabj22v66jbf69q78xplhi7r1y2kdbddfwh4xy3g9k75rzg";
+    };
+    propagatedBuildInputs = [ DigestHMAC IOSocketSSL ];
+  };
+
+  NetSMTPTLSButMaintained = buildPerlPackage {
+    pname = "Net-SMTP-TLS-ButMaintained";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FA/FAYLAND/Net-SMTP-TLS-ButMaintained-0.24.tar.gz";
+      sha256 = "0vi5cv7f9i96hgp3q3jpxzn1ysn802kh5xc304f8b7apf67w15bb";
+    };
+    propagatedBuildInputs = [ DigestHMAC IOSocketSSL ];
+  };
+
+  NetSNMP = buildPerlModule {
+    pname = "Net-SNMP";
+    version = "6.0.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DT/DTOWN/Net-SNMP-v6.0.1.tar.gz";
+      sha256 = "0hdpn1cw52x8cw24m9ayzpf4rwarm0khygn1sv3wvwxkrg0pphql";
+    };
+    doCheck = false; # The test suite fails, see https://rt.cpan.org/Public/Bug/Display.html?id=85799
+  };
+
+  NetSNPP = buildPerlPackage rec {
+    pname = "Net-SNPP";
+    version = "1.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBEYA/Net-SNPP-1.17.tar.gz";
+      sha256 = "06b851d64596625e866359fb017dd0d08973e0ebc50c323f4a1d50ecdd868e76";
+    };
+
+    doCheck = false;
+    meta = {
+      description = "Simple Network Pager Protocol Client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetSSH = buildPerlPackage {
+    pname = "Net-SSH";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IV/IVAN/Net-SSH-0.09.tar.gz";
+      sha256 = "7c71c7c3cbe953234dfe25bcc1ad7edb0e1f5a0578601f5523bc6070262a3817";
+    };
+    propagatedBuildInputs = [ pkgs.openssl ];
+    patchPhase = ''
+      sed -i 's|$ssh = "ssh";|$ssh = "${pkgs.openssh}/bin/ssh";|' SSH.pm
+    '';
+    meta = {
+      description = "Simple wrappers around ssh commands.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetSSHPerl = buildPerlPackage {
+    pname = "Net-SSH-Perl";
+    version = "2.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCHWIGON/Net-SSH-Perl-2.14.tar.gz";
+      sha256 = "2b5d1bb13590b5870116704e7f1dce9a9823c4f80ff5461b97bb26a317393017";
+    };
+    propagatedBuildInputs = [ CryptCurve25519 CryptIDEA CryptX FileHomeDir MathGMP StringCRC32 ];
+    preCheck = "export HOME=$TMPDIR";
+    meta = {
+      description = "Perl client Interface to SSH";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetSSLeay = buildPerlPackage {
+    pname = "Net-SSLeay";
+    version = "1.92";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHRISN/Net-SSLeay-1.92.tar.gz";
+      sha256 = "sha256-R8LyswDy5xYtcdaZ9jPdajWwYloAy9qMUKwBFEqTlqk=";
+    };
+    buildInputs = [ pkgs.openssl pkgs.zlib ];
+    doCheck = false; # Test performs network access.
+    preConfigure = ''
+      mkdir openssl
+      ln -s ${pkgs.openssl.out}/lib openssl
+      ln -s ${pkgs.openssl.bin}/bin openssl
+      ln -s ${pkgs.openssl.dev}/include openssl
+      export OPENSSL_PREFIX=$(realpath openssl)
+    '';
+    meta = {
+      description = "Perl extension for using OpenSSL";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  NetStatsd = buildPerlPackage {
+    pname = "Net-Statsd";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/COSIMO/Net-Statsd-0.12.tar.gz";
+      sha256 = "63e453603da165bc6d1c4ca0b55eda3d2204f040c59304a47782c5aa7886565c";
+    };
+    meta = {
+      description = "Sends statistics to the stats daemon over UDP";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetTelnet = buildPerlPackage {
+    pname = "Net-Telnet";
+    version = "3.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JR/JROGERS/Net-Telnet-3.04.tar.gz";
+      sha256 = "e64d567a4e16295ecba949368e7a6b8b5ae2a16b3ad682121d9b007dc5d2a37a";
+    };
+    meta = {
+      description = "Interact with TELNET port or other TCP ports";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetTwitterLite = buildPerlModule {
+    pname = "Net-Twitter-Lite";
+    version = "0.12008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MM/MMIMS/Net-Twitter-Lite-0.12008.tar.gz";
+      sha256 = "13j69a6nqq8mh5b4qk021db55rkfnk1ppwk0rpg68b1z58gvxsmj";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ JSON LWPProtocolHttps ];
+    doCheck = false;
+    meta = {
+      homepage = "https://github.com/semifor/Net-Twitter-Lite";
+      description = "A perl interface to the Twitter API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetWhoisIP = buildPerlPackage {
+    pname = "Net-Whois-IP";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BS/BSCHMITZ/Net-Whois-IP-1.19.tar.gz";
+      sha256 = "08kj2h9qiyfvv3jfz619xl796j93cslg7d96919mnrnjy6hdz6zh";
+    };
+    doCheck = false;
+
+    # https://rt.cpan.org/Public/Bug/Display.html?id=99377
+    postPatch = ''
+      substituteInPlace IP.pm --replace " AutoLoader" ""
+    '';
+    buildInputs = [ RegexpIPv6 ];
+  };
+
+  NetWorks = buildPerlPackage {
+    pname = "Net-Works";
+    version = "0.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAXMIND/Net-Works-0.22.tar.gz";
+      sha256 = "1zz91vn1kdxljnlwllf4dzdsm4v6pja5694vf8l4w66azcyv5j8a";
+    };
+    propagatedBuildInputs = [ ListAllUtils MathInt128 Moo namespaceautoclean ];
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "Sane APIs for IP addresses and networks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NumberBytesHuman = buildPerlPackage {
+    pname = "Number-Bytes-Human";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FERREIRA/Number-Bytes-Human-0.11.tar.gz";
+      sha256 = "0b3gprpbcrdwc2gqalpys5m2ngilh5injhww8y0gf3dln14rrisz";
+    };
+  };
+
+  NumberCompare = buildPerlPackage {
+    pname = "Number-Compare";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Number-Compare-0.03.tar.gz";
+      sha256 = "09q8i0mxvr7q9vajwlgawsi0hlpc119gnhq4hc933d03x0vkfac3";
+    };
+  };
+
+  NumberFormat = buildPerlPackage {
+    pname = "Number-Format";
+    version = "1.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WR/WRW/Number-Format-1.75.tar.gz";
+      sha256 = "82d659cb16461764fd44d11a9ce9e6a4f5e8767dc1069eb03467c6e55de257f3";
+    };
+    meta = {
+      description = "Perl extension for formatting numbers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NumberFraction = buildPerlModule {
+    pname = "Number-Fraction";
+    version = "3.0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVECROSS/Number-Fraction-v3.0.3.tar.gz";
+      sha256 = "1vqhd6ngrxhfykf4qz358divjhcnp9v688fp3zi6n5757x1sl01v";
+    };
+    propagatedBuildInputs = [ Moo MooXTypesMooseLike ];
+    meta = {
+      description = "Perl extension to model fractions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NumberMisc = buildPerlModule {
+     pname = "Number-Misc";
+     version = "1.2";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIKO/Number-Misc-1.2.tar.gz";
+       sha256 = "1n4ivj4ydplanwbxn3jbsfyfcl91ngn2d0addzqrq1hac26bdfbp";
+     };
+     meta = {
+       description = "Number::Misc - handy utilities for numbers";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  NumberWithError = buildPerlPackage {
+    pname = "Number-WithError";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Number-WithError-1.01.tar.gz";
+      sha256 = "0m7my372rcj2d3j8xvhqdlhnnvxqabasvpvvhdkyli3qgrra1xnz";
+    };
+    propagatedBuildInputs = [ ParamsUtil prefork ];
+    buildInputs = [ TestLectroTest ];
+    meta = {
+      description = "Numbers with error propagation and scientific rounding";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NTLM = buildPerlPackage {
+    pname = "NTLM";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NB/NBEBOUT/NTLM-1.09.tar.gz";
+      sha256 = "c823e30cda76bc15636e584302c960e2b5eeef9517c2448f7454498893151f85";
+    };
+    propagatedBuildInputs = [ DigestHMAC ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.pSub ];
+    };
+  };
+
+  ObjectAccessor = buildPerlPackage {
+    pname = "Object-Accessor";
+    version = "0.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Object-Accessor-0.48.tar.gz";
+      sha256 = "76cb824a27b6b4e560409fcf6fd5b3bfbbd38b72f1f3d37ed0b54bd9c0baeade";
+    };
+    meta = {
+      description = "Per object accessors";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ObjectEvent = buildPerlPackage rec {
+    pname = "Object-Event";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EL/ELMEX/${pname}-${version}.tar.gz";
+      sha256 = "ab6bb80508f4fddaf2d51b20ca876aab038582a86b5228e6435411348af53c82";
+    };
+    propagatedBuildInputs = [ AnyEvent commonsense ];
+    meta = {
+      description = "A class that provides an event callback interface";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ObjectInsideOut = buildPerlModule {
+    pname = "Object-InsideOut";
+    version = "4.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JD/JDHEDDEN/Object-InsideOut-4.05.tar.gz";
+      sha256 = "1i6aif37ji91nsyncp5d0d3q29clf009sxdn1rz38917hai6rzcx";
+    };
+    propagatedBuildInputs = [ ExceptionClass ];
+    meta = {
+      description = "Comprehensive inside-out object support module";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ObjectSignature = buildPerlPackage {
+    pname = "Object-Signature";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Object-Signature-1.08.tar.gz";
+      sha256 = "12k90c19ly93ib1p6sm3k7sbnr2h5dbywkdmnff2ngm99p4m68c4";
+    };
+    meta = {
+      description = "Generate cryptographic signatures for objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  OggVorbisHeaderPurePerl = buildPerlPackage {
+    pname = "Ogg-Vorbis-Header-PurePerl";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVECROSS/Ogg-Vorbis-Header-PurePerl-1.05.tar.gz";
+      sha256 = "0gm5zl1zdi7wra64qz5mm93rkhypwvmaccvcn2k24w9dyh43h7aj";
+    };
+
+    # The testing mechanism is erorrneous upstream. See http://matrix.cpantesters.org/?dist=Ogg-Vorbis-Header-PurePerl+1.0
+    doCheck = false;
+    meta = {
+      description = "An object-oriented interface to Ogg Vorbis information and comment fields";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  OLEStorage_Lite = buildPerlPackage {
+    pname = "OLE-Storage_Lite";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMCNAMARA/OLE-Storage_Lite-0.20.tar.gz";
+      sha256 = "1fpqhhgb8blj4hhs97fsbnbhk29s9yms057a9s9yl20f3hbsc65b";
+    };
+    meta = {
+      description = "Read and write OLE storage files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Opcodes = buildPerlPackage {
+    pname = "Opcodes";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Opcodes-0.14.tar.gz";
+      sha256 = "7f7365447e4d1c5b87b43091448f0488e67c9f036b26c022a5409cd73d343893";
+    };
+    meta = {
+      description = "More Opcodes information from opnames.h and opcode.h";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  OpenAPIClient = buildPerlPackage rec {
+    pname = "OpenAPI-Client";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHTHORSEN/OpenAPI-Client-1.00.tar.gz";
+      sha256 = "41bcf211c1123fbfb844413aa53f97061410b592591367b61273a206865991f7";
+    };
+    propagatedBuildInputs = [ MojoliciousPluginOpenAPI ];
+    meta = {
+      homepage = "https://github.com/jhthorsen/openapi-client";
+      description = "A client for talking to an Open API powered server";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  OpenGL = buildPerlPackage rec {
+    pname = "OpenGL";
+    version = "0.70";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHM/OpenGL-0.70.tar.gz";
+      sha256 = "1q3lz168q081iwl9jg21fbzhp9la79gav9mv6nmh2jab83s2l3mj";
+    };
+
+    # FIXME: try with libGL + libGLU instead of libGLU libGL
+    buildInputs = [ pkgs.libGLU pkgs.libGL pkgs.libGLU pkgs.freeglut pkgs.xorg.libX11 pkgs.xorg.libXi pkgs.xorg.libXmu pkgs.xorg.libXext pkgs.xdummy ];
+
+    patches = [ ../development/perl-modules/perl-opengl.patch ];
+
+    configurePhase = ''
+      substituteInPlace Makefile.PL \
+        --replace "@@libpaths@@" '${lib.concatStringsSep "\n" (map (f: "-L${f}/lib") buildInputs)}'
+
+      cp -v ${../development/perl-modules/perl-opengl-gl-extensions.txt} utils/glversion.txt
+
+      perl Makefile.PL PREFIX=$out INSTALLDIRS=site $makeMakerFlags
+    '';
+
+    doCheck = false;
+  };
+
+  OpenOfficeOODoc = buildPerlPackage {
+    pname = "OpenOffice-OODoc";
+    version = "2.125";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMGDOC/OpenOffice-OODoc-2.125.tar.gz";
+      sha256 = "1dnsj63svxq0hi3aci4x7binql8kr754inlkks5jmi4k0sblh561";
+    };
+    propagatedBuildInputs = [ ArchiveZip XMLTwig ];
+    meta = {
+      license = with lib.licenses; [ lgpl21 ];
+      maintainers = [ maintainers.wentasah ];
+    };
+  };
+
+  NetOpenIDCommon = buildPerlPackage {
+    pname = "Net-OpenID-Common";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WR/WROG/Net-OpenID-Common-1.20.tar.gz";
+      sha256 = "1jdbkp18ka2m4akjp9b0dbw2lqnzgwpq435cnh6hwwa79bbrfkmb";
+    };
+    propagatedBuildInputs = [ CryptDHGMP XMLSimple ];
+  };
+
+  NetOpenIDConsumer = buildPerlPackage {
+    pname = "Net-OpenID-Consumer";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WR/WROG/Net-OpenID-Consumer-1.18.tar.gz";
+      sha256 = "0f2g6sczvbpyjmy14pabmrj0d48hlsndqswrvmqk1161wxpkh70f";
+    };
+    propagatedBuildInputs = [ JSON NetOpenIDCommon ];
+    buildInputs = [ CGI ];
+  };
+
+  NetOpenSSH = buildPerlPackage {
+    pname = "Net-OpenSSH";
+    version = "0.80";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Net-OpenSSH-0.80.tar.gz";
+      sha256 = "1cxfipxfmgzfwpn1i0gf39gbrr56i2aqb0i9593n3czjgmjr7q7y";
+    };
+    meta = {
+      description = "Perl SSH client package implemented on top of OpenSSH";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  NetZooKeeper = buildPerlPackage {
+    pname = "Net-ZooKeeper";
+    version = "0.42pre";
+    src = fetchFromGitHub {
+      owner = "mark-5";
+      repo = "p5-net-zookeeper";
+      rev = "66e1a360aff9c39af728c36092b540a4b6045f70";
+      sha256 = "0xl8lcv9gfv0nn8vrrxa4az359whqdhmzw4r51nn3add8pn3s9ip";
+    };
+    buildInputs = [ pkgs.zookeeper_mt ];
+    nativeBuildInputs = [ pkgs.gnused ];
+    # fix "error: format not a string literal and no format arguments [-Werror=format-security]"
+    hardeningDisable = [ "format" ];
+    # Make the async API accessible
+    NIX_CFLAGS_COMPILE = "-DTHREADED";
+    NIX_CFLAGS_LINK = "-L${pkgs.zookeeper_mt.out}/lib -lzookeeper_mt";
+    # Most tests are skipped as no server is available in the sandbox.
+    # `t/35_log.t` seems to suffer from a race condition; remove it.  See
+    # https://github.com/NixOS/nixpkgs/pull/104889#issuecomment-737144513
+    preCheck = ''
+      rm t/35_log.t
+    '' + 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 = lib.licenses.asl20;
+    };
+  };
+
+  PackageConstants = buildPerlPackage {
+    pname = "Package-Constants";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Package-Constants-0.06.tar.gz";
+      sha256 = "0b58be78706ccc4e4bd9bbad41767470427fd7b2cfad749489de101f85bc5df5";
+    };
+    meta = {
+      description = "List constants defined in a package";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PackageDeprecationManager = buildPerlPackage {
+    pname = "Package-DeprecationManager";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Package-DeprecationManager-0.17.tar.gz";
+      sha256 = "1d743ada482b5c9871d894966e87d4c20edc96931bb949fb2638b000ddd6684b";
+    };
+    buildInputs = [ TestFatal TestWarnings ];
+    propagatedBuildInputs = [ PackageStash ParamsUtil SubInstall SubName ];
+    meta = {
+      description = "Manage deprecation warnings for your distribution";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  PatchReader = buildPerlPackage {
+    pname = "PatchReader";
+    version = "0.9.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TM/TMANNERM/PatchReader-0.9.6.tar.gz";
+      sha256 = "b8de37460347bb5474dc01916ccb31dd2fe0cd92242c4a32d730e8eb087c323c";
+    };
+    meta = {
+      description = "Utilities to read and manipulate patches and CVS";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  PackageStash = buildPerlPackage {
+    pname = "Package-Stash";
+    version = "0.39";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Package-Stash-0.39.tar.gz";
+      sha256 = "1d914qnnpiyimfi57crzb6r31nl613g2k48frs9h821f25azarci";
+    };
+    buildInputs = [ CPANMetaCheck TestFatal TestNeeds TestRequires ];
+    propagatedBuildInputs = [ DistCheckConflicts ModuleImplementation ];
+    meta = {
+      description = "Routines for manipulating stashes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PackageStashXS = buildPerlPackage {
+    pname = "Package-Stash-XS";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Package-Stash-XS-0.29.tar.gz";
+      sha256 = "1akqk10qxwk798qppajqbczwmhy4cs9g0lg961m3vq218slnnryk";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    meta = {
+      description = "Faster and more correct implementation of the Package::Stash API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Pango = buildPerlPackage {
+    pname = "Pango";
+    version = "1.227";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAOC/Pango-1.227.tar.gz";
+      sha256 = "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l";
+    };
+    buildInputs = [ pkgs.pango ];
+    propagatedBuildInputs = [ Cairo Glib ];
+    meta = {
+      homepage = "http://gtk2-perl.sourceforge.net/";
+      description = "Layout and render international text";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  ParallelForkManager = buildPerlPackage {
+    pname = "Parallel-ForkManager";
+    version = "2.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YANICK/Parallel-ForkManager-2.02.tar.gz";
+      sha256 = "c1b2970a8bb666c3de7caac4a8f4dbcc043ab819bbc337692ec7bf27adae4404";
+    };
+    buildInputs = [ TestWarn ];
+    meta = {
+      homepage = "https://github.com/dluxhu/perl-parallel-forkmanager";
+      description = "A simple parallel processing fork manager";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ Moo ];
+  };
+
+  ParallelPipes = buildPerlModule {
+    pname = "Parallel-Pipes";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKAJI/Parallel-Pipes-0.005.tar.gz";
+      sha256 = "44bd9e2be33d7b314f81c9b886a95d53514689090635f9fad53181f2d3051fd5";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    meta = {
+      homepage = "https://github.com/skaji/Parallel-Pipes";
+      description = "Parallel processing using pipe(2) for communication and synchronization";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  ParallelPrefork = buildPerlPackage {
+    pname = "Parallel-Prefork";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/Parallel-Prefork-0.18.tar.gz";
+      sha256 = "f1c1f48f1ae147a58bc88f9cb2f570d6bb15ea4c0d589abd4c3084ddc961596e";
+    };
+    buildInputs = [ TestRequires TestSharedFork ];
+    propagatedBuildInputs = [ ClassAccessorLite ListMoreUtils ProcWait3 ScopeGuard SignalMask ];
+    meta = {
+      description = "A simple prefork server framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ParamsClassify = buildPerlModule {
+    pname = "Params-Classify";
+    version = "0.015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Params-Classify-0.015.tar.gz";
+      sha256 = "052r198xyrsv8wz21gijdigz2cgnidsa37nvyfzdiz4rv1fc33ir";
+    };
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+  };
+
+  ParamsUtil = buildPerlPackage {
+    pname = "Params-Util";
+    version = "1.102";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/Params-Util-1.102.tar.gz";
+      sha256 = "00kl154zisf2zsl8yl6xa6yw54nhd9cja5d5fyigs96vhasb36s9";
+    };
+    meta = {
+      description = "Simple, compact and correct param-checking functions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ParamsValidate = buildPerlModule {
+    pname = "Params-Validate";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Params-Validate-1.30.tar.gz";
+      sha256 = "04nqfgib2w529na6wjfxfrp54zdyyn91yb40iizd099i7mc3afls";
+    };
+    buildInputs = [ TestFatal TestRequires ];
+    propagatedBuildInputs = [ ModuleImplementation ];
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "Validate method/function parameters";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  ParamsValidationCompiler = buildPerlPackage {
+     pname = "Params-ValidationCompiler";
+     version = "0.30";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DR/DROLSKY/Params-ValidationCompiler-0.30.tar.gz";
+       sha256 = "1jqn1l4m4i341g14kmjsf3a1kn7vv6z89cix0xjjgr1v70iywnyw";
+     };
+     propagatedBuildInputs = [ EvalClosure ExceptionClass ];
+     buildInputs = [ Specio Test2PluginNoWarnings Test2Suite TestWithoutModule ];
+     meta = {
+       description = "Build an optimized subroutine parameter validator once, use it forever";
+       license = with lib.licenses; [ artistic2 ];
+     };
+  };
+
+  Paranoid = buildPerlPackage {
+    pname = "Paranoid";
+    version = "2.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORLISS/Paranoid/Paranoid-2.07.tar.gz";
+      sha256 = "b55cfd8c6d5f181e218efd012f711a50cd14e4dbc8804650b95477178f43b7fc";
+    };
+    patches = [ ../development/perl-modules/Paranoid-blessed-path.patch ];
+    preConfigure = ''
+      # Capture the path used when compiling this module as the "blessed"
+      # system path, analogous to the module's own use of '/bin:/sbin'.
+      sed -i "s#__BLESSED_PATH__#${pkgs.coreutils}/bin#" lib/Paranoid.pm t/01_init_core.t
+    '';
+    meta = {
+      description = "General function library for safer, more secure programming";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  PARDist = buildPerlPackage {
+    pname = "PAR-Dist";
+    version = "0.51";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSCHUPP/PAR-Dist-0.51.tar.gz";
+      sha256 = "1y6z6fpp6wclmk4x3nzsxv869i56668y1i74828g72dnz4nhchnj";
+    };
+    meta = {
+      description = "Create and manipulate PAR distributions";
+    };
+  };
+
+  PAUSEPermissions = buildPerlPackage {
+     pname = "PAUSE-Permissions";
+     version = "0.17";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/PAUSE-Permissions-0.17.tar.gz";
+       sha256 = "021ink414w4mdk6rd54cc1f23kfqg0zk4njx4ngr0bw3wc6r4kks";
+     };
+     propagatedBuildInputs = [ FileHomeDir HTTPDate MooXOptions TimeDurationParse ];
+     buildInputs = [ PathTiny ];
+     meta = {
+       description = "interface to PAUSE's module permissions file (06perms.txt)";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/PAUSE-Permissions";
+     };
+  };
+
+  Parent = buildPerlPackage {
+    pname = "parent";
+    version = "0.238";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORION/parent-0.238.tar.gz";
+      sha256 = "1lfjqjxsvgpsn6ycah4z0qygkykj4v8ca3cdki61k2p2ygg8zx9q";
+    };
+  };
+
+  ParseDebControl = buildPerlPackage {
+    pname = "Parse-DebControl";
+    version = "2.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JAYBONCI/Parse-DebControl-2.005.tar.gz";
+      sha256 = "0ad78qri4sg9agghqdm83xsjgks94yvffs23kppy7mqjy8gwwjxn";
+    };
+    propagatedBuildInputs = [ IOStringy LWP ];
+    meta = with lib; {
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ParseIRC = buildPerlPackage {
+    pname = "Parse-IRC";
+    version = "1.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Parse-IRC-1.22.tar.gz";
+      sha256 = "457b09897f37d38a7054f9563247365427fe24101622ed4c7f054723a45b58d5";
+    };
+    meta = {
+      homepage = "https://github.com/bingos/parse-irc";
+      description = "A parser for the IRC protocol";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  ParseLocalDistribution = buildPerlPackage {
+     pname = "Parse-LocalDistribution";
+     version = "0.19";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Parse-LocalDistribution-0.19.tar.gz";
+       sha256 = "17p92nj4k3acrqqjnln1j5x8hbra9jkx5hdcybrq37ld9qnc62vb";
+     };
+     propagatedBuildInputs = [ ParsePMFile ];
+     buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
+     meta = {
+       description = "parses local .pm files as PAUSE does";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ParsePlainConfig = buildPerlPackage {
+    pname = "Parse-PlainConfig";
+    version = "3.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORLISS/Parse-PlainConfig/Parse-PlainConfig-3.05.tar.gz";
+      sha256 = "6b78a8552398b0d2d7063505c93b3cfed0432c5b2cf6e00b8e51febf411c1efa";
+    };
+    propagatedBuildInputs = [ ClassEHierarchy Paranoid ];
+    meta = {
+      description = "Parser/Generator of human-readable conf files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  ParsePMFile = buildPerlPackage {
+     pname = "Parse-PMFile";
+     version = "0.43";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Parse-PMFile-0.43.tar.gz";
+       sha256 = "08q6j1lw5l49yhzx8gm4zal7zp1gk58iacpda86cyf27403yhqdy";
+     };
+     buildInputs = [ ExtUtilsMakeMakerCPANfile ];
+     meta = {
+       description = "parses .pm file as PAUSE does";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ParseRecDescent = buildPerlModule {
+    pname = "Parse-RecDescent";
+    version = "1.967015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JT/JTBRAUN/Parse-RecDescent-1.967015.tar.gz";
+      sha256 = "1943336a4cb54f1788a733f0827c0c55db4310d5eae15e542639c9dd85656e37";
+    };
+    meta = {
+      description = "Generate Recursive-Descent Parsers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ParseSyslog = buildPerlPackage {
+    pname = "Parse-Syslog";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DS/DSCHWEI/Parse-Syslog-1.10.tar.gz";
+      sha256 = "659a2145441ef36d9835decaf83da308fcd03f49138cb3d90928e8bfc9f139d9";
+    };
+  };
+
+  ParserMGC = buildPerlModule {
+    pname = "Parser-MGC";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Parser-MGC-0.16.tar.gz";
+      sha256 = "14bv2fwg59q4s3kv0vf11hh222anlm181ig87cph2f68y32n2i3l";
+    };
+    propagatedBuildInputs = [ FileSlurpTiny ];
+    meta = {
+      description = "build simple recursive-descent parsers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ParseYapp = buildPerlPackage {
+    pname = "Parse-Yapp";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WB/WBRASWELL/Parse-Yapp-1.21.tar.gz";
+      sha256 = "1r8kbyk0qd4ficmabj753kjpq0ib0csk01169w7jxflg62cfj41q";
+    };
+    meta = {
+      description = "Perl extension for generating and using LALR parsers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PathClass = buildPerlModule {
+    pname = "Path-Class";
+    version = "0.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KW/KWILLIAMS/Path-Class-0.37.tar.gz";
+      sha256 = "1kj8q8dmd8jci94w5arav59nkp0pkxrkliz4n8n6yf02hsa82iv5";
+    };
+    meta = {
+      description = "Cross-platform path specification manipulation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PathDispatcher = buildPerlPackage {
+    pname = "Path-Dispatcher";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Path-Dispatcher-1.08.tar.gz";
+      sha256 = "79a9f61c27408b4fd1ed234dac246974ddeafa7fe635a18fe41ec7783130ae2a";
+    };
+    buildInputs = [ ModuleBuildTiny TestFatal ];
+    propagatedBuildInputs = [ Moo MooXTypeTiny TryTiny TypeTiny ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/Path-Dispatcher";
+      description = "Flexible and extensible dispatch";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PathIteratorRule = buildPerlPackage {
+    pname = "Path-Iterator-Rule";
+    version = "1.014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Path-Iterator-Rule-1.014.tar.gz";
+      sha256 = "19mik0r5v1cmxfxm0h4lwqyj0nmq6jgnvvq96hqcjgylpvc02x1z";
+    };
+    propagatedBuildInputs = [ NumberCompare TextGlob TryTiny ];
+    buildInputs = [ Filepushd PathTiny TestDeep TestFilename ];
+    meta = {
+      description = "Iterative, recursive file finder";
+      license = with lib.licenses; [ asl20 ];
+      homepage = "https://github.com/dagolden/Path-Iterator-Rule";
+    };
+  };
+
+  PathTiny = buildPerlPackage {
+    pname = "Path-Tiny";
+    version = "0.114";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.114.tar.gz";
+      sha256 = "cd0f88f37a58fc3667ec065767fe01e73ee6efa18a112bfd3508cf6579ca00e1";
+    };
+    meta = {
+      description = "File path utility";
+      license = lib.licenses.asl20;
+    };
+    preConfigure =
+      ''
+        substituteInPlace lib/Path/Tiny.pm --replace 'use File::Spec 3.40' \
+          'use File::Spec 3.39'
+      '';
+    # This appears to be currently failing tests, though I don't know why.
+    # -- ocharles
+    doCheck = false;
+  };
+
+  PathTools = buildPerlPackage {
+    pname = "PathTools";
+    version = "3.75";
+    preConfigure = ''
+      substituteInPlace Cwd.pm --replace '/usr/bin/pwd' '${pkgs.coreutils}/bin/pwd'
+    '';
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XS/XSAWYERX/PathTools-3.75.tar.gz";
+      sha256 = "a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2";
+    };
+  };
+
+  PBKDF2Tiny = buildPerlPackage {
+    pname = "PBKDF2-Tiny";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/PBKDF2-Tiny-0.005.tar.gz";
+      sha256 = "b4e21dc59b30265eaaa41b705087ec03447d9c655a14ac40ff46e4de29eabf8e";
+    };
+    meta = {
+      homepage = "https://github.com/dagolden/PBKDF2-Tiny";
+      description = "Minimalist PBKDF2 (RFC 2898) with HMAC-SHA1 or HMAC-SHA2";
+      license = lib.licenses.asl20;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  pcscperl = buildPerlPackage {
+    pname = "pcsc-perl";
+    version = "1.4.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WH/WHOM/pcsc-perl-1.4.14.tar.bz2";
+      sha256 = "17f6i16jv6ci6459vh6y3sz94vgcvykjjszcl4xsykryakjvf8i7";
+    };
+    buildInputs = [ pkgs.pcsclite ];
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    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 = lib.licenses.gpl2Plus;
+      maintainers = with maintainers; [ abbradar ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.pcscperl.x86_64-darwin
+    };
+  };
+
+  PDFAPI2 = buildPerlPackage {
+    pname = "PDF-API2";
+    version = "2.042";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SS/SSIMMS/PDF-API2-2.042.tar.gz";
+      sha256 = "0p9wsnn60mcxr4032ahai0d56x8gw76ydym2l4qxq086a10jk6db";
+    };
+    buildInputs = [ TestException TestMemoryCycle ];
+    propagatedBuildInputs = [ FontTTF ];
+    meta = {
+      description = "Facilitates the creation and modification of PDF files";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  PDFBuilder = buildPerlPackage {
+    pname = "PDF-Builder";
+    version = "3.023";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMPERRY/PDF-Builder-3.022.tar.gz";
+      sha256 = "SCskaQxxhfLn+7r5pIKz0SieJduAC/SPKVn1Epl3yjE=";
+    };
+    checkInputs = [ TestException TestMemoryCycle ];
+    propagatedBuildInputs = [ FontTTF ];
+    meta = {
+      description = "Facilitates the creation and modification of PDF files";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  PDL = buildPerlPackage rec {
+    pname = "PDL";
+    version = "2.025";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/PDL-2.025.tar.gz";
+      sha256 = "1mlab95ij5a4q5pkrmgfas8x46cms2vqwzyjvaajsxr7mmz1cnhv";
+    };
+    patchPhase = ''
+      substituteInPlace perldl.conf \
+        --replace 'POSIX_THREADS_LIBS => undef' 'POSIX_THREADS_LIBS => "-L${pkgs.glibc.dev}/lib"' \
+        --replace 'POSIX_THREADS_INC  => undef' 'POSIX_THREADS_INC  => "-I${pkgs.glibc.dev}/include"' \
+        --replace 'WITH_MINUIT => undef' 'WITH_MINUIT => 0' \
+        --replace 'WITH_SLATEC => undef' 'WITH_SLATEC => 0' \
+        --replace 'WITH_HDF => undef' 'WITH_HDF => 0' \
+        --replace 'WITH_GD => undef' 'WITH_GD => 0' \
+        --replace 'WITH_PROJ => undef' 'WITH_PROJ => 0'
+    '';
+
+    nativeBuildInputs = with pkgs; [ autoPatchelfHook libGL.dev glibc.dev mesa_glu.dev ];
+
+    buildInputs = [ DevelChecklib TestDeep TestException TestWarn ] ++
+                  (with pkgs; [ gsl freeglut xorg.libXmu xorg.libXi ]);
+
+    propagatedBuildInputs = [
+      AstroFITSHeader
+      ConvertUU
+      ExtUtilsF77
+      FileMap
+      Inline
+      InlineC
+      ListMoreUtils
+      ModuleCompile
+      OpenGL
+      PodParser
+      TermReadKey
+    ];
+
+    meta = {
+      homepage = "http://pdl.perl.org/";
+      description = "Perl Data Language";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  Pegex = buildPerlPackage {
+    pname = "Pegex";
+    version = "0.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Pegex-0.75.tar.gz";
+      sha256 = "4dc8d335de80b25247cdb3f946f0d10d9ba0b3c34b0ed7d00316fd068fd05edc";
+    };
+    buildInputs = [ TestPod TieIxHash ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/pegex-pm";
+      description = "Acmeist PEG Parser Framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ FileShareDirInstall XXX ];
+  };
+
+  PerconaToolkit = callPackage ../development/perl-modules/Percona-Toolkit { };
+
+  Perl5lib = buildPerlPackage {
+    pname = "perl5lib";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NO/NOBULL/perl5lib-1.02.tar.gz";
+      sha256 = "1b6fgs8wy2a7ff8rr1qdvdghhvlpr1pv760k4i2c8lq1hhjnkf94";
+    };
+  };
+
+  Perlosnames = buildPerlPackage {
+    pname = "Perl-osnames";
+    version = "0.122";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLANCAR/Perl-osnames-0.122.tar.gz";
+      sha256 = "7075939d747e375178d00348d00c52ff9db2cebb18bae7473dcb09df825118a0";
+    };
+    meta = {
+      description = "List possible $^O ($OSNAME) values, with description";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlCritic = buildPerlModule {
+    pname = "Perl-Critic";
+    version = "1.140";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Perl-Critic-1.140.tar.gz";
+      sha256 = "1nzxpn71mrpp85yxrxlraj52q2skvf9ja887ls11d57h6smg1vmz";
+    };
+    buildInputs = [ TestDeep ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    propagatedBuildInputs = [ BKeywords ConfigTiny FileWhich ListMoreUtils ModulePluggable PPIxQuoteLike PPIxRegexp PPIxUtilities PerlTidy PodSpell StringFormat ];
+    meta = {
+      homepage = "http://perlcritic.com";
+      description = "Critique Perl source code for best-practices";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/perlcritic
+    '';
+  };
+
+  PerlCriticCommunity = buildPerlModule {
+    pname = "Perl-Critic-Community";
+    version = "1.0.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Perl-Critic-Community-v1.0.0.tar.gz";
+      sha256 = "311b775da4193e9de94cf5225e993cc54dd096ae1e7ef60738cdae1d9b8854e7";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ PPI PathTiny PerlCritic PerlCriticPolicyVariablesProhibitLoopOnHash PerlCriticPulp ];
+    meta = {
+      homepage = "https://github.com/Grinnz/Perl-Critic-Community";
+      description = "Community-inspired Perl::Critic policies";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  PerlCriticMoose = buildPerlPackage rec {
+    pname = "Perl-Critic-Moose";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Perl-Critic-Moose-${version}.tar.gz";
+      sha256 = "0092z583c3q3gqry693ck3ibkzby04a1g8lpw9zz2hr6qhi8xssj";
+    };
+    propagatedBuildInputs = [ PerlCritic Readonly namespaceautoclean ];
+    meta = {
+      description = "Policies for Perl::Critic concerned with using Moose";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  PerlCriticPolicyVariablesProhibitLoopOnHash = buildPerlPackage {
+    pname = "Perl-Critic-Policy-Variables-ProhibitLoopOnHash";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XS/XSAWYERX/Perl-Critic-Policy-Variables-ProhibitLoopOnHash-0.008.tar.gz";
+      sha256 = "12f5f0be96ea1bdc7828058577bd1c5c63ca23c17fac9c3709452b3dff5b84e0";
+    };
+    propagatedBuildInputs = [ PerlCritic ];
+    meta = {
+      description = "Don't write loops on hashes, only on keys and values of hashes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlCriticPulp = buildPerlPackage {
+    pname = "Perl-Critic-Pulp";
+    version = "99";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/Perl-Critic-Pulp-99.tar.gz";
+      sha256 = "b8fda842fcbed74d210257c0a284b6dc7b1d0554a47a3de5d97e7d542e23e7fe";
+    };
+    propagatedBuildInputs = [ IOString ListMoreUtils PPI PerlCritic PodMinimumVersion ];
+    meta = {
+      homepage = "http://user42.tuxfamily.org/perl-critic-pulp/index.html";
+      description = "Some add-on policies for Perl::Critic";
+      license = lib.licenses.gpl3Plus;
+    };
+  };
+
+  PerlDestructLevel = buildPerlPackage {
+    pname = "Perl-Destruct-Level";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RG/RGARCIA/Perl-Destruct-Level-0.02.tar.gz";
+      sha256 = "0fyiysrq874ncscgdjg522fs29gvqads6ynyhwxwwq1b545srd20";
+    };
+    meta = {
+    };
+  };
+
+  PerlIOLayers = buildPerlModule {
+    pname = "PerlIO-Layers";
+    version = "0.012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/PerlIO-Layers-0.012.tar.gz";
+      sha256 = "1psaq3kwlk7g9rxvgsacfjk2mh6cscqf4xl7ggfkzfrnz91aabal";
+    };
+    perlPreHook = "export LD=$CC";
+    meta = {
+      description = "Querying your filehandle's capabilities";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlIOeol = buildPerlPackage {
+    pname = "PerlIO-eol";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/PerlIO-eol-0.17.tar.gz";
+      sha256 = "1fayp27vcmypqyzcd4003036h3g5zy6jk1ia25frdca58pzcpk6f";
+    };
+  };
+
+  PerlIOgzip = buildPerlPackage {
+    pname = "PerlIO-gzip";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NW/NWCLARK/PerlIO-gzip-0.20.tar.gz";
+      sha256 = "4848679a3f201e3f3b0c5f6f9526e602af52923ffa471a2a3657db786bd3bdc5";
+    };
+    buildInputs = [ pkgs.zlib ];
+    NIX_CFLAGS_LINK = "-L${pkgs.zlib.out}/lib -lz";
+    meta = {
+      description = "Perl extension to provide a PerlIO layer to gzip/gunzip";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlIOutf8_strict = buildPerlPackage {
+    pname = "PerlIO-utf8_strict";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/PerlIO-utf8_strict-0.008.tar.gz";
+      sha256 = "0ngl9p3kh7as1yx1az66yhbxhrh664vzhl3qnlhx9iywa3nqsyaz";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      description = "Fast and correct UTF-8 IO";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlIOviadynamic = buildPerlPackage {
+    pname = "PerlIO-via-dynamic";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/PerlIO-via-dynamic-0.14.tar.gz";
+      sha256 = "0jbb3xpbqzmr625blvnjszd69l3cwxzi7bhmkj5x48dgv3s7mkca";
+    };
+  };
+
+  PerlIOviasymlink = buildPerlPackage {
+    pname = "PerlIO-via-symlink";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLKAO/PerlIO-via-symlink-0.05.tar.gz";
+      sha256 = "0lidddcaz9anddqrpqk4zwm550igv6amdhj86i2jjdka9b1x81s1";
+    };
+
+    buildInputs = [ ModuleInstall ];
+
+    postPatch = ''
+      # remove outdated inc::Module::Install included with module
+      # causes build failure for perl5.18+
+      rm -r  inc
+    '';
+  };
+
+  PerlIOviaTimeout = buildPerlModule {
+    pname = "PerlIO-via-Timeout";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAMS/PerlIO-via-Timeout-0.32.tar.gz";
+      sha256 = "9278f9ef668850d913d98fa4c0d7e7d667cff3503391f4a4eae73a246f2e7916";
+    };
+    buildInputs = [ ModuleBuildTiny TestSharedFork TestTCP ];
+    meta = {
+      description = "A PerlIO layer that adds read & write timeout to a handle";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  perlldap = buildPerlPackage {
+    pname = "perl-ldap";
+    version = "0.66";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARSCHAP/perl-ldap-0.66.tar.gz";
+      sha256 = "09263ce6166e80c98d689d41d09995b813389fd069b784601f6dc57f8e2b4102";
+    };
+    buildInputs = [ TextSoundex ];
+    propagatedBuildInputs = [ ConvertASN1 ];
+    meta = {
+      homepage = "http://ldap.perl.org/";
+      description = "LDAP client library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  PerlMagick = ImageMagick; # added 2021-08-02
+  ImageMagick = buildPerlPackage rec {
+    pname = "Image-Magick";
+    version = "7.0.11-1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JC/JCRISTY/Image-Magick-${version}.tar.gz";
+      sha256 = "sha256-c0vuFmVq9bypQABBnZElGIQrpkYKwtD/B+PloBAycuI=";
+    };
+    buildInputs = [ pkgs.imagemagick ];
+    preConfigure =
+      ''
+        sed -i -e 's|my \$INC_magick = .*|my $INC_magick = "-I${pkgs.imagemagick.dev}/include/ImageMagick";|' Makefile.PL
+      '';
+  };
+
+  PerlTidy = buildPerlPackage rec {
+    pname = "Perl-Tidy";
+    version = "20211029";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHANCOCK/Perl-Tidy-20211029.tar.gz";
+      sha256 = "1nhfi3gb8gif9p34m4ycqw0k8992yy42c21hk9b99l2pdbiv20zc";
+    };
+    meta = {
+      description = "Indent and reformat perl scripts";
+      license = lib.licenses.gpl2Plus;
+    };
+  };
+
+  PHPSerialization = buildPerlPackage {
+    pname = "PHP-Serialization";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/PHP-Serialization-0.34.tar.gz";
+      sha256 = "0yphqsgg7zrar2ywk2j2fnjxmi9rq32yf0p5ln8m9fmfx4kd84mr";
+    };
+    meta = {
+      description = "Simple flexible means of converting the output of PHP's serialize() into the equivalent Perl memory structure, and vice versa";
+    };
+  };
+
+  PkgConfig = buildPerlPackage rec {
+    pname = "PkgConfig";
+    version = "0.25026";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/PkgConfig-0.25026.tar.gz";
+      sha256 = "1862hzlkibqsgynrnwg43acycp4rlsv19gsybjwq39nnqb9mxfjd";
+    };
+    # support cross-compilation by simplifying the way we get version during build
+    postPatch = ''
+      substituteInPlace Makefile.PL --replace \
+        'do { require "./lib/PkgConfig.pm"; $PkgConfig::VERSION; }' \
+        '"${version}"'
+    '';
+    meta = {
+      description = "Pure-Perl Core-Only replacement for pkg-config";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = teams.deshaw.members;
+    };
+  };
+
+  Plack = buildPerlPackage {
+    pname = "Plack";
+    version = "1.0048";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-1.0048.tar.gz";
+      sha256 = "19j2wnzsl0wl31ww4c2p1pahidwsr9hnylm2as8qadxl35gg5x9h";
+    };
+    buildInputs = [ AuthenSimplePasswd CGIEmulatePSGI FileShareDirInstall HTTPRequestAsCGI HTTPServerSimplePSGI IOHandleUtil LWP LWPProtocolhttp10 LogDispatchArray MIMETypes TestMockTimeHiRes TestRequires TestSharedFork TestTCP ];
+    propagatedBuildInputs = [ ApacheLogFormatCompiler CookieBaker DevelStackTraceAsHTML FileShareDir FilesysNotifySimple HTTPEntityParser HTTPHeadersFast HTTPMessage TryTiny ];
+    meta = {
+      homepage = "https://github.com/plack/Plack";
+      description = "Perl Superglue for Web frameworks and Web Servers (PSGI toolkit)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackAppProxy = buildPerlPackage {
+     pname = "Plack-App-Proxy";
+     version = "0.29";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/L/LE/LEEDO/Plack-App-Proxy-0.29.tar.gz";
+       sha256 = "03x6yb6ykz1ms90jp1s0pq19yplf7wswljvhzqkr16jannfrmah4";
+     };
+     propagatedBuildInputs = [ AnyEventHTTP LWP Plack ];
+     buildInputs = [ TestRequires TestSharedFork TestTCP ];
+     meta = {
+       description = "proxy requests";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PlackMiddlewareAuthDigest = buildPerlModule {
+     pname = "Plack-Middleware-Auth-Digest";
+     version = "0.05";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-Auth-Digest-0.05.tar.gz";
+       sha256 = "1sqm23kfsl3ac4060zcclc3r86x1vxzhsgvgzg6mxk9njj93zgcs";
+     };
+     propagatedBuildInputs = [ DigestHMAC Plack ];
+     buildInputs = [ LWP ModuleBuildTiny TestSharedFork TestTCP ];
+     meta = {
+       description = "Digest authentication";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/Plack-Middleware-Auth-Digest";
+     };
+  };
+
+  PlackMiddlewareConsoleLogger = buildPerlModule {
+     pname = "Plack-Middleware-ConsoleLogger";
+     version = "0.05";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-ConsoleLogger-0.05.tar.gz";
+       sha256 = "1ngvhwdw9ll4cwnvf0i89ppa9pbyiwng6iba04scrqjda353lrsm";
+     };
+     propagatedBuildInputs = [ JavaScriptValueEscape Plack ];
+     buildInputs = [ ModuleBuildTiny TestRequires ];
+     meta = {
+       description = "Write logs to Firebug or Webkit Inspector";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/Plack-Middleware-ConsoleLogger";
+     };
+  };
+
+  PlackMiddlewareDebug = buildPerlModule {
+    pname = "Plack-Middleware-Debug";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-Debug-0.18.tar.gz";
+      sha256 = "192ef79e521c90c6eff6f4149ad2e4bfc911d2c95df78935855e90d659e9ac9a";
+    };
+    buildInputs = [ ModuleBuildTiny TestRequires ];
+    propagatedBuildInputs = [ ClassMethodModifiers DataDump DataDumperConcise Plack TextMicroTemplate ];
+    meta = {
+      homepage = "https://github.com/miyagawa/Plack-Middleware-Debug";
+      description = "Display information about the current request/response";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackMiddlewareDeflater = buildPerlPackage {
+     pname = "Plack-Middleware-Deflater";
+     version = "0.12";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/K/KA/KAZEBURO/Plack-Middleware-Deflater-0.12.tar.gz";
+       sha256 = "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8";
+     };
+     propagatedBuildInputs = [ Plack ];
+     buildInputs = [ TestRequires TestSharedFork TestTCP ];
+     meta = {
+       description = "Compress response body with Gzip or Deflate";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PlackMiddlewareFixMissingBodyInRedirect = buildPerlPackage {
+    pname = "Plack-Middleware-FixMissingBodyInRedirect";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SW/SWEETKID/Plack-Middleware-FixMissingBodyInRedirect-0.12.tar.gz";
+      sha256 = "6c22d069f5a57ac206d4659b28b8869bb9270640bb955efddd451dcc58cdb391";
+    };
+    propagatedBuildInputs = [ HTMLParser Plack ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackMiddlewareHeader = buildPerlPackage {
+     pname = "Plack-Middleware-Header";
+     version = "0.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/C/CH/CHIBA/Plack-Middleware-Header-0.04.tar.gz";
+       sha256 = "0pjxxbnilphn38s3mmv0fmg9q2hm4z02ngp2a1lxblzjfbzvkdjy";
+     };
+     propagatedBuildInputs = [ Plack ];
+     meta = {
+       description = "modify HTTP response headers";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PlackMiddlewareMethodOverride = buildPerlPackage {
+    pname = "Plack-Middleware-MethodOverride";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-MethodOverride-0.20.tar.gz";
+      sha256 = "dbfb5a2efb48bfeb01cb3ae1e1c677e155dc7bfe210c7e7f221bae3cb6aab5f1";
+    };
+    propagatedBuildInputs = [ Plack ];
+    meta = {
+      description = "Override REST methods to Plack apps via POST";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackMiddlewareRemoveRedundantBody = buildPerlPackage {
+    pname = "Plack-Middleware-RemoveRedundantBody";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SW/SWEETKID/Plack-Middleware-RemoveRedundantBody-0.09.tar.gz";
+      sha256 = "80d45f93d6b7290b0bd8b3cedd84a37fc501456cc3dec02ec7aad81c0018087e";
+    };
+    propagatedBuildInputs = [ Plack ];
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackMiddlewareReverseProxy = buildPerlPackage {
+    pname = "Plack-Middleware-ReverseProxy";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-ReverseProxy-0.16.tar.gz";
+      sha256 = "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7";
+    };
+    propagatedBuildInputs = [ Plack ];
+    meta = {
+      description = "Supports app to run as a reverse proxy backend";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PlackMiddlewareSession = buildPerlModule {
+     pname = "Plack-Middleware-Session";
+     version = "0.33";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Plack-Middleware-Session-0.33.tar.gz";
+       sha256 = "1vm4a66civdzh7xvl5hy5wn1w8j1vndppwyz8ndh9n4as74s5yag";
+     };
+     propagatedBuildInputs = [ DigestHMAC Plack ];
+     buildInputs = [ HTTPCookies LWP ModuleBuildTiny TestFatal TestRequires TestSharedFork TestTCP ];
+     meta = {
+       description = "Middleware for session management";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/plack/Plack-Middleware-Session";
+     };
+  };
+
+  PlackTestExternalServer = buildPerlPackage {
+    pname = "Plack-Test-ExternalServer";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Plack-Test-ExternalServer-0.02.tar.gz";
+      sha256 = "5baf5c57fe0c06412deec9c5abe7952ab8a04f8c47b4bbd8e9e9982268903ed0";
+    };
+    buildInputs = [ Plack TestSharedFork TestTCP ];
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      homepage = "https://github.com/perl-catalyst/Plack-Test-ExternalServer";
+      description = "Run HTTP tests on external live servers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PLS = buildPerlPackage {
+    pname = "PLS";
+    version = "0.897";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MREISNER/PLS-0.897.tar.gz";
+      sha256 = "0278anidj7bgassj32g20cbki2kkqakkr3axyq4k90nj4snw7p6x";
+    };
+    propagatedBuildInputs = [ Future IOAsync PPI PPR PathTiny PerlCritic PerlTidy PodMarkdown URI ];
+    meta = {
+      homepage = "https://github.com/FractalBoy/perl-language-server";
+      description = "Perl Language Server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.artturin ];
+    };
+  };
+
+  Po4a = callPackage ../development/perl-modules/Po4a { };
+
+  PodMinimumVersion = buildPerlPackage {
+    pname = "Pod-MinimumVersion";
+    version = "50";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/Pod-MinimumVersion-50.tar.gz";
+      sha256 = "0bd2812d9aacbd99bb71fa103a4bb129e955c138ba7598734207dc9fb67b5a6f";
+    };
+    propagatedBuildInputs = [ IOString PodParser ];
+    meta = {
+      homepage = "http://user42.tuxfamily.org/pod-minimumversion/index.html";
+      description = "Determine minimum Perl version of POD directives";
+      license = lib.licenses.free;
+    };
+  };
+
+  POE = buildPerlPackage {
+    pname = "POE";
+    version = "1.368";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/POE-1.368.tar.gz";
+      sha256 = "08g1vzxamqg0gmkirdcx7fycq3pwv9vbajc30qwqpm1n3rvdrcdp";
+    };
+    # N.B. removing TestPodLinkCheck from buildInputs because tests requiring
+    # this module don't disable themselves when "run_network_tests" is
+    # not present (see below).
+    propagatedBuildInputs = [ pkgs.cacert IOPipely IOTty POETestLoops ];
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "Portable multitasking and networking framework for any event loop";
+      license = lib.licenses.artistic2;
+    };
+    preCheck = ''
+      set -x
+
+      : Makefile.PL touches the following file as a "marker" to indicate
+      : it should perform tests which use the network. Delete this file
+      : for sandbox builds.
+      rm -f run_network_tests
+
+      : Certs are required if not running in a sandbox.
+      export SSL_CERT_FILE=${pkgs.cacert.out}/etc/ssl/certs/ca-bundle.crt
+
+      : The following flag enables extra tests not normally performed.
+      export RELEASE_TESTING=1
+
+      set +x
+    '';
+  };
+
+  POETestLoops = buildPerlPackage {
+    pname = "POE-Test-Loops";
+    version = "1.360";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCAPUTO/POE-Test-Loops-1.360.tar.gz";
+      sha256 = "0yx4wsljfmdzsiv0ni98x6lw975cm82ahngbwqvzv60wx5pwkl5y";
+    };
+    meta = {
+      maintainers = teams.deshaw.members;
+      description = "Reusable tests for POE::Loop authors";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  PPI = buildPerlPackage {
+    pname = "PPI";
+    version = "1.270";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MITHALDU/PPI-1.270.tar.gz";
+      sha256 = "622a698c781bb85d2bdf7bbfe040fe70d33b79774c9ae01fce2375dc73faf457";
+    };
+    buildInputs = [ ClassInspector TestDeep TestNoWarnings TestObject TestSubCalls ];
+    propagatedBuildInputs = [ Clone IOString ParamsUtil TaskWeaken ];
+
+    # Remove test that fails due to unexpected shebang after
+    # patchShebang.
+    preCheck = "rm t/03_document.t";
+
+    meta = {
+      homepage = "https://github.com/adamkennedy/PPI";
+      description = "Parse, Analyze and Manipulate Perl (without perl)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PPIxQuoteLike = buildPerlModule {
+    pname = "PPIx-QuoteLike";
+    version = "0.013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WY/WYANT/PPIx-QuoteLike-0.013.tar.gz";
+      sha256 = "05qq5lk7a91jzn2vld906nvrpqbhxvy40s2qdymm5lkqha1k67ld";
+    };
+    propagatedBuildInputs = [ PPI Readonly ];
+    meta = {
+      description = "Parse Perl string literals and string-literal-like things.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PPIxRegexp = buildPerlModule {
+    pname = "PPIx-Regexp";
+    version = "0.076";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WY/WYANT/PPIx-Regexp-0.076.tar.gz";
+      sha256 = "0jh1g83s4m7qlj6c99myvbqayfd9nkff37y0chvlp33j4a9psq0h";
+    };
+    propagatedBuildInputs = [ PPI ];
+    meta = {
+      description = "Parse regular expressions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PPIxUtilities = buildPerlModule {
+    pname = "PPIx-Utilities";
+    version = "1.001000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EL/ELLIOTJS/PPIx-Utilities-1.001000.tar.gz";
+      sha256 = "03a483386fd6a2c808f09778d44db06b02c3140fb24ba4bf12f851f46d3bcb9b";
+    };
+    buildInputs = [ TestDeep ];
+    propagatedBuildInputs = [ ExceptionClass PPI Readonly ];
+    meta = {
+      description = "Extensions to L<PPI|PPI>";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PPR = buildPerlPackage {
+    pname = "PPR";
+    version = "0.000028";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCONWAY/PPR-0.000028.tar.gz";
+      sha256 = "1adrd189rnfl1fgv14inchvrgjqjbpnviisqsz3y8ds3gisafzfk";
+    };
+    meta = {
+      description = "Pattern-based Perl Recognizer";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.artturin ];
+    };
+  };
+
+  ProcBackground = buildPerlPackage {
+    pname = "Proc-Background";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NERDVANA/Proc-Background-1.21.tar.gz";
+      sha256 = "91b6a5aeb841b1c313498c78fad08e37d17595702dc6205b5ad38ef69949b7ee";
+    };
+    meta = {
+    };
+  };
+
+  ProcProcessTable = buildPerlPackage {
+    pname = "Proc-ProcessTable";
+    version = "0.59";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JW/JWB/Proc-ProcessTable-0.59.tar.gz";
+      sha256 = "f8cc5054d78c35a0ce39fb75430b4ef402e2a99013d2ec37e7997f316594606c";
+    };
+    meta = {
+      description = "Perl extension to access the unix process table";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ProcFind = buildPerlPackage {
+    pname = "Proc-Find";
+    version = "0.051";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLANCAR/Proc-Find-0.051.tar.gz";
+      sha256 = "64d39071ec94d7b66a7cab5a950246f0fff013b5a200a63d1176432987e5a135";
+    };
+    propagatedBuildInputs = [ ProcProcessTable ];
+    meta = {
+      description = "Find processes by name, PID, or some other attributes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ProcSafeExec = buildPerlPackage {
+    pname = "Proc-SafeExec";
+    version = "1.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BILBO/Proc-SafeExec-1.5.tar.gz";
+      sha256 = "1b4d0908bcac563d34a7e5be61c5da3eee98e4a6c7fa68c2670cc5844b5a2d78";
+    };
+  };
+
+  ProcSimple = buildPerlPackage {
+    pname = "Proc-Simple";
+    version = "1.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHILLI/Proc-Simple-1.32.tar.gz";
+      sha256 = "4c8f0a924b19ad78a13da73fe0fb306d32a7b9d10a332c523087fc83a209a8c4";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ProcWait3 = buildPerlPackage {
+    pname = "Proc-Wait3";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CT/CTILMES/Proc-Wait3-0.05.tar.gz";
+      sha256 = "1a907f5db6933dc2939bbfeffe19eeae7ed39ef1b97a2bc9b723f2f25f81caf3";
+    };
+    meta = {
+      description = "Perl extension for wait3 system call";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ProcWaitStat = buildPerlPackage {
+    pname = "Proc-WaitStat";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROSCH/Proc-WaitStat-1.00.tar.gz";
+      sha256 = "1g3l8jzx06x4l4p0x7fyn4wvg6plfzl420irwwb9v447wzsn6xfh";
+    };
+    propagatedBuildInputs = [ IPCSignal ];
+  };
+
+  PrometheusTiny = buildPerlPackage {
+    pname = "Prometheus-Tiny";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBN/Prometheus-Tiny-0.008.tar.gz";
+      sha256 = "17d7b69chkcq8fprww6m15glndyb0lms2l0xjbnbw04q7f8ncskk";
+    };
+    buildInputs = [ HTTPMessage Plack TestException ];
+    meta = {
+      homepage = "https://github.com/robn/Prometheus-Tiny";
+      description = "A tiny Prometheus client";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PrometheusTinyShared = buildPerlPackage {
+    pname = "Prometheus-Tiny-Shared";
+    version = "0.024";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBN/Prometheus-Tiny-Shared-0.024.tar.gz";
+      sha256 = "02w24r4amk8dqlavg6abxap48hzxrbda48f1pmrqypgx1cz59g4g";
+    };
+    buildInputs = [ DataRandom HTTPMessage Plack TestDifferences TestException ];
+    propagatedBuildInputs = [ HashSharedMem JSONXS PrometheusTiny ];
+    meta = {
+      homepage = "https://github.com/robn/Prometheus-Tiny-Shared";
+      description = "A tiny Prometheus client with a shared database behind it";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ProtocolRedis = buildPerlPackage {
+    pname = "Protocol-Redis";
+    version = "1.0011";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/U/UN/UNDEF/Protocol-Redis-1.0011.tar.gz";
+      sha256 = "7ceb6bd80067c904465d4fd1f1715724388c9bdc37c6c2c003a20ce569b7f4e8";
+    };
+    meta = {
+      homepage = "https://github.com/und3f/protocol-redis";
+      description = "Redis protocol parser/encoder with asynchronous capabilities";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ProtocolRedisFaster = buildPerlPackage {
+    pname = "Protocol-Redis-Faster";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DB/DBOOK/Protocol-Redis-Faster-0.003.tar.gz";
+      sha256 = "6b9afb3de94ec1ccd7db4f9e6a2eaba254a57790301c17bcb13bb3edfe1850b7";
+    };
+    propagatedBuildInputs = [ ProtocolRedis ];
+    meta = {
+      homepage = "https://github.com/Grinnz/Protocol-Redis-Faster";
+      description = "Optimized pure-perl Redis protocol parser/encoder";
+      license = lib.licenses.artistic2;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  ProtocolWebSocket = buildPerlModule {
+    pname = "Protocol-WebSocket";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VT/VTI/Protocol-WebSocket-0.26.tar.gz";
+      sha256 = "08jmazvrmvp8jn15p2n3c1h3f2cbkr07xjzy197jb8x724vx0dsq";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  ProtocolHTTP2 = buildPerlModule {
+    pname = "Protocol-HTTP2";
+    version = "1.10";
+
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CR/CRUX/Protocol-HTTP2-1.10.tar.gz";
+      sha256 = "0jm6jq1wszjrrcypyi642m2i8wgni50wdnzh9dzfkyjazdc00sn2";
+    };
+    buildInputs = [ AnyEvent ModuleBuildTiny NetSSLeay TestLeakTrace TestSharedFork TestTCP ];
+  };
+
+  PSGI = buildPerlPackage {
+    pname = "PSGI";
+    version = "1.102";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/PSGI-1.102.tar.gz";
+      sha256 = "0iqzxs8fv63510knm3zr3jr3ky4x7diwd7y24mlshzci81kl8v55";
+    };
+  };
+
+  PadWalker = buildPerlPackage {
+    pname = "PadWalker";
+    version = "2.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBIN/PadWalker-2.5.tar.gz";
+      sha256 = "1l0cga0ny43x5xpqw9nrdwbznvqpj35ni39a0wrayihihjxnmch7";
+    };
+  };
+
+  Perl6Junction = buildPerlPackage {
+    pname = "Perl6-Junction";
+    version = "1.60000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFRANKS/Perl6-Junction-1.60000.tar.gz";
+      sha256 = "0r3in9pyrm6wfrhcvxbq5w1617x8x5537lxj9hdzks4pa7l7a8yh";
+    };
+  };
+
+  PerlMinimumVersion = buildPerlPackage {
+    pname = "Perl-MinimumVersion";
+    version = "1.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Perl-MinimumVersion-1.38.tar.gz";
+      sha256 = "478b5824791b87fc74c94a892180682bd06ad2cdf34034b1a4b859273927802a";
+    };
+    buildInputs = [ TestScript ];
+    propagatedBuildInputs = [ FileFindRulePerl PerlCritic ];
+    meta = {
+      homepage = "https://github.com/neilbowers/Perl-MinimumVersion";
+      description = "Find a minimum required version of perl for Perl code";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlPrereqScanner = buildPerlPackage {
+    pname = "Perl-PrereqScanner";
+    version = "1.023";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Perl-PrereqScanner-1.023.tar.gz";
+      sha256 = "280a1c4710390865fb9f310a861a34720b28b4cbe50609c841af5cf2d3a2bced";
+    };
+    propagatedBuildInputs = [ GetoptLongDescriptive ListMoreUtils ModulePath Moose PPI StringRewritePrefix namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/rjbs/Perl-PrereqScanner";
+      description = "A tool to scan your Perl code for its prerequisites";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlPrereqScannerNotQuiteLite = buildPerlPackage {
+    pname = "Perl-PrereqScanner-NotQuiteLite";
+    version = "0.9913";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Perl-PrereqScanner-NotQuiteLite-0.9913.tar.gz";
+      sha256 = "13alrwwh36wsqn0gliwdpp2a9kymjk8gx30gfkqw0f29w72ry3cp";
+    };
+    propagatedBuildInputs = [ DataDump ModuleCPANfile ModuleFind RegexpTrie URIcpan ];
+    buildInputs = [ ExtUtilsMakeMakerCPANfile TestFailWarnings TestUseAllModules ];
+    meta = {
+      description = "a tool to scan your Perl code for its prerequisites";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PerlVersion = buildPerlPackage {
+    pname = "Perl-Version";
+    version = "1.013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Perl-Version-1.013.tar.gz";
+      sha256 = "1887414d1c8689d864c840114101e043e99d7dd5b9cca69369a60e821e3ad0f7";
+    };
+    propagatedBuildInputs = [ FileSlurpTiny ];
+    meta = {
+      description = "Parse and manipulate Perl version strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodAbstract = buildPerlPackage {
+    pname = "Pod-Abstract";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BL/BLILBURNE/Pod-Abstract-0.20.tar.gz";
+      sha256 = "956ef7bb884c55456e2fb6e7f229f9a87dd50a61d700500c738db8f2ba277f87";
+    };
+    propagatedBuildInputs = [ IOString TaskWeaken PodParser ];
+    meta = {
+      description = "An abstract, tree-based interface to perl POD documents";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodChecker = buildPerlPackage {
+    pname = "Pod-Checker";
+    version = "1.74";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAREKR/Pod-Checker-1.74.tar.gz";
+      sha256 = "12559997r7wbhhs0p6cdxdzv7rzviv0nx1hq0dby8q481apn489f";
+    };
+  };
+
+  PodCoverage = buildPerlPackage {
+    pname = "Pod-Coverage";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz";
+      sha256 = "01xifj83dv492lxixijmg6va02rf3ydlxly0a9slmx22r6qa1drh";
+    };
+    propagatedBuildInputs = [ DevelSymdump PodParser ];
+  };
+
+  PodCoverageTrustPod = buildPerlPackage {
+    pname = "Pod-Coverage-TrustPod";
+    version = "0.100005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Pod-Coverage-TrustPod-0.100005.tar.gz";
+      sha256 = "08bk6lfimr2pwi6c92xg5cw1cxmi5fqhls3yasqzpjnd4if86s3c";
+    };
+    propagatedBuildInputs = [ PodCoverage PodEventual ];
+    meta = {
+      homepage = "https://github.com/rjbs/pod-coverage-trustpod";
+      description = "Allow a module's pod to contain Pod::Coverage hints";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodElemental = buildPerlPackage {
+    pname = "Pod-Elemental";
+    version = "0.103005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Pod-Elemental-0.103005.tar.gz";
+      sha256 = "824336ec18326e3b970e7815922b3921b0a821d2ee0e50b0c5b2bc327f99615e";
+    };
+    buildInputs = [ TestDeep TestDifferences ];
+    propagatedBuildInputs = [ MooseXTypes PodEventual StringRewritePrefix StringTruncate ];
+    meta = {
+      homepage = "https://github.com/rjbs/Pod-Elemental";
+      description = "Work with nestable Pod elements";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodElementalPerlMunger = buildPerlPackage {
+    pname = "Pod-Elemental-PerlMunger";
+    version = "0.200006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Pod-Elemental-PerlMunger-0.200006.tar.gz";
+      sha256 = "09fd3b5d53119437a01dced66b42eafdcd53895b3c32a2b0f781f36fda0f665b";
+    };
+    buildInputs = [ TestDifferences ];
+    propagatedBuildInputs = [ PPI PodElemental ];
+    meta = {
+      homepage = "https://github.com/rjbs/Pod-Elemental-PerlMunger";
+      description = "A thing that takes a string of Perl and rewrites its documentation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodEventual = buildPerlPackage {
+    pname = "Pod-Eventual";
+    version = "0.094001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Pod-Eventual-0.094001.tar.gz";
+      sha256 = "be9fb8910b108e5d1a66f002b659ad22576e88d779b703dff9d15122c3f80834";
+    };
+    propagatedBuildInputs = [ MixinLinewise ];
+    meta = {
+      description = "Read a POD document as a series of trivial events";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestDeep ];
+  };
+
+  PodParser = buildPerlPackage {
+    pname = "Pod-Parser";
+    version = "1.63";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAREKR/Pod-Parser-1.63.tar.gz";
+      sha256 = "dbe0b56129975b2f83a02841e8e0ed47be80f060686c66ea37e529d97aa70ccd";
+    };
+    meta = {
+      description = "Modules for parsing/translating POD format documents";
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  PodPOM = buildPerlPackage {
+    pname = "Pod-POM";
+    version = "2.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Pod-POM-2.01.tar.gz";
+      sha256 = "1b50fba9bbdde3ead192beeba0eaddd0c614e3afb1743fa6fff805f57c56f7f4";
+    };
+    buildInputs = [ FileSlurper TestDifferences TextDiff ];
+    meta = {
+      homepage = "https://github.com/neilb/Pod-POM";
+      description = "POD Object Model";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodPOMViewTOC = buildPerlPackage {
+    pname = "Pod-POM-View-TOC";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERLER/Pod-POM-View-TOC-0.02.tar.gz";
+      sha256 = "ccb42272c7503379cb1131394620ee50276d72844e0e80eb4b007a9d58f87623";
+    };
+    propagatedBuildInputs = [ PodPOM ];
+    meta = {
+      description = "Generate the TOC of a POD with Pod::POM";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodSection = buildPerlModule {
+    pname = "Pod-Section";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KT/KTAT/Pod-Section-0.02.tar.gz";
+      sha256 = "c9d1d75292f321881184ec56983c16f408fd2d312d5a720f8fb0d2cafa729238";
+    };
+    propagatedBuildInputs = [ PodAbstract ];
+    meta = {
+      homepage = "https://github.com/ktat/Pod-Section";
+      description = "Select specified section from Module's POD";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodLaTeX = buildPerlModule {
+    pname = "Pod-LaTeX";
+    version = "0.61";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TJ/TJENNESS/Pod-LaTeX-0.61.tar.gz";
+      sha256 = "15a840ea1c8a76cd3c865fbbf2fec33b03615c0daa50f9c800c54e0cf0659d46";
+    };
+    propagatedBuildInputs = [ PodParser ];
+    meta = {
+      homepage = "https://github.com/timj/perl-Pod-LaTeX/tree/master";
+      description = "Convert Pod data to formatted Latex";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  podlators = buildPerlPackage {
+    pname = "podlators";
+    version = "4.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RR/RRA/podlators-4.14.tar.gz";
+      sha256 = "10hgvdyp0969a1222hk1y5n2p72lhxrrv8h0yyzlsbjbwcfw9wbs";
+    };
+    preCheck = ''
+      # remove failing spdx check
+      rm t/docs/spdx-license.t
+    '';
+    meta = {
+      description = "Convert POD data to various other formats";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  podlinkcheck = buildPerlPackage {
+    pname = "podlinkcheck";
+    version = "15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/podlinkcheck-15.tar.gz";
+      sha256 = "4e3bebec1bf82dbf850a94ae26a253644cf5806ec41afc74e43e1710a37321db";
+    };
+    propagatedBuildInputs = [ FileFindIterator FileHomeDir IPCRun PodParser constant-defer libintl-perl ];
+    meta = {
+      homepage = "http://user42.tuxfamily.org/podlinkcheck/index.html";
+      description = "Check POD L<> link references";
+      license = lib.licenses.gpl3Plus;
+    };
+  };
+
+  prefork = buildPerlPackage {
+    pname = "prefork";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/prefork-1.05.tar.gz";
+      sha256 = "01ckn45ij3nbrsc0yc4wl4z0wndn36jh6247zbycwa1vlvgvr1vd";
+    };
+    meta = {
+      description = "Optimized module loading for forking or non-forking processes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodPerldoc = buildPerlPackage {
+    pname = "Pod-Perldoc";
+    version = "3.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MALLEN/Pod-Perldoc-3.28.tar.gz";
+      sha256 = "0kf6xwdha8jl0nxv60r2v7xsfnvv6i3gy135xsl40g71p02ychfc";
+    };
+    meta = {
+      description = "Look up Perl documentation in Pod format";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodPlainer = buildPerlPackage {
+    pname = "Pod-Plainer";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RM/RMBARKER/Pod-Plainer-1.04.tar.gz";
+      sha256 = "1bbfbf7d1d4871e5a83bab2137e22d089078206815190eb1d5c1260a3499456f";
+    };
+    propagatedBuildInputs = [ PodParser ];
+    meta = {
+      description = "Perl extension for converting Pod to old-style Pod";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodMarkdown = buildPerlPackage {
+    pname = "Pod-Markdown";
+    version = "3.300";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RW/RWSTAUNER/Pod-Markdown-3.300.tar.gz";
+      sha256 = "0y8vk7wprair2fjqbkjl7g9jv0dn7rv58l7b9yf7819nia8fjygc";
+    };
+    buildInputs = [ TestDifferences ];
+    meta = {
+      homepage = "https://github.com/rwstauner/Pod-Markdown";
+      description = "Convert POD to Markdown";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ URI ];
+  };
+
+  PodMarkdownGithub = buildPerlPackage {
+     pname = "Pod-Markdown-Github";
+     version = "0.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MINIMAL/Pod-Markdown-Github-0.04.tar.gz";
+       sha256 = "04y67c50hpf1vb9cwsza3fbj4rshdqa47vi3zcj4kkjckh02yzmk";
+     };
+     propagatedBuildInputs = [ PodMarkdown ];
+     buildInputs = [ TestDifferences ];
+     meta = {
+       description = "Convert POD to Github's specific markdown";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PodSimple = buildPerlPackage {
+    pname = "Pod-Simple";
+    version = "3.42";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KH/KHW/Pod-Simple-3.42.tar.gz";
+      sha256 = "1icagrjqw1azmff82h17cbrhqgql7rg21gz64mjpiqqq0cpfpz59";
+    };
+  };
+
+  PodSpell = buildPerlPackage {
+    pname = "Pod-Spell";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOLMEN/Pod-Spell-1.20.tar.gz";
+      sha256 = "6383f7bfe22bc0d839a08057a0ce780698b046184aea935be4833d94986dd03c";
+    };
+    propagatedBuildInputs = [ ClassTiny FileShareDir LinguaENInflect PathTiny PodParser ];
+    buildInputs = [ FileShareDirInstall TestDeep ];
+  };
+
+  PodStrip = buildPerlModule {
+     pname = "Pod-Strip";
+     version = "1.02";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DO/DOMM/Pod-Strip-1.02.tar.gz";
+       sha256 = "1zsjfw2cjq1bd3ppl67fdvrx46vj9lina0c3cv9qgk5clzvaq3fq";
+     };
+     meta = {
+       description = "Remove POD from Perl code";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PodTidy = buildPerlModule {
+     pname = "Pod-Tidy";
+     version = "0.10";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/J/JH/JHOBLITT/Pod-Tidy-0.10.tar.gz";
+       sha256 = "1gcxjplgksnc5iggi8dzbkbkcryii5wjhypd7fs3kmbwx91y2vl8";
+     };
+     propagatedBuildInputs = [ EncodeNewlines IOString PodWrap TextGlob ];
+     buildInputs = [ TestCmd ];
+     meta = {
+       description = "a reformatting Pod Processor";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  PodWeaver = buildPerlPackage {
+    pname = "Pod-Weaver";
+    version = "4.015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Pod-Weaver-4.015.tar.gz";
+      sha256 = "5af25b29a55783e495a9df5ef6293240e2c9ab02764613d79f1ed50b12dec5ae";
+    };
+    buildInputs = [ PPI SoftwareLicense TestDifferences ];
+    propagatedBuildInputs = [ ConfigMVPReaderINI DateTime ListMoreUtils LogDispatchouli PodElemental ];
+    meta = {
+      homepage = "https://github.com/rjbs/Pod-Weaver";
+      description = "Weave together a Pod document from an outline";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PodWrap = buildPerlModule {
+     pname = "Pod-Wrap";
+     version = "0.01";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NU/NUFFIN/Pod-Wrap-0.01.tar.gz";
+       sha256 = "0qwb5hp26f85xnb3zivf8ccfdplabiyl5sd53c6wgdgvzzicpjjh";
+     };
+     propagatedBuildInputs = [ PodParser ];
+     meta = {
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  ProbePerl = buildPerlPackage {
+    pname = "Probe-Perl";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KW/KWILLIAMS/Probe-Perl-0.03.tar.gz";
+      sha256 = "0c9wiaz0mqqknafr4jdr0g2gdzxnn539182z0icqaqvp5qgd5r6r";
+    };
+  };
+
+  POSIXstrftimeCompiler = buildPerlModule {
+    pname = "POSIX-strftime-Compiler";
+    version = "0.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZEBURO/POSIX-strftime-Compiler-0.44.tar.gz";
+      sha256 = "dfd3c97398dcfe51c8236b85e3dc28035667b76531f7aa0a6535f3aa5405b35a";
+    };
+    # We cannot change timezones on the fly.
+    prePatch = "rm t/04_tzset.t";
+    meta = {
+      homepage = "https://github.com/kazeburo/POSIX-strftime-Compiler";
+      description = "GNU C library compatible strftime for loggers and servers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  Apprainbarf = buildPerlModule {
+    pname = "App-rainbarf";
+    version = "1.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYP/App-rainbarf-1.4.tar.gz";
+      sha256 = "4f139ad35faaf2de0623dc0bb1dd89fa5a431e548bfec87dee194cf0e25cc97d";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus  ];
+    };
+  };
+
+  Razor2ClientAgent = buildPerlPackage {
+    pname = "Razor2-Client-Agent";
+    version = "2.86";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Razor2-Client-Agent-2.86.tar.gz";
+      sha256 = "5e062e02ebb65e24b708e7eefa5300c43d6f657bf20d08fec4ca8a0a3b94845f";
+    };
+    propagatedBuildInputs = [ DigestSHA1 URI ];
+    meta = {
+      homepage = "http://razor.sourceforge.net/";
+      description = "Collaborative, content-based spam filtering network agent";
+      license = lib.licenses.mit;
+    };
+  };
+
+
+  Readonly = buildPerlModule {
+    pname = "Readonly";
+    version = "2.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SANKO/Readonly-2.05.tar.gz";
+      sha256 = "4b23542491af010d44a5c7c861244738acc74ababae6b8838d354dfb19462b5e";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    meta = {
+      homepage = "https://github.com/sanko/readonly";
+      description = "Facility for creating read-only scalars, arrays, hashes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ReadonlyXS = buildPerlPackage {
+    pname = "Readonly-XS";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROODE/Readonly-XS-1.05.tar.gz";
+      sha256 = "8ae5c4e85299e5c8bddd1b196f2eea38f00709e0dc0cb60454dc9114ae3fff0d";
+    };
+    propagatedBuildInputs = [ Readonly ];
+  };
+
+  Redis = buildPerlModule {
+    pname = "Redis";
+    version = "1.998";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAMS/Redis-1.998.tar.gz";
+      sha256 = "59f3bb176c3a7a54cb3779497b89a7bae1fb217565c68711d585fc1f09d79c87";
+    };
+    buildInputs = [ IOString ModuleBuildTiny TestDeep TestFatal TestSharedFork TestTCP ];
+    propagatedBuildInputs = [ IOSocketTimeout TryTiny ];
+    meta = {
+      homepage = "https://github.com/PerlRedis/perl-redis";
+      description = "Perl binding for Redis database";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  RefUtil = buildPerlPackage {
+    pname = "Ref-Util";
+    version = "0.204";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARC/Ref-Util-0.204.tar.gz";
+      sha256 = "1q85y5lzgl8wz5qnz3j6mch2fmllr668h54wszaz6i6gp8ysfps1";
+    };
+    meta = {
+      description = "Utility functions for checking references";
+      license = with lib.licenses; [ mit ];
+    };
+  };
+
+  RegexpAssemble = buildPerlPackage {
+    pname = "Regexp-Assemble";
+    version = "0.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Regexp-Assemble-0.38.tgz";
+      sha256 = "0hp4v8mghmpflq9l9fqrkjg4cw0d3ha2nrmnsnzwjwqvmvwyfsx0";
+    };
+  };
+
+  RegexpCommon = buildPerlPackage {
+    pname = "Regexp-Common";
+    version = "2017060201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABIGAIL/Regexp-Common-2017060201.tar.gz";
+      sha256 = "ee07853aee06f310e040b6bf1a0199a18d81896d3219b9b35c9630d0eb69089b";
+    };
+    meta = with lib; {
+      description = "Provide commonly requested regular expressions";
+      license = licenses.mit;
+    };
+  };
+
+  RegexpCommonnetCIDR = buildPerlPackage {
+    pname = "Regexp-Common-net-CIDR";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Regexp-Common-net-CIDR-0.03.tar.gz";
+      sha256 = "39606a57aab20d4f4468300f2ec3fa2ab557fcc9cb7880ec7c6e07d80162da33";
+    };
+    propagatedBuildInputs = [ RegexpCommon ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RegexpCommontime = buildPerlPackage {
+    pname = "Regexp-Common-time";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/Regexp-Common-time-0.16.tar.gz";
+      sha256 = "1jjay5gybbls3xn5ihc6q5ig3kf4i28nq4gvg2zp4p5m1ajhg08w";
+    };
+    propagatedBuildInputs = [ RegexpCommon ];
+    meta = {
+      homepage = "https://github.com/manwar/Regexp-Common-time";
+      description = "Date and time regexps.";
+      maintainers = [ maintainers.artturin ];
+      # This module is copyrighted only to ensure proper attribution of
+      # authorship and to ensure that it remains available to all.  This
+      # module is free, open-source software.  This module may be freely used
+      # for any purpose, commercial, public, or private, provided that proper
+      # credit is given, and that no more-restrictive license is applied to
+      # derivative (not dependent) works.
+      # https://metacpan.org/release/MANWAR/Regexp-Common-time-0.13/view/lib/Regexp/Common/time.pm#LICENSE-AND-COPYRIGHT
+      license = lib.licenses.free;
+    };
+  };
+
+  RegexpGrammars = buildPerlModule {
+    pname = "Regexp-Grammars";
+    version = "1.057";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCONWAY/Regexp-Grammars-1.057.tar.gz";
+      sha256 = "af53c19818461cd701aeb57c49dffdb463edc4bf8f658d9ea4e6d534ac177041";
+    };
+    meta = {
+      description = "Add grammatical parsing features to Perl 5.10 regexes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RegexpIPv6 = buildPerlPackage {
+    pname = "Regexp-IPv6";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Regexp-IPv6-0.03.tar.gz";
+      sha256 = "d542d17d75ce93631de8ba2156da0e0b58a755c409cd4a0d27a3873a26712ce2";
+    };
+  };
+
+  RegexpParser = buildPerlPackage {
+    pname = "Regexp-Parser";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Regexp-Parser-0.23.tar.gz";
+      sha256 = "f739dab8df2b06aae5c48f9971251b73704464a32d07d8d025f3c0f869544e89";
+    };
+    meta = {
+      homepage = "https://github.com/toddr/Regexp-Parser";
+      description = "Base class for parsing regexes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RegexpTrie = buildPerlPackage {
+    pname = "Regexp-Trie";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANKOGAI/Regexp-Trie-0.02.tar.gz";
+      sha256 = "1yn5l6x3xyic9jxw9jggqsbggcv7rc8ggj4zbnlz9hfvv17gjazv";
+    };
+    meta = {
+    };
+  };
+
+  RESTClient = buildPerlPackage {
+    pname = "REST-Client";
+    version = "273";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KK/KKANE/REST-Client-273.tar.gz";
+      sha256 = "a8652a2214308faff2c68be5ce64c904dcccc5e86be7f32376c1590869d01844";
+    };
+    propagatedBuildInputs = [ LWPProtocolHttps ];
+    meta = {
+      description = "A simple client for interacting with RESTful http/https resources";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RESTUtils = buildPerlModule {
+    pname = "REST-Utils";
+    version = "0.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JA/JALDHAR/REST-Utils-0.6.tar.gz";
+      sha256 = "1zdrf3315rp2b8r9dwwj5h93xky7i33iawf4hzszwcddhzflmsfl";
+    };
+    buildInputs = [ TestLongString TestWWWMechanize TestWWWMechanizeCGI ];
+    meta = {
+      homepage = "https://jaldhar.github.io/REST-Utils/";
+      description = "Utility functions for REST applications";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RpcXML = buildPerlPackage {
+    pname = "RPC-XML";
+    version = "0.80";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJRAY/RPC-XML-0.80.tar.gz";
+      sha256 = "1xvy9hs7bqsjnk0663kf7zk2qjg0pzv96n6z2wlc2w5bgal7q3ga";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+    doCheck = false;
+  };
+
+  ReturnValue = buildPerlPackage {
+    pname = "Return-Value";
+    version = "1.666005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Return-Value-1.666005.tar.gz";
+      sha256 = "1b2hfmdl19zi1z3npzv9wf6dh1g0xd88i70b4233ds9icnln08lf";
+    };
+  };
+
+  RoleBasic = buildPerlModule {
+    pname = "Role-Basic";
+    version = "0.13";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OV/OVID/Role-Basic-0.13.tar.gz";
+      sha256 = "38a0959ef9f193ff76e72c325a9e9211bc4868689bd0e2b005778f53f8b6f36a";
+    };
+    meta = {
+      description = "Just roles. Nothing else";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RoleHasMessage = buildPerlPackage {
+    pname = "Role-HasMessage";
+    version = "0.006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Role-HasMessage-0.006.tar.gz";
+      sha256 = "1lylfvarjfy6wy34dfny3032pc6r33mjby5yzzhmxybg8zhdp9pn";
+    };
+    propagatedBuildInputs = [ MooseXRoleParameterized StringErrf ];
+    meta = {
+      description = "A thing with a message method";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RoleIdentifiable = buildPerlPackage {
+    pname = "Role-Identifiable";
+    version = "0.007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Role-Identifiable-0.007.tar.gz";
+      sha256 = "1bbkj2wqpbfdw1cbm99vg9d94rvzba19m18xhnylaym0l78lc4sn";
+    };
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      description = "A thing with a list of tags";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RoleTiny = buildPerlPackage {
+    pname = "Role-Tiny";
+    version = "2.001004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Role-Tiny-2.001004.tar.gz";
+      sha256 = "92ba5712850a74102c93c942eb6e7f62f7a4f8f483734ed289d08b324c281687";
+    };
+    meta = {
+      description = "Roles. Like a nouvelle cuisine portion size slice of Moose";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  RPCEPCService = buildPerlModule {
+    pname = "RPC-EPC-Service";
+    version = "0.0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KI/KIWANAMI/RPC-EPC-Service-v0.0.11.tar.gz";
+      sha256 = "975f4134365258fb47fa921919053513adb9101f2bd420fcefe345f209128be3";
+    };
+    propagatedBuildInputs = [ AnyEvent DataSExpression ];
+    meta = {
+      description = "An Asynchronous Remote Procedure Stack";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+    RPM2 = buildPerlModule {
+    pname = "RPM2";
+    version = "1.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LK/LKUNDRAK/RPM2-1.4.tar.gz";
+      sha256 = "5ecb42aa69324e6f4088abfae07313906e5aabf2f46f1204f3f1de59155bb636";
+    };
+    buildInputs = [ pkgs.pkg-config pkgs.rpm ];
+    doCheck = false; # Tries to open /var/lib/rpm
+    meta = {
+      description = "Perl bindings for the RPM Package Manager API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  RSSParserLite = buildPerlPackage {
+    pname = "RSS-Parser-Lite";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TF/TFPBL/RSS-Parser-Lite-0.12.tar.gz";
+      sha256 = "1fcmp4qp7q3xr2mw7clqqwph45icbvgfs2n41gp9zamim2y39p49";
+    };
+    propagatedBuildInputs = [ locallib ];
+    doCheck = false; /* creates files in HOME */
+  };
+
+  RTClientREST = buildPerlModule {
+    pname = "RT-Client-REST";
+    version = "0.60";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DJ/DJZORT/RT-Client-REST-0.60.tar.gz";
+      sha256 = "0e6f2da3d96903491b43b19c61221cbeea88414264f907312f277daaf144248b";
+    };
+    buildInputs = [ CGI HTTPServerSimple TestException ];
+    meta = {
+      description = "Talk to RT installation using REST protocol";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ DateTimeFormatDateParse Error LWP ParamsValidate ];
+  };
+
+  SafeIsa = buildPerlPackage {
+    pname = "Safe-Isa";
+    version = "1.000010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Safe-Isa-1.000010.tar.gz";
+      sha256 = "0sm6p1kw98s7j6n92vvxjqf818xggnmjwci34xjmw7gzl2519x47";
+    };
+    meta = {
+      description = "Call isa, can, does and DOES safely on things that may not be objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ScalarListUtils = buildPerlPackage {
+    pname = "Scalar-List-Utils";
+    version = "1.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Scalar-List-Utils-1.55.tar.gz";
+      sha256 = "4d2bdc1c72a7bc4d69d6a5cc85bc7566497c3b183c6175b832784329d58feb4b";
+    };
+    meta = {
+      description = "Common Scalar and List utility subroutines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ScalarString = buildPerlModule {
+    pname = "Scalar-String";
+    version = "0.003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Scalar-String-0.003.tar.gz";
+      sha256 = "f54a17c9b78713b02cc43adfadf60b49467e7634d31317e8b9e9e97c26d68b52";
+    };
+  };
+
+  SCGI = buildPerlModule {
+    pname = "SCGI";
+    version = "0.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPERCODE/SCGI-0.6.tar.gz";
+      sha256 = "196rj47mh4fq2vlnw595q391zja5v6qg7s3sy0vy8igfyid8rdsq";
+    };
+    preConfigure = "export HOME=$(mktemp -d)";
+  };
+
+  ScopeGuard = buildPerlPackage {
+    pname = "Scope-Guard";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHOCOLATE/Scope-Guard-0.21.tar.gz";
+      sha256 = "0y6jfzvxiz8h5yfz701shair0ilypq2mvimd7wn8wi2nbkm1p6wc";
+    };
+    meta = {
+      description = "Lexically-scoped resource management";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ScopeUpper = buildPerlPackage {
+    pname = "Scope-Upper";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VP/VPIT/Scope-Upper-0.32.tar.gz";
+      sha256 = "ccaff3251c092f2af8b5ad840b76655c4bc4ccf504ff7bde233811822a40abcf";
+    };
+    meta = {
+      description = "Act on upper scopes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SDL = buildPerlModule {
+    pname = "SDL";
+    version = "2.548";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FROGGS/SDL-2.548.tar.gz";
+      sha256 = "252a192bfa9c2070a4883707d139c3a45d9c4518ccd66a1e699b5b7959bd4fb5";
+    };
+    perlPreHook = "export LD=$CC";
+    preCheck = "rm t/core_audiospec.t";
+    buildInputs = [ pkgs.SDL pkgs.SDL_gfx pkgs.SDL_mixer pkgs.SDL_image pkgs.SDL_ttf pkgs.SDL_Pango pkgs.SDL_net AlienSDL CaptureTiny TestDeep TestDifferences TestException TestMost TestWarn ];
+    propagatedBuildInputs = [ FileShareDir TieSimple ];
+    meta = {
+      description = "SDL bindings to Perl";
+      license = lib.licenses.lgpl21Plus;
+    };
+  };
+
+  SearchXapian = buildPerlPackage rec {
+    pname = "Search-Xapian";
+    version = "1.2.25.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OL/OLLY/Search-Xapian-1.2.25.4.tar.gz";
+      sha256 = "1pbl8pbgmbs3i8yik4p63g4pd9bhn0dp3d7l667dkvw0kccl66c7";
+    };
+    buildInputs = [ pkgs.xapian DevelLeak ];
+    meta = {
+      description = "Perl XS frontend to the Xapian C++ search library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SerealDecoder = buildPerlPackage {
+    pname = "Sereal-Decoder";
+    version = "4.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YV/YVES/Sereal-Decoder-4.018.tar.gz";
+      sha256 = "0wfdixpm3p94mnng474l0nh9mjiy8q8hbrbh2af4vwn2hmazr91f";
+    };
+    buildInputs = [ TestDeep TestDifferences TestLongString TestWarn ];
+    preBuild = "ls";
+    meta = {
+      homepage = "https://github.com/Sereal/Sereal";
+      description = "Fast, compact, powerful binary deserialization";
+      license = with lib.licenses; [ artistic2 ];
+      maintainers = [ maintainers.thoughtpolice ];
+    };
+  };
+
+  SerealEncoder = buildPerlPackage {
+    pname = "Sereal-Encoder";
+    version = "4.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YV/YVES/Sereal-Encoder-4.018.tar.gz";
+      sha256 = "0z9dbkr8ggjqb5g1sikxhy1a359bg08gs3vfg9icqm6xx4gjsv6p";
+    };
+    buildInputs = [ SerealDecoder TestDeep TestDifferences TestLongString TestWarn ];
+    meta = {
+      homepage = "https://github.com/Sereal/Sereal";
+      description = "Fast, compact, powerful binary deserialization";
+      license = with lib.licenses; [ artistic2 ];
+      maintainers = [ maintainers.thoughtpolice ];
+    };
+  };
+
+  Sereal = buildPerlPackage {
+    pname = "Sereal";
+    version = "4.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YV/YVES/Sereal-4.018.tar.gz";
+      sha256 = "0pqygrl88jp2w73jd9cw4k22fhvh5vcwqbiwl9wpxm67ql95cwwa";
+    };
+    buildInputs = [ TestDeep TestLongString TestMemoryGrowth TestWarn ];
+    propagatedBuildInputs = [ SerealDecoder SerealEncoder ];
+    meta = {
+      homepage = "https://github.com/Sereal/Sereal";
+      description = "Fast, compact, powerful binary deserialization";
+      license = with lib.licenses; [ artistic2 ];
+      maintainers = [ maintainers.thoughtpolice ];
+    };
+  };
+
+  DeviceSerialPort = buildPerlPackage rec {
+    pname = "Device-SerialPort";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/COOK/Device-SerialPort-1.04.tar.gz";
+      sha256 = "1mz9a2qzkz6fbz76wcwmp48h6ckjxpcazb70q03acklvndy5d4nk";
+    };
+    meta = with lib; {
+      description = "Linux/POSIX emulation of Win32::SerialPort functions.";
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ServerStarter = buildPerlModule {
+    pname = "Server-Starter";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/Server-Starter-0.35.tar.gz";
+      sha256 = "676dc0d6cff4648538332c63c32fb88ad09ed868213ea9e62e3f19fad41b9c40";
+    };
+    buildInputs = [ TestRequires TestSharedFork TestTCP ];
+    meta = {
+      homepage = "https://github.com/kazuho/p5-Server-Starter";
+      description = "A superdaemon for hot-deploying server programs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SessionToken = buildPerlPackage rec {
+    pname = "Session-Token";
+    version = "1.503";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FRACTAL/Session-Token-1.503.tar.gz";
+      sha256 = "32c3df96ef455c71870363acd950ddc4fbc848c594f4bc55b21b44cf979f79a1";
+    };
+    meta = {
+      homepage = "https://github.com/hoytech/Session-Token";
+      description = "Secure, efficient, simple random session token generation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  SetInfinite = buildPerlPackage {
+    pname = "Set-Infinite";
+    version = "0.65";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FG/FGLOCK/Set-Infinite-0.65.tar.gz";
+      sha256 = "07bc880734492de40b4a3a8b5a331762f64e69b4629029fd9a9d357b25b87e1f";
+    };
+    meta = {
+      description = "Infinite Sets math";
+    };
+  };
+
+  SetIntSpan = buildPerlPackage {
+    pname = "Set-IntSpan";
+    version = "1.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SW/SWMCD/Set-IntSpan-1.19.tar.gz";
+      sha256 = "1l6znd40ylzvfwl02rlqzvakv602rmvwgm2xd768fpgc2fdm9dqi";
+    };
+
+    meta = {
+      description = "Manages sets of integers";
+    };
+  };
+
+  SetObject = buildPerlPackage {
+    pname = "Set-Object";
+    version = "1.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RU/RURBAN/Set-Object-1.40.tar.gz";
+      sha256 = "1c4d8464c13e6d94957cf021ce603c961b08f52db6a9eaf5a5b0d37868cd37b7";
+    };
+    meta = {
+      description = "Unordered collections (sets) of Perl Objects";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  SetScalar = buildPerlPackage {
+    pname = "Set-Scalar";
+    version = "1.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAVIDO/Set-Scalar-1.29.tar.gz";
+      sha256 = "07aiqkyi1p22drpcyrrmv7f8qq6fhrxh007achy2vryxyck1bp53";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SmartComments = buildPerlPackage rec {
+    pname = "Smart-Comments";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Smart-Comments-1.06.tar.gz";
+      sha256 = "dcf8a312134a7c6b82926a0115d93b692472a662d28cdc3a9bdf28984ada9ee3";
+    };
+    meta = {
+      homepage = "https://github.com/neilb/Smart-Comments";
+      description = "Comments that do more than just sit there";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  SGMLSpm = buildPerlModule {
+    pname = "SGMLSpm";
+    version = "1.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RA/RAAB/SGMLSpm-1.1.tar.gz";
+      sha256 = "1gdjf3mcz2bxir0l9iljxiz6qqqg3a9gg23y5wjg538w552r432m";
+    };
+  };
+
+  SignalMask = buildPerlPackage {
+    pname = "Signal-Mask";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Signal-Mask-0.008.tar.gz";
+      sha256 = "043d995b6b249d9ebc04c467db31bb7ddc2e55faa08e885bdb050b1f2336b73f";
+    };
+    propagatedBuildInputs = [ IPCSignal ];
+    meta = {
+      description = "Signal masks made easy";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SnowballNorwegian = buildPerlModule {
+     pname = "Snowball-Norwegian";
+     version = "1.2";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AS/ASKSH/Snowball-Norwegian-1.2.tar.gz";
+       sha256 = "0675v45bbsh7vr7kpf36xs2q79g02iq1kmfw22h20xdk4rzqvkqx";
+     };
+     meta = {
+       description = "Porters stemming algorithm for norwegian.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  SnowballSwedish = buildPerlModule {
+     pname = "Snowball-Swedish";
+     version = "1.2";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/A/AS/ASKSH/Snowball-Swedish-1.2.tar.gz";
+       sha256 = "0agwc12jk5kmabnpsplw3wf4ii5w1zb159cpin44x3srb0sr5apg";
+     };
+     meta = {
+       description = "Porters stemming algorithm for swedish.";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  SOAPLite = buildPerlPackage {
+    pname = "SOAP-Lite";
+    version = "1.27";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/SOAP-Lite-1.27.tar.gz";
+      sha256 = "00fkvmnxiy5mr45rj5qmxmflw0xdkw2gihm48iha2i8smdmi0ng3";
+    };
+    propagatedBuildInputs = [ ClassInspector IOSessionData LWPProtocolHttps TaskWeaken XMLParser ];
+    meta = {
+      description = "Perl's Web Services Toolkit";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestWarn XMLParserLite ];
+  };
+
+  Socket6 = buildPerlPackage {
+    pname = "Socket6";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/U/UM/UMEMOTO/Socket6-0.29.tar.gz";
+      sha256 = "468915fa3a04dcf6574fc957eff495915e24569434970c91ee8e4e1459fc9114";
+    };
+    setOutputFlags = false;
+    buildInputs = [ pkgs.which ];
+    patches = [ ../development/perl-modules/Socket6-sv_undef.patch ];
+    meta = {
+      description = "IPv6 related part of the C socket.h defines and structure manipulators";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  SoftwareLicense = buildPerlPackage {
+    pname = "Software-License";
+    version = "0.103014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Software-License-0.103014.tar.gz";
+      sha256 = "eb45ea602d75006683789fbba57a01c0a1f7037371de95ea54b91577535d1789";
+    };
+    buildInputs = [ TryTiny ];
+    propagatedBuildInputs = [ DataSection TextTemplate ];
+    meta = {
+      homepage = "https://github.com/rjbs/Software-License";
+      description = "Packages that provide templated software licenses";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SoftwareLicenseCCpack = buildPerlPackage {
+     pname = "Software-License-CCpack";
+     version = "1.11";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/B/BB/BBYRD/Software-License-CCpack-1.11.tar.gz";
+       sha256 = "1cakbn7am8mhalwas5h33l7c6avdqpg42z478p6rav11pim5qksr";
+     };
+     propagatedBuildInputs = [ SoftwareLicense ];
+     buildInputs = [ TestCheckDeps ];
+     meta = {
+       description = "Software::License pack for Creative Commons' licenses";
+       license = with lib.licenses; [ lgpl3Plus ];
+       homepage = "https://github.com/SineSwiper/Software-License-CCpack";
+     };
+  };
+
+  SortKey = buildPerlPackage {
+    pname = "Sort-Key";
+    version = "1.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SALVA/Sort-Key-1.33.tar.gz";
+      sha256 = "1kqs10s2plj6c96srk0j8d7xj8dxk1704r7mck8rqk09mg7lqspd";
+    };
+    meta = {
+      description = "Sort arrays by one or multiple calculated keys";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SortVersions = buildPerlPackage {
+    pname = "Sort-Versions";
+    version = "1.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Sort-Versions-1.62.tar.gz";
+      sha256 = "1aifzm79ky03gi2lwxyx4mk6yky8x215j0kz4f0jbgkf803k6pxz";
+    };
+  };
+
+  Specio = buildPerlPackage {
+     pname = "Specio";
+     version = "0.46";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DR/DROLSKY/Specio-0.46.tar.gz";
+       sha256 = "15lmxffbzj1gq7n9m80a3ka8nqxmmk3p4azp33y6wv872shjmx0b";
+     };
+     propagatedBuildInputs = [ DevelStackTrace EvalClosure MROCompat ModuleRuntime RoleTiny SubQuote TryTiny ];
+     buildInputs = [ TestFatal TestNeeds ];
+     meta = {
+       description = "Type constraints and coercions for Perl";
+       license = with lib.licenses; [ artistic2 ];
+     };
+  };
+
+  SpecioLibraryPathTiny = buildPerlPackage {
+     pname = "Specio-Library-Path-Tiny";
+     version = "0.04";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DR/DROLSKY/Specio-Library-Path-Tiny-0.04.tar.gz";
+       sha256 = "0cyfx8gigsgisdwynjamh8jkpad23sr8v6a98hq285zmibm16s7g";
+     };
+     propagatedBuildInputs = [ PathTiny Specio ];
+     buildInputs = [ Filepushd TestFatal ];
+     meta = {
+       description = "Path::Tiny types and coercions for Specio";
+       license = with lib.licenses; [ asl20 ];
+     };
+  };
+
+  Spiffy = buildPerlPackage {
+    pname = "Spiffy";
+    version = "0.46";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Spiffy-0.46.tar.gz";
+      sha256 = "18qxshrjh0ibpzjm2314157mxlibh3smyg64nr4mq990hh564n4g";
+    };
+  };
+
+  SpreadsheetCSV = buildPerlPackage {
+    pname = "Spreadsheet-CSV";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DD/DDICK/Spreadsheet-CSV-0.20.tar.gz";
+      sha256 = "070bb252a8fe8b938a1ce4fc90525f833d4e619b6d4673b0ae0a23408d514ab6";
+    };
+    nativeBuildInputs = [ CGI ];
+    propagatedBuildInputs = [ ArchiveZip SpreadsheetParseExcel TextCSV_XS XMLParser ];
+    meta = {
+      description = "Drop-in replacement for Text::CSV_XS with spreadsheet support";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SpreadsheetParseExcel = buildPerlPackage {
+    pname = "Spreadsheet-ParseExcel";
+    version = "0.65";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOUGW/Spreadsheet-ParseExcel-0.65.tar.gz";
+      sha256 = "6ec4cb429bd58d81640fe12116f435c46f51ff1040c68f09cc8b7681c1675bec";
+    };
+    propagatedBuildInputs = [ CryptRC4 DigestPerlMD5 IOStringy OLEStorage_Lite ];
+    meta = {
+      homepage = "https://github.com/runrig/spreadsheet-parseexcel/";
+      description = "Read information from an Excel file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SpreadsheetWriteExcel = buildPerlPackage {
+    pname = "Spreadsheet-WriteExcel";
+    version = "2.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JM/JMCNAMARA/Spreadsheet-WriteExcel-2.40.tar.gz";
+      sha256 = "e356aad6866cf135731268ee0e979a197443c15a04878e9cf3e80d022ad6c07e";
+    };
+    propagatedBuildInputs = [ OLEStorage_Lite ParseRecDescent ];
+    meta = {
+      description = "Write to a cross platform Excel binary file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SQLAbstract = buildPerlPackage {
+    pname = "SQL-Abstract";
+    version = "1.87";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/SQL-Abstract-1.87.tar.gz";
+      sha256 = "e926a0a83da7efa18e57e5b2952a2ab3b7563a51733fc6dd5c89f12156481c4a";
+    };
+    buildInputs = [ TestDeep TestException TestWarn ];
+    propagatedBuildInputs = [ HashMerge MROCompat Moo ];
+    meta = {
+      description = "Generate SQL from Perl data structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SQLAbstractClassic = buildPerlPackage {
+    pname = "SQL-Abstract-Classic";
+    version = "1.91";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RI/RIBASUSHI/SQL-Abstract-Classic-1.91.tar.gz";
+      sha256 = "0a7g13hs3kdxrjn43sfli09mgsi9d6w0dfw6hlk268av17yisgaf";
+    };
+    buildInputs = [ TestDeep TestException TestWarn ];
+    propagatedBuildInputs = [ SQLAbstract ];
+    meta = {
+      description = "Generate SQL from Perl data structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SQLAbstractLimit = buildPerlPackage {
+    pname = "SQL-Abstract-Limit";
+    version = "0.142";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AS/ASB/SQL-Abstract-Limit-0.142.tar.gz";
+      sha256 = "0y2q7mxngm9m2kvr6isvxra4frb1cjbiplp381p6hhifn7xfz8fl";
+    };
+    propagatedBuildInputs = [ DBI SQLAbstract ];
+    buildInputs = [ TestDeep TestException ];
+  };
+
+  SQLSplitStatement = buildPerlPackage {
+    pname = "SQL-SplitStatement";
+    version = "1.00020";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EM/EMAZEP/SQL-SplitStatement-1.00020.tar.gz";
+      sha256 = "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ ClassAccessor ListMoreUtils RegexpCommon SQLTokenizer ];
+  };
+
+  SQLStatement = buildPerlPackage {
+    pname = "SQL-Statement";
+    version = "1.414";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RE/REHSACK/SQL-Statement-1.414.tar.gz";
+      sha256 = "0j8sg36wc3nwfb2gj3fv75f0iv7s7q7vl6b5l3fywdm1lv7vvs6x";
+    };
+    buildInputs = [ MathBaseConvert TestDeep TextSoundex ];
+    propagatedBuildInputs = [ Clone ModuleRuntime ParamsUtil ];
+  };
+
+  SQLTokenizer = buildPerlPackage {
+    pname = "SQL-Tokenizer";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IZ/IZUT/SQL-Tokenizer-0.24.tar.gz";
+      sha256 = "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s";
+    };
+  };
+
+  SQLTranslator = buildPerlPackage {
+    pname = "SQL-Translator";
+    version = "1.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IL/ILMARI/SQL-Translator-1.62.tar.gz";
+      sha256 = "096fq62iphmxgcfcayg4i0wf09y1rl1ar6hrcxfqsbrsmkwlzk8a";
+    };
+    buildInputs = [ FileShareDirInstall JSONMaybeXS TestDifferences TestException XMLWriter YAML ];
+    propagatedBuildInputs = [ CarpClan DBI FileShareDir Moo PackageVariant ParseRecDescent TryTiny GraphViz GD ];
+
+    postPatch = ''
+      patchShebangs script
+    '';
+
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      for file in $out/bin/*; do
+        shortenPerlShebang $file
+      done
+    '';
+
+    meta = {
+      description = "SQL DDL transformations and more";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  PackageVariant = buildPerlPackage {
+    pname = "Package-Variant";
+    version = "1.003002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTROUT/Package-Variant-1.003002.tar.gz";
+      sha256 = "b2ed849d2f4cdd66467512daa3f143266d6df810c5fae9175b252c57bc1536dc";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ImportInto strictures ];
+    meta = {
+      description = "Parameterizable packages";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SortNaturally = buildPerlPackage {
+    pname = "Sort-Naturally";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BINGOS/Sort-Naturally-1.03.tar.gz";
+      sha256 = "eaab1c5c87575a7826089304ab1f8ffa7f18e6cd8b3937623e998e865ec1e746";
+    };
+  };
+
+  Starlet = buildPerlPackage {
+    pname = "Starlet";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/Starlet-0.31.tar.gz";
+      sha256 = "b9603b8e62880cb4582f6a7939eafec65e6efd3d900f2c7dd342e5f4c68d62d8";
+    };
+    buildInputs = [ LWP TestSharedFork TestTCP ];
+    propagatedBuildInputs = [ ParallelPrefork Plack ServerStarter ];
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      description = "A simple, high-performance PSGI/Plack HTTP server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Starman = buildPerlModule {
+    pname = "Starman";
+    version = "0.4015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Starman-0.4015.tar.gz";
+      sha256 = "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h";
+    };
+    buildInputs = [ LWP ModuleBuildTiny TestRequires TestTCP ];
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    propagatedBuildInputs = [ DataDump HTTPParserXS NetServer Plack NetServerSSPrefork ];
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/starman
+    '';
+
+    doCheck = false; # binds to various TCP ports
+    meta = {
+      homepage = "https://github.com/miyagawa/Starman";
+      description = "High-performance preforking PSGI/Plack web server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StatisticsBasic = buildPerlPackage {
+    pname = "Statistics-Basic";
+    version = "1.6611";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JETTERO/Statistics-Basic-1.6611.tar.gz";
+      sha256 = "1ywl398z42hz9w1k0waf1caa6agz8jzsjlf4rzs1lgpx2mbcwmb8";
+    };
+    propagatedBuildInputs = [ NumberFormat ];
+    meta = {
+      license = "open_source";
+    };
+  };
+
+  StatisticsCaseResampling = buildPerlPackage {
+    pname = "Statistics-CaseResampling";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMUELLER/Statistics-CaseResampling-0.15.tar.gz";
+      sha256 = "11whlh2dl7l6wrrnfmpbsg7ldcn316iccl1aaa4j5lqhdyyl6745";
+    };
+    meta = {
+      description = "Efficient resampling and calculation of medians with confidence intervals";
+    };
+  };
+
+  StatisticsChiSquare = buildPerlPackage rec {
+    pname = "Statistics-ChiSquare";
+    version = "1.0000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Statistics-ChiSquare-1.0000.tar.gz";
+      sha256 = "255a5a38336d048ddb9077222691e000984e907aae09a4ea695a9cfd49a1ddd0";
+    };
+    meta = {
+      description = "Implements the Chi Squared test, using pre-computed tables";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StatisticsDescriptive = buildPerlModule {
+    pname = "Statistics-Descriptive";
+    version = "3.0800";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Statistics-Descriptive-3.0800.tar.gz";
+      sha256 = "0fgrjr79ai5dn92kypslsi97y7r8iiwmd682lrd47vdz4vmdwkmh";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ ListMoreUtils ];
+  };
+
+  StatisticsDistributions = buildPerlPackage {
+    pname = "Statistics-Distributions";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKEK/Statistics-Distributions-1.02.tar.gz";
+      sha256 = "1j1kswl98f4i9dn176f9aa3y9bissx2sscga5jm3gjl4pxm3k7zr";
+    };
+  };
+
+  StatisticsTTest = buildPerlPackage {
+    pname = "Statistics-TTest";
+    version = "1.1.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YU/YUNFANG/Statistics-TTest-1.1.0.tar.gz";
+      sha256 = "0rkifgzm4rappiy669dyi6lyxn2sdqaf0bl6gndlfa67b395kndj";
+    };
+    propagatedBuildInputs = [ StatisticsDescriptive StatisticsDistributions ];
+  };
+
+  StreamBuffered = buildPerlPackage {
+    pname = "Stream-Buffered";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DOY/Stream-Buffered-0.03.tar.gz";
+      sha256 = "0fs2n9zw6isfkha2kbqrvl9mwg572x1x0jlfaps0qsyynn846bcv";
+    };
+    meta = {
+      homepage = "https://plackperl.org";
+      description = "Temporary buffer to save bytes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  strictures = buildPerlPackage {
+    pname = "strictures";
+    version = "2.000006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/strictures-2.000006.tar.gz";
+      sha256 = "0mwd9xqz4n8qfpi5h5581lbm33qhf7agww18h063icnilrs7km89";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringApprox = buildPerlPackage {
+    pname = "String-Approx";
+    version = "3.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JH/JHI/String-Approx-3.28.tar.gz";
+      sha256 = "43201e762d8699cb0ac2c0764a5454bdc2306c0771014d6c8fba821480631342";
+    };
+  };
+
+  StringCamelCase = buildPerlPackage {
+    pname = "String-CamelCase";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HI/HIO/String-CamelCase-0.04.tar.gz";
+      sha256 = "1a8i4yzv586svd0pbxls7642vvmyiwzh4x2xyij8gbnfxsydxhw9";
+    };
+  };
+
+  StringCompareConstantTime = buildPerlPackage {
+    pname = "String-Compare-ConstantTime";
+    version = "0.321";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FRACTAL/String-Compare-ConstantTime-0.321.tar.gz";
+      sha256 = "0b26ba2b121d8004425d4485d1d46f59001c83763aa26624dff6220d7735d7f7";
+    };
+    meta = {
+      description = "Timing side-channel protected string compare";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringCRC32 = buildPerlPackage {
+    pname = "String-CRC32";
+    version = "2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEEJO/String-CRC32-2.tar.gz";
+      sha256 = "0bfrpnkgfakd4apv366p63z4vzypzvhj3yyqaw9dg7zca2pgxdzd";
+    };
+  };
+
+  StringDiff = buildPerlModule {
+    pname = "String-Diff";
+    version = "0.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YA/YAPPO/String-Diff-0.07.tar.gz";
+      sha256 = "7215b67cbc3226e2d0e18b38ec58c93be0bf6090278698bef955348826cd0af3";
+    };
+    patches = [
+      (fetchpatch {
+        url = "https://salsa.debian.org/perl-team/modules/packages/libstring-diff-perl/-/raw/d8120a93f73f4d4aa40d10819b2f0a312608ca9b/debian/patches/0001-Fix-the-test-suite-for-YAML-1.21-compatibility.patch";
+        sha256 = "0rggwcp7rfnp3zhnxpn5pb878v2dhpk3x6682w9dnsym92gjrij5";
+      })
+    ];
+    buildInputs = [ TestBase ModuleBuildTiny ModuleInstallGithubMeta ModuleInstallRepository ModuleInstallReadmeFromPod ModuleInstallReadmeMarkdownFromPod YAML ];
+    propagatedBuildInputs = [ AlgorithmDiff ];
+    meta = {
+      homepage = "https://github.com/yappo/p5-String-Diff";
+      description = "Simple diff to String";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  StringErrf = buildPerlPackage {
+    pname = "String-Errf";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/String-Errf-0.008.tar.gz";
+      sha256 = "1nyn9s52jgbffrsv0m7rhcx1awjj43n68bfjlap8frdc7mw6y4xf";
+    };
+    buildInputs = [ JSONMaybeXS TimeDate ];
+    propagatedBuildInputs = [ StringFormatter ];
+    meta = {
+      description = "A simple sprintf-like dialect";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringEscape = buildPerlPackage {
+    pname = "String-Escape";
+    version = "2010.002";
+    src = fetchurl {
+        url = "mirror://cpan/authors/id/E/EV/EVO/String-Escape-2010.002.tar.gz";
+        sha256 = "12ls7f7847i4qcikkp3skwraqvjphjiv2zxfhl5d49326f5myr7x";
+    };
+  };
+
+  StringFlogger = buildPerlPackage {
+    pname = "String-Flogger";
+    version = "1.101245";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/String-Flogger-1.101245.tar.gz";
+      sha256 = "aa03c08e01f802a358c175c6093c02adf9688659a087a8ddefdc3e9cef72640b";
+    };
+    propagatedBuildInputs = [ JSONMaybeXS SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/String-Flogger";
+      description = "String munging for loggers";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringFormat = buildPerlPackage {
+    pname = "String-Format";
+    version = "1.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SREZIC/String-Format-1.18.tar.gz";
+      sha256 = "0y77frxzjifd4sw0j19cc346ysas1mya84rdxaz279lyin7plhcy";
+    };
+  };
+
+  StringFormatter = buildPerlPackage {
+    pname = "String-Formatter";
+    version = "0.102084";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/String-Formatter-0.102084.tar.gz";
+      sha256 = "0mlwm0rirv46gj4h072q8gdync5zxxsxy8p028gdyrhczl942dc3";
+    };
+    propagatedBuildInputs = [ SubExporter ];
+    meta = with lib; {
+      description = "Build sprintf-like functions of your own";
+      license = licenses.gpl2;
+    };
+  };
+
+  StringInterpolate = buildPerlPackage {
+    pname = "String-Interpolate";
+    version = "0.32";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/String-Interpolate-0.32.tar.gz";
+      sha256 = "15fwbpz3jdpdgmz794iw9hz2caxrnrw9pdwprxxkanpm92cdhaf7";
+    };
+    meta = with lib; {
+      # https://metacpan.org/pod/String::Interpolate
+      description = "String::Interpolate - Wrapper for builtin the Perl interpolation engine.";
+      license = licenses.gpl1Plus;
+    };
+    propagatedBuildInputs = [ PadWalker SafeHole ];
+  };
+
+  StringInterpolateNamed = buildPerlPackage {
+    pname = "String-Interpolate-Named";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/String-Interpolate-Named-1.00.tar.gz";
+      sha256 = "727299fa69258b604770e059ec4da906bfde71861fdd1e3e89e30677371c5a80";
+    };
+    meta = {
+      description = "Interpolated named arguments in string";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringMkPasswd = buildPerlPackage {
+    pname = "String-MkPasswd";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CG/CGRAU/String-MkPasswd-0.05.tar.gz";
+      sha256 = "15lvcc8c9hp6mg3jx02wd3b85aphn8yl5db62q3pam04c0sgh42k";
+    };
+  };
+
+  StringRandom = buildPerlModule {
+    pname = "String-Random";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/String-Random-0.31.tar.gz";
+      sha256 = "0p4pmf3k6c01j8clfx54167rva9mf82bkh9aj5qdrix2cgpd2jjb";
+    };
+  };
+
+  StringRewritePrefix = buildPerlPackage {
+    pname = "String-RewritePrefix";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/String-RewritePrefix-0.008.tar.gz";
+      sha256 = "1sq8way03gxb990n232y201grnh0jj0xhj7g4b3mz3sfj7b32np4";
+    };
+    propagatedBuildInputs = [ SubExporter ];
+    meta = {
+      description = "Rewrite strings based on a set of known prefixes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringShellQuote = buildPerlPackage {
+    pname = "String-ShellQuote";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROSCH/String-ShellQuote-1.04.tar.gz";
+      sha256 = "0dfxhr6hxc2majkkrm0qbx3qcbykzpphbj2ms93dc86f7183c1p6";
+    };
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      # http://cpansearch.perl.org/src/ROSCH/String-ShellQuote-1.04/README
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringSimilarity = buildPerlPackage {
+    pname = "String-Similarity";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/ML/MLEHMANN/String-Similarity-1.04.tar.gz";
+      sha256 = "0i9j3hljxw7j6yiii9nsscfj009vw6zv1q8cxwd75jxvj0idm3hz";
+    };
+    doCheck = true;
+    meta = {
+      license = with lib.licenses; [ gpl2 ];
+      description = "Calculate the similarity of two strings";
+    };
+  };
+
+  ShellCommand = buildPerlPackage {
+    pname = "Shell-Command";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FL/FLORA/Shell-Command-0.06.tar.gz";
+      sha256 = "1lgc2rb3b5a4lxvbq0cbg08qk0n2i88srxbsz93bwi3razpxxr7k";
+    };
+  };
+
+  ShellConfigGenerate = buildPerlPackage {
+    pname = "Shell-Config-Generate";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Shell-Config-Generate-0.34.tar.gz";
+      sha256 = "84f451f22215dd68e9c18aa3f7ddb03a82007d166cfada003d0f166f571e0562";
+    };
+    buildInputs = [ Test2Suite ];
+    propagatedBuildInputs = [ ShellGuess ];
+    meta = {
+      homepage = "https://metacpan.org/pod/Shell::Config::Generate";
+      description = "Portably generate config for any shell";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  ShellGuess = buildPerlPackage {
+    pname = "Shell-Guess";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Shell-Guess-0.09.tar.gz";
+      sha256 = "4069fa2637e443118ed956d710231d166823d23b2a64eb87b8a46872e865a12b";
+    };
+    meta = {
+      homepage = "https://metacpan.org/pod/Shell::Guess";
+      description = "Make an educated guess about the shell in use";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringToIdentifierEN = buildPerlPackage {
+    pname = "String-ToIdentifier-EN";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/String-ToIdentifier-EN-0.12.tar.gz";
+      sha256 = "12nw7h2yiybhdw0vnnpc7bif8ylhsn6kqf6s39dsrf9h54iq9yrs";
+    };
+    propagatedBuildInputs = [ LinguaENInflectPhrase TextUnidecode namespaceclean ];
+  };
+
+  StringTruncate = buildPerlPackage {
+    pname = "String-Truncate";
+    version = "1.100602";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/String-Truncate-1.100602.tar.gz";
+      sha256 = "0vjz4fd4cvcy12gk5bdha7z73ifmfpmk748khha94dhiq3pd98xa";
+    };
+    propagatedBuildInputs = [ SubExporter ];
+    meta = {
+      description = "A module for when strings are too long to be displayed in";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringTT = buildPerlPackage {
+    pname = "String-TT";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/String-TT-0.03.tar.gz";
+      sha256 = "1asjr79wqcl9wk96afxrm1yhpj8lk9bk8kyz78yi5ypr0h55yq7p";
+    };
+    buildInputs = [ TestException TestSimple13 TestTableDriven ];
+    propagatedBuildInputs = [ PadWalker SubExporter TemplateToolkit ];
+    meta = {
+      description = "Use TT to interpolate lexical variables";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  StringUtil = buildPerlModule {
+    pname = "String-Util";
+    version = "1.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BAKERSCOT/String-Util-1.31.tar.gz";
+      sha256 = "0vfjvy04y71f8jsjg0yll28wqlpgn7gbkcrb0i72k0qcliz9mg7v";
+    };
+    meta = {
+      description = "String::Util -- String processing utilities";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+
+    buildInputs = [ ModuleBuildTiny ];
+  };
+
+  strip-nondeterminism = callPackage ../development/perl-modules/strip-nondeterminism { };
+
+  StructDumb = buildPerlModule {
+    pname = "Struct-Dumb";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Struct-Dumb-0.12.tar.gz";
+      sha256 = "0wvzcpil9xc2wkibq3sj8i5bgq4iadx2k7hfqb8jm5p66g271kjj";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "make simple lightweight record-like structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubExporter = buildPerlPackage {
+    pname = "Sub-Exporter";
+    version = "0.987";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Exporter-0.987.tar.gz";
+      sha256 = "1ml3n1ck4ln9qjm2mcgkczj1jb5n1fkscz9c4x23v4db0glb4g2l";
+    };
+    propagatedBuildInputs = [ DataOptList ];
+    meta = {
+      homepage = "https://github.com/rjbs/sub-exporter";
+      description = "A sophisticated exporter for custom-built routines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubExporterForMethods = buildPerlPackage {
+    pname = "Sub-Exporter-ForMethods";
+    version = "0.100052";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz";
+      sha256 = "421fbba4f6ffcf13c4335f2c20630d709e6fa659c07545d094dbc5a558ad3006";
+    };
+    buildInputs = [ namespaceautoclean ];
+    propagatedBuildInputs = [ SubExporter SubName ];
+    meta = {
+      homepage = "https://github.com/rjbs/Sub-Exporter-ForMethods";
+      description = "Helper routines for using Sub::Exporter to build methods";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubExporterGlobExporter = buildPerlPackage {
+    pname = "Sub-Exporter-GlobExporter";
+    version = "0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Exporter-GlobExporter-0.005.tar.gz";
+      sha256 = "0qvsvfvfyk69v2ygjnyd5sh3bgbzd6f7k7mgv0zws1yywvpmxi1g";
+    };
+    propagatedBuildInputs = [ SubExporter ];
+    meta = {
+      homepage = "https://github.com/rjbs/sub-exporter-globexporter";
+      description = "Export shared globs with Sub::Exporter collectors";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubExporterProgressive = buildPerlPackage {
+    pname = "Sub-Exporter-Progressive";
+    version = "0.001013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/Sub-Exporter-Progressive-0.001013.tar.gz";
+      sha256 = "0mn0x8mkh36rrsr58s1pk4srwxh2hbwss7sv630imnk49navfdfm";
+    };
+    meta = {
+      description = "Only use Sub::Exporter if you need it";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubHandlesVia = buildPerlPackage {
+    pname = "Sub-HandlesVia";
+    version = "0.016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/Sub-HandlesVia-0.016.tar.gz";
+      sha256 = "1mgr5igbr0zj8kzlfq7ayh5912i6mz47cx3605s04927wm5d9pk9";
+    };
+    propagatedBuildInputs = [ ClassMethodModifiers ClassTiny RoleTiny ScalarListUtils TypeTiny ];
+    buildInputs = [ TestFatal TestRequires ];
+    meta = {
+      description = "alternative handles_via implementation";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubIdentify = buildPerlPackage {
+    pname = "Sub-Identify";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RG/RGARCIA/Sub-Identify-0.14.tar.gz";
+      sha256 = "068d272086514dd1e842b6a40b1bedbafee63900e5b08890ef6700039defad6f";
+    };
+    meta = {
+      description = "Retrieve names of code references";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubInfo = buildPerlPackage {
+    pname = "Sub-Info";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Sub-Info-0.002.tar.gz";
+      sha256 = "ea3056d696bdeff21a99d340d5570887d39a8cc47bff23adfc82df6758cdd0ea";
+    };
+    propagatedBuildInputs = [ Importer ];
+    meta = {
+      description = "Tool for inspecting subroutines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubInstall = buildPerlPackage {
+    pname = "Sub-Install";
+    version = "0.928";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Install-0.928.tar.gz";
+      sha256 = "03zgk1yh128gciyx3q77zxzxg9kf8yy2gm46gdxqi24mcykngrb1";
+    };
+    meta = {
+      description = "Install subroutines into packages easily";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubName = buildPerlPackage {
+    pname = "Sub-Name";
+    version = "0.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Sub-Name-0.26.tar.gz";
+      sha256 = "2d2f2d697d516c89547e7c4307f1e79441641cae2c7395e7319b306d390df105";
+    };
+    buildInputs = [ BC DevelCheckBin ];
+    meta = {
+      homepage = "https://github.com/p5sagit/Sub-Name";
+      description = "(Re)name a sub";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubOverride = buildPerlPackage {
+    pname = "Sub-Override";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OV/OVID/Sub-Override-0.09.tar.gz";
+      sha256 = "1d955qn44brkcfif3gi0q2vvvqahny6rax0vr068x5i9yz0ng6lk";
+    };
+    buildInputs = [ TestFatal ];
+  };
+
+  SubQuote = buildPerlPackage {
+    pname = "Sub-Quote";
+    version = "2.006006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Sub-Quote-2.006006.tar.gz";
+      sha256 = "6e4e2af42388fa6d2609e0e82417de7cc6be47223f576592c656c73c7524d89d";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "Efficient generation of subroutines via string eval";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SubUplevel = buildPerlPackage {
+    pname = "Sub-Uplevel";
+    version = "0.2800";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz";
+      sha256 = "14z2xjiw931wizcx3mblmby753jspvfm321d6chs907nh0xzdwxl";
+    };
+    meta = {
+      homepage = "https://github.com/dagolden/sub-uplevel";
+      description = "Apparently run a function in a higher stack frame";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SVNSimple = buildPerlPackage {
+    pname = "SVN-Simple";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CL/CLKAO/SVN-Simple-0.28.tar.gz";
+      sha256 = "1ysgi38zx236cxz539k6d6rw5z0vc70rrglsaf5fk6rnwilw2g6n";
+    };
+    propagatedBuildInputs = [ (pkgs.subversionClient.override { inherit perl; }) ];
+  };
+
+  SafeHole = buildPerlModule {
+    pname = "Safe-Hole";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Safe-Hole-0.14.tar.gz";
+      sha256 = "01gc2lfli282dj6a2pkpxb0vmpyavs323cbdw15gxi06pn5nxxgl";
+    };
+    meta = {
+      description = "lib/Safe/Hole.pm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/toddr/Safe-Hole";
+      broken = stdenv.isDarwin;
+    };
+  };
+
+  Swim = buildPerlPackage {
+    pname = "Swim";
+    version = "0.1.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Swim-0.1.48.tar.gz";
+      sha256 = "a5f72fd2f22917fa2b4acbb2ee2c3d32903d97ee5b0e449b0f387018c77f4f0c";
+    };
+    propagatedBuildInputs = [ HTMLEscape HashMerge IPCRun Pegex TextAutoformat YAMLLibYAML ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/swim-pm";
+      description = "See What I Mean?!";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Switch = buildPerlPackage {
+    pname = "Switch";
+    version = "2.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Switch-2.17.tar.gz";
+      sha256 = "0xbdjdgzfj9zwa4j3ipr8bfk7bcici4hk89hq5d27rhg2isljd9i";
+    };
+    doCheck = false;                             # FIXME: 2/293 test failures
+  };
+
+  SymbolGet = buildPerlPackage {
+    pname = "Symbol-Get";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FELIPE/Symbol-Get-0.10.tar.gz";
+      sha256 = "0ee5568c5ae3573ca874e09e4d0524466cfc1ad9a2c24d0bc91d4c7b06f21d9c";
+    };
+    buildInputs = [ TestDeep TestException ];
+    propagatedBuildInputs = [ CallContext ];
+    meta = {
+      description = "Read Perl's symbol table programmatically";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  SymbolGlobalName = buildPerlPackage {
+    pname = "Symbol-Global-Name";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/Symbol-Global-Name-0.05.tar.gz";
+      sha256 = "0f7623e9d724760aa64040222da1d82f1188586791329261cc60dad1d60d6a92";
+    };
+    meta = {
+      description = "Finds name and type of a global variable";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SymbolUtil = buildPerlModule {
+    pname = "Symbol-Util";
+    version = "0.0203";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Symbol-Util-0.0203.tar.gz";
+      sha256 = "0cnwwrd5d6i80f33s7n2ak90rh4s53ss7q57wndrpkpr4bfn3djm";
+    };
+  };
+
+  syntax = buildPerlPackage {
+    pname = "syntax";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHAYLON/syntax-0.004.tar.gz";
+      sha256 = "fe19b6da8a8f43a5aa2ee571441bc0e339fb156d0081c157a1a24e9812c7d365";
+    };
+    propagatedBuildInputs = [ DataOptList namespaceclean ];
+    meta = {
+      homepage = "https://github.com/phaylon/syntax/wiki";
+      description = "Activate syntax extensions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SyntaxKeywordJunction = buildPerlPackage {
+    pname = "Syntax-Keyword-Junction";
+    version = "0.003008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FR/FREW/Syntax-Keyword-Junction-0.003008.tar.gz";
+      sha256 = "8b4975f21b1992a7e6c2df5dcc92b254c61925595eddcdfaf0b1498717aa95ef";
+    };
+    buildInputs = [ TestRequires ];
+    propagatedBuildInputs = [ syntax ];
+    meta = {
+      homepage = "https://github.com/frioux/Syntax-Keyword-Junction";
+      description = "Perl6 style Junction operators in Perl5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SyntaxKeywordTry = buildPerlModule {
+    pname = "Syntax-Keyword-Try";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Syntax-Keyword-Try-0.25.tar.gz";
+      sha256 = "0xd82gcpcrnmwxsbk7x0ainmyybdc087g6j69hrpy80j0asnq2f5";
+    };
+    propagatedBuildInputs = [ XSParseKeyword ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "A try/catch/finally syntax for perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  SysMmap = buildPerlPackage {
+    pname = "Sys-Mmap";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Sys-Mmap-0.20.tar.gz";
+      sha256 = "1kz22l7sh2mibliixyshc9958bqlkzsb13agcibp7azii4ncw80q";
+    };
+    meta = with lib; {
+      description = "Use mmap to map in a file as a Perl variable";
+      maintainers = with maintainers; [ peterhoeg ];
+      license = with licenses; [ gpl2Plus ];
+    };
+  };
+
+  SysMemInfo = buildPerlPackage {
+    pname = "Sys-MemInfo";
+    version = "0.99";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCRESTO/Sys-MemInfo-0.99.tar.gz";
+      sha256 = "0786319d3a3a8bae5d727939244bf17e140b714f52734d5e9f627203e4cf3e3b";
+    };
+    meta = {
+      description = "Memory informations";
+      maintainers = [ maintainers.pSub ];
+      license = with lib.licenses; [ gpl2Plus ];
+    };
+  };
+
+  SysCPU = buildPerlPackage {
+    pname = "Sys-CPU";
+    version = "0.61";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MZ/MZSANFORD/Sys-CPU-0.61.tar.gz";
+      sha256 = "1r6976bs86j7zp51m5vh42xlyah951jgdlkimv202413kjvqc2i5";
+    };
+    patches = [
+      # Bug #95400 for Sys-CPU: Tests fail on ARM and AArch64 Linux
+      # https://rt.cpan.org/Public/Bug/Display.html?id=95400
+      (fetchpatch {
+        url = "https://rt.cpan.org/Ticket/Attachment/1359669/721669/0001-Add-support-for-cpu_type-on-ARM-and-AArch64-Linux-pl.patch";
+        sha256 = "0rmazzdy34znksdhh8drc83lk754slhjgvnk4kk27z3kw5gm10m0";
+      })
+      (fetchpatch {
+        url = "https://rt.cpan.org/Ticket/Attachment/1388036/737125/0002-cpu_clock-can-be-undefined-on-an-ARM.patch";
+        sha256 = "0z3wqfahc9av7y34aqp6biq3sf8v8q4yynx7bv290vds50dsjb4w";
+      })
+    ];
+    buildInputs = lib.optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.Carbon;
+    doCheck = !stdenv.isAarch64;
+  };
+
+  SysHostnameLong = buildPerlPackage {
+    pname = "Sys-Hostname-Long";
+    version = "1.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCOTT/Sys-Hostname-Long-1.5.tar.gz";
+      sha256 = "1jv5n8jv48c1p8svjsigyxndv1ygsq8wgwj9c7ypx1vaf3rns679";
+    };
+    doCheck = false; # no `hostname' in stdenv
+  };
+
+  SysSigAction = buildPerlPackage {
+    pname = "Sys-SigAction";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LB/LBAXTER/Sys-SigAction-0.23.tar.gz";
+      sha256 = "c4ef6c9345534031fcbbe2adc347fc7194d47afc945e7a44fac7e9563095d353";
+    };
+    doCheck = !stdenv.isAarch64; # it hangs on Aarch64
+    meta = {
+      description = "Perl extension for Consistent Signal Handling";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SysSyslog = buildPerlPackage {
+    pname = "Sys-Syslog";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAPER/Sys-Syslog-0.36.tar.gz";
+      sha256 = "ed42a9e5ba04ad4856cc0cb5d38d289c3c5d3764543ec04efafc4af7e3378df8";
+    };
+    meta = {
+      description = "Perl interface to the UNIX syslog(3) calls";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  SystemCommand = buildPerlPackage {
+    pname = "System-Command";
+    version = "1.121";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/System-Command-1.121.tar.gz";
+      sha256 = "43de5ecd20c1da46e8a6f4fceab29e04697a2890a99bf6a91b3ca004a468a241";
+    };
+    propagatedBuildInputs = [ IPCRun ];
+    meta = {
+      description = "Object for running system commands";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ PodCoverageTrustPod TestCPANMeta TestPod TestPodCoverage ];
+  };
+
+  SysVirt = buildPerlModule rec {
+    pname = "Sys-Virt";
+    version = "8.1.0";
+    src = fetchFromGitLab {
+      owner = "libvirt";
+      repo = "libvirt-perl";
+      rev = "v${version}";
+      sha256 = "sha256-9cjH4hIIxB+Pv9+ck6xg8KmfM8jtVFKVQNGLYr2AnAM=";
+    };
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    buildInputs = [ pkgs.libvirt CPANChanges TestPod TestPodCoverage XMLXPath ];
+    perlPreHook = lib.optionalString stdenv.isi686 "export LD=$CC"; # fix undefined reference to `__stack_chk_fail_local'
+    meta = {
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.SysVirt.x86_64-darwin
+    };
+  };
+
+  TAPParserSourceHandlerpgTAP = buildPerlModule {
+    pname = "TAP-Parser-SourceHandler-pgTAP";
+    version = "3.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/TAP-Parser-SourceHandler-pgTAP-3.35.tar.gz";
+      sha256 = "1655337l1cyd7q62007wrk87q2gbbwfq9xjy1wgx3hyflxpkkvl4";
+    };
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      description = "Stream TAP from pgTAP test scripts";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TaskCatalystTutorial = buildPerlPackage {
+    pname = "Task-Catalyst-Tutorial";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/Task-Catalyst-Tutorial-0.06.tar.gz";
+      sha256 = "75b1b2d96155647842587146cefd0de30943b85195e8e3eca51e0f0b8642d61e";
+    };
+    propagatedBuildInputs = [ CatalystAuthenticationStoreDBIxClass CatalystControllerHTMLFormFu CatalystDevel CatalystManual CatalystPluginAuthorizationACL CatalystPluginAuthorizationRoles CatalystPluginSessionStateCookie CatalystPluginSessionStoreFastMmap CatalystPluginStackTrace CatalystViewTT ];
+    meta = {
+      description = "Everything you need to follow the Catalyst Tutorial";
+      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.' */
+  };
+
+  TaskFreecellSolverTesting = buildPerlModule {
+    pname = "Task-FreecellSolver-Testing";
+    version = "0.0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Task-FreecellSolver-Testing-0.0.12.tar.gz";
+      sha256 = "19wkz5ii8h90i9gmh692kvw9rz7k9bmpi53pw331fm0jmsvi069x";
+    };
+    buildInputs = [ CodeTidyAll TestDataSplit TestDifferences TestPerlTidy TestRunPluginTrimDisplayedFilenames TestRunValgrind TestTrailingSpace TestTrap ];
+    propagatedBuildInputs = [ EnvPath FileWhich GamesSolitaireVerify InlineC ListMoreUtils MooX StringShellQuote TaskTestRunAllPlugins TemplateToolkit YAMLLibYAML ];
+    meta = {
+      description = "Install the CPAN dependencies of the Freecell Solver test suite";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TaskPlack = buildPerlModule {
+    pname = "Task-Plack";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Task-Plack-0.28.tar.gz";
+      sha256 = "0ajwkyr9nwn11afi6fz6kx4bi7a3p8awjsldmsakz3sl0s42pmbr";
+    };
+    propagatedBuildInputs = [ CGICompile CGIEmulatePSGI CGIPSGI Corona FCGI FCGIClient FCGIProcManager HTTPServerSimplePSGI IOHandleUtil NetFastCGI PSGI PlackAppProxy PlackMiddlewareAuthDigest PlackMiddlewareConsoleLogger PlackMiddlewareDebug PlackMiddlewareDeflater PlackMiddlewareHeader PlackMiddlewareReverseProxy PlackMiddlewareSession Starlet Starman Twiggy ];
+    buildInputs = [ ModuleBuildTiny TestSharedFork ];
+  };
+
+  TaskTestRunAllPlugins = buildPerlModule {
+    pname = "Task-Test-Run-AllPlugins";
+    version = "0.0106";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Task-Test-Run-AllPlugins-0.0106.tar.gz";
+      sha256 = "0y6fgldb59mc96lkghmd8n0gdbqaal6hz0cqqadna1jqi3q0p38v";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestRunPluginAlternateInterpreters TestRunPluginBreakOnFailure TestRunPluginColorFileVerdicts TestRunPluginColorSummary TestRunPluginTrimDisplayedFilenames ];
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Specifications for installing all the Test::Run";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TaskWeaken = buildPerlPackage {
+    pname = "Task-Weaken";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Task-Weaken-1.06.tar.gz";
+      sha256 = "1gk6rmnp4x50lzr0vfng41khf0f8yzxlm0pad1j69vxskpdzx0r3";
+    };
+    meta = {
+      description = "Ensure that a platform has weaken support";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TemplatePluginAutoformat = buildPerlPackage {
+    pname = "Template-Plugin-Autoformat";
+    version = "2.77";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KARMAN/Template-Plugin-Autoformat-2.77.tar.gz";
+      sha256 = "bddfb4919f0abb2a2be7a9665333e0d4e098032f0e383dbaf04c4d896c7486ed";
+    };
+    propagatedBuildInputs = [ TemplateToolkit TextAutoformat ];
+    meta = {
+      homepage = "https://github.com/karpet/template-plugin-autoformat";
+      description = "TT plugin for Text::Autoformat";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TemplatePluginClass = buildPerlPackage {
+    pname = "Template-Plugin-Class";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Template-Plugin-Class-0.14.tar.gz";
+      sha256 = "1hq7jy6zg1iaslsyi05afz0i944y9jnv3nb4krkxjfmzwy5gw106";
+    };
+    propagatedBuildInputs = [ TemplateToolkit ];
+  };
+
+  TemplatePluginIOAll = buildPerlPackage {
+    pname = "Template-Plugin-IO-All";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XE/XERN/Template-Plugin-IO-All-0.01.tar.gz";
+      sha256 = "1f7445422a21932e09bbef935766e0af6b7cceb088e9d8e030cd7a84bcdc5ee4";
+    };
+    propagatedBuildInputs = [ IOAll TemplateToolkit ];
+    meta = {
+      maintainers = with maintainers; [ eelco ];
+      description = "Perl Template Toolkit Plugin for IO::All";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TemplatePluginJavaScript = buildPerlPackage {
+    pname = "Template-Plugin-JavaScript";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Template-Plugin-JavaScript-0.02.tar.gz";
+      sha256 = "1mqqqs0dhfr6bp1305j9ns05q4pq1n3f561l6p8848k5ml3dh87a";
+    };
+    propagatedBuildInputs = [ TemplateToolkit ];
+  };
+
+  TemplatePluginJSONEscape = buildPerlPackage {
+    pname = "Template-Plugin-JSON-Escape";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NA/NANTO/Template-Plugin-JSON-Escape-0.02.tar.gz";
+      sha256 = "051a8b1d3bc601d58fc51e246067d36450cfe970278a0456e8ab61940f13cd86";
+    };
+    propagatedBuildInputs = [ JSON TemplateToolkit ];
+  };
+
+  TemplateTimer = buildPerlPackage {
+    pname = "Template-Timer";
+    version = "1.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Template-Timer-1.00.tar.gz";
+      sha256 = "1d3pbcx1kz73ncg8s8lx3ifwphz838qy0m40gdar7790cnrlqcdp";
+    };
+    propagatedBuildInputs = [ TemplateToolkit ];
+    meta = {
+      description = "Rudimentary profiling for Template Toolkit";
+      license = with lib.licenses; [ artistic2 gpl3 ];
+    };
+  };
+
+  TemplateTiny = buildPerlPackage {
+    pname = "Template-Tiny";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADAMK/Template-Tiny-1.12.tar.gz";
+      sha256 = "073e062c630b51dfb725cd6485a329155cb72d5c596e8cb698eb67c4566f0a4a";
+    };
+    meta = {
+      description = "Template Toolkit reimplemented in as little code as possible";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TemplateToolkit = buildPerlPackage {
+    pname = "Template-Toolkit";
+    version = "3.009";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AT/ATOOMIC/Template-Toolkit-3.009.tar.gz";
+      sha256 = "1dpmy62x1yshf7kwslj85sc8bcgw1m30dh0szmfrp99pysxj7bfn";
+    };
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      description = "Comprehensive template processing system";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ AppConfig ];
+    buildInputs = [ CGI TestLeakTrace ];
+  };
+
+   TemplateGD = buildPerlPackage {
+    pname = "Template-GD";
+    version = "2.66";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABW/Template-GD-2.66.tar.gz";
+      sha256 = "98523c8192f2e8184042e5a2e172bd767ac289dd2e480f35f680dce32160905b";
+    };
+    propagatedBuildInputs = [ GD TemplateToolkit ];
+    meta = {
+      description = "GD plugin(s) for the Template Toolkit";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermEncoding = buildPerlPackage {
+    pname = "Term-Encoding";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Term-Encoding-0.03.tar.gz";
+      sha256 = "95ba9687d735d25a3cbe64508d7894f009c7fa2a1726c3e786e9e21da2251d0b";
+    };
+    meta = {
+      description = "Detect encoding of the current terminal";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermProgressBar = buildPerlPackage {
+    pname = "Term-ProgressBar";
+    version = "2.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/Term-ProgressBar-2.22.tar.gz";
+      sha256 = "2642ecca5b0b038c14812bcad3a9611ff7911dc59c9104d220797f837a880c49";
+    };
+    buildInputs = [ CaptureTiny TestException TestWarnings ];
+    propagatedBuildInputs = [ ClassMethodMaker TermReadKey ];
+    meta = {
+      description = "Provide a progress meter on a standard terminal";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermProgressBarQuiet = buildPerlPackage {
+    pname = "Term-ProgressBar-Quiet";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LB/LBROCARD/Term-ProgressBar-Quiet-0.31.tar.gz";
+      sha256 = "25675292f588bc29d32e710cf3667da9a2a1751e139801770a9fdb18cd2184a6";
+    };
+    propagatedBuildInputs = [ IOInteractive TermProgressBar ];
+    meta = {
+      description = "";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestMockObject ];
+  };
+
+  TermProgressBarSimple = buildPerlPackage {
+    pname = "Term-ProgressBar-Simple";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EV/EVDB/Term-ProgressBar-Simple-0.03.tar.gz";
+      sha256 = "a20db3c67d5bdfd0c1fab392c6d1c26880a7ee843af602af4f9b53a7043579a6";
+    };
+    propagatedBuildInputs = [ TermProgressBarQuiet ];
+    buildInputs = [ TestMockObject ];
+  };
+
+  TermReadKey = let
+    cross = stdenv.hostPlatform != stdenv.buildPlatform;
+  in buildPerlPackage {
+    pname = "TermReadKey";
+    version = "2.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JS/JSTOWE/TermReadKey-2.38.tar.gz";
+      sha256 = "143jlibah1g14bym7sj3gphvqkpj1w4vn7sqc4vc62jpviw5hr2s";
+    };
+
+    # use native libraries from the host when running build commands
+    postConfigure = lib.optionalString cross (let
+      host_perl = buildPerl;
+      host_self = buildPerl.pkgs.TermReadKey;
+      perl_lib = "${host_perl}/lib/perl5/${host_perl.version}";
+      self_lib = "${host_self}/lib/perl5/site_perl/${host_perl.version}";
+    in ''
+      sed -ie 's|"-I$(INST_ARCHLIB)"|"-I${perl_lib}" "-I${self_lib}"|g' Makefile
+    '');
+
+    # TermReadKey uses itself in the build process
+    nativeBuildInputs = lib.optionals cross [
+      buildPerl.pkgs.TermReadKey
+    ];
+  };
+
+  TermReadLineGnu = buildPerlPackage {
+    pname = "Term-ReadLine-Gnu";
+    version = "1.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.36.tar.gz";
+      sha256 = "9a08f7a4013c9b865541c10dbba1210779eb9128b961250b746d26702bab6925";
+    };
+    buildInputs = [ pkgs.readline pkgs.ncurses ];
+    NIX_CFLAGS_LINK = "-lreadline -lncursesw";
+
+    # For some crazy reason Makefile.PL doesn't generate a Makefile if
+    # AUTOMATED_TESTING is set.
+    AUTOMATED_TESTING = false;
+
+    # Makefile.PL looks for ncurses in Glibc's prefix.
+    preConfigure =
+      ''
+        substituteInPlace Makefile.PL --replace '$Config{libpth}' \
+          "'${pkgs.ncurses.out}/lib'"
+      '';
+
+    # Tests don't work because they require /dev/tty.
+    doCheck = false;
+
+    meta = {
+      homepage = "https://sourceforge.net/projects/perl-trg/";
+      description = "Perl extension for the GNU Readline/History Library";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermReadLineTTYtter = buildPerlPackage {
+    pname = "Term-ReadLine-TTYtter";
+    version = "1.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CK/CKAISER/Term-ReadLine-TTYtter-1.4.tar.gz";
+      sha256 = "14xcqhg1vrwgv65nd2z8xzn0wgb18i17pzkkh8m15cp1rqrk2dxc";
+    };
+
+    outputs = [ "out" ];
+
+    meta = {
+      description = "a modified version of T::RL::Perl with several new nonstandard features specific to TTYtter";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermReadPassword = buildPerlPackage rec {
+    pname = "Term-ReadPassword";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHOENIX/${pname}-${version}.tar.gz";
+      sha256 = "08s3zdqbr01qf4h8ryc900qq1cjcdlyy2dq0gppzzy9mbcs6da71";
+    };
+
+    outputs = [ "out" ];
+
+    meta = {
+      description = "This module lets you ask the user for a password in the traditional way, from the keyboard, without echoing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermShell = buildPerlModule {
+    pname = "Term-Shell";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Term-Shell-0.12.tar.gz";
+      sha256 = "1mrx7g74qvkdis7x7zq1zs0b7q2fsz59g4hxvg140r8bq1wzav3x";
+    };
+    propagatedBuildInputs = [ TermReadKey TextAutoformat ];
+    meta = with lib; {
+      homepage = "https://metacpan.org/release/Term-Shell";
+      description = "A simple command-line shell framework";
+      license = with licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermShellUI = buildPerlPackage {
+    pname = "Term-ShellUI";
+    version = "0.92";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BRONSON/Term-ShellUI-0.92.tar.gz";
+      sha256 = "3279c01c76227335eeff09032a40f4b02b285151b3576c04cacd15be05942bdb";
+    };
+  };
+
+  TermSizeAny = buildPerlPackage {
+    pname = "Term-Size-Any";
+    version = "0.002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FERREIRA/Term-Size-Any-0.002.tar.gz";
+      sha256 = "64fa5fdb1ae3a823134aaa95aec75354bc17bdd9ca12ba0a7ae34a7e51b3ded2";
+    };
+    propagatedBuildInputs = [ DevelHide TermSizePerl ];
+    meta = {
+      description = "Retrieve terminal size";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermSizePerl = buildPerlPackage {
+    pname = "Term-Size-Perl";
+    version = "0.031";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FE/FERREIRA/Term-Size-Perl-0.031.tar.gz";
+      sha256 = "ae9a6746cb1b305ddc8f8d8ca46878552b9c1123628971e13a275183822f209e";
+    };
+    meta = {
+      description = "Perl extension for retrieving terminal size (Perl version)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermTable = buildPerlPackage {
+    pname = "Term-Table";
+    version = "0.015";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Term-Table-0.015.tar.gz";
+      sha256 = "d8a18b2801f91f0e5d747147ce786964a76f91d18568652908a3dc06a9b948d5";
+    };
+    propagatedBuildInputs = [ Importer ];
+    meta = {
+      description = "Format a header and rows into a table";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermSk = buildPerlPackage {
+    pname = "Term-Sk";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KE/KEICHNER/Term-Sk-0.18.tar.gz";
+      sha256 = "f2e491796061205b08688802b287792d7d803b08972339fb1070ba05612af885";
+    };
+    meta = {
+      description = "Perl extension for displaying a progress indicator on a terminal.";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TermUI = buildPerlPackage {
+     pname = "Term-UI";
+     version = "0.46";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/B/BI/BINGOS/Term-UI-0.46.tar.gz";
+       sha256 = "19p92za5cx1v7g57pg993amprcvm1az3pp7y9g5b1aplsy06r54i";
+     };
+     propagatedBuildInputs = [ LogMessageSimple ];
+     meta = {
+       description = "User interfaces via Term::ReadLine made easy";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TermVT102 = buildPerlPackage {
+    pname = "Term-VT102";
+    version = "0.91";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AJ/AJWOOD/Term-VT102-0.91.tar.gz";
+      sha256 = "f954e0310941d45c0fc3eb4a40f5d3a00d68119e277d303a1e6af11ded6fbd94";
+    };
+    meta = {
+    };
+  };
+
+  TermVT102Boundless = buildPerlPackage {
+    pname = "Term-VT102-Boundless";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FB/FBARRIOS/Term-VT102-Boundless-0.05.tar.gz";
+      sha256 = "e1ded85ae3d76b59c03b8697f4a6cb01ae31bd62a9354f5bb7d18f9e927b485f";
+    };
+    propagatedBuildInputs = [ TermVT102 ];
+  };
+
+  TermAnimation = buildPerlPackage {
+    pname = "Term-Animation";
+    version = "2.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KB/KBAUCOM/Term-Animation-2.6.tar.gz";
+      sha256 = "7d5c3c2d4f9b657a8b1dce7f5e2cbbe02ada2e97c72f3a0304bf3c99d084b045";
+    };
+    propagatedBuildInputs = [ Curses ];
+    meta = {
+      description = "ASCII sprite animation framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Test2Harness = buildPerlPackage {
+    pname = "Test2-Harness";
+    version = "1.000042";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Harness-1.000042.tar.gz";
+      sha256 = "aaf231a68af1a6ffd6a11188875fcf572e373e43c8285945227b9d687b43db2d";
+    };
+
+    checkPhase = ''
+      patchShebangs ./t ./scripts/yath
+      ./scripts/yath test -j $NIX_BUILD_CORES
+    '';
+
+    propagatedBuildInputs = [ DataUUID Importer LongJump ScopeGuard TermTable Test2PluginMemUsage Test2PluginUUID Test2Suite gotofile ];
+    meta = {
+      description = "A new and improved test harness with better Test2 integration";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.Test2Harness.x86_64-darwin
+    };
+  };
+
+  Test2PluginMemUsage = buildPerlPackage {
+    pname = "Test2-Plugin-MemUsage";
+    version = "0.002003";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Plugin-MemUsage-0.002003.tar.gz";
+      sha256 = "5e0662d5a823ae081641f5ce82843111eec1831cd31f883a6c6de54afdf87c25";
+    };
+    buildInputs = [ Test2Suite ];
+    meta = {
+      description = "Collect and display memory usage information";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+   Test2PluginUUID = buildPerlPackage {
+    pname = "Test2-Plugin-UUID";
+    version = "0.002001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Plugin-UUID-0.002001.tar.gz";
+      sha256 = "4c6c8d484d7153d8779dc155a992b203095b5c5aa1cfb1ee8bcedcd0601878c9";
+    };
+    buildInputs = [ Test2Suite ];
+    propagatedBuildInputs = [ DataUUID ];
+    meta = {
+      description = "Use REAL UUIDs in Test2";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Test2PluginNoWarnings = buildPerlPackage {
+     pname = "Test2-Plugin-NoWarnings";
+     version = "0.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/D/DR/DROLSKY/Test2-Plugin-NoWarnings-0.09.tar.gz";
+       sha256 = "0x7vy9r5gyxqg3qy966frj8ywkckkv7mc83xy4mkdvrf0h0dhgdy";
+     };
+     buildInputs = [ IPCRun3 Test2Suite ];
+     meta = {
+       description = "Fail if tests warn";
+       license = with lib.licenses; [ artistic2 ];
+     };
+    propagatedBuildInputs = [ TestSimple13 ];
+  };
+
+  Test2Suite = buildPerlPackage {
+    pname = "Test2-Suite";
+    version = "0.000138";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test2-Suite-0.000138.tar.gz";
+      sha256 = "0x887d8y657k7072k5f5ly36f067ldafm27xbd9lh5nirvr2vxqc";
+    };
+    propagatedBuildInputs = [ ModulePluggable ScopeGuard SubInfo TermTable TestSimple13 ];
+    meta = {
+      description = "Distribution with a rich set of tools built upon the Test2 framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestAbortable = buildPerlPackage {
+     pname = "Test-Abortable";
+     version = "0.002";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/R/RJ/RJBS/Test-Abortable-0.002.tar.gz";
+       sha256 = "0v97y31j56f4mxw0vxyjbdprq4951h4wcdh4acnfm63np7wvg44p";
+     };
+     propagatedBuildInputs = [ SubExporter ];
+     buildInputs = [ TestNeeds ];
+     meta = {
+       description = "subtests that you can die your way out of ... but survive";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/rjbs/Test-Abortable";
+     };
+  };
+
+  TestAssert = buildPerlModule {
+    pname = "Test-Assert";
+    version = "0.0504";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Test-Assert-0.0504.tar.gz";
+      sha256 = "194bzflmzc0cw5727kznbj1zwzj7gnj7nx1643zk2hshdjlnv8yg";
+    };
+    buildInputs = [ ClassInspector TestUnitLite ];
+    propagatedBuildInputs = [ ExceptionBase constantboolean ];
+  };
+
+  TestAssertions = buildPerlPackage {
+    pname = "Test-Assertions";
+    version = "1.054";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BB/BBC/Test-Assertions-1.054.tar.gz";
+      sha256 = "10026w4r3yv6k3vc6cby7d61mxddlqh0ls6z39c82f17awfy9p7w";
+    };
+    propagatedBuildInputs = [ LogTrace ];
+  };
+
+  TestAggregate = buildPerlModule {
+    pname = "Test-Aggregate";
+    version = "0.375";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RW/RWSTAUNER/Test-Aggregate-0.375.tar.gz";
+      sha256 = "c6cc0abfd0d4fce85371acca93ec245381841d32b4caa2d6475e4bc8130427d1";
+    };
+    buildInputs = [ TestMost TestNoWarnings TestTrap ];
+    meta = {
+      description = "Aggregate C<*.t> tests to make them run faster";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = true; # This module only works with Test::More version < 1.3, but you have 1.302133
+    };
+  };
+
+
+  TestBase = buildPerlPackage {
+    pname = "Test-Base";
+    version = "0.89";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/Test-Base-0.89.tar.gz";
+      sha256 = "056hibgg3i2b89mwr76vyxi6ayb3hqjqcwicvn3s5lximsma3517";
+    };
+    propagatedBuildInputs = [ Spiffy ];
+    buildInputs = [ AlgorithmDiff TextDiff ];
+  };
+
+  TestBits = buildPerlPackage {
+    pname = "Test-Bits";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Test-Bits-0.02.tar.gz";
+      sha256 = "1hqbvqlkj3k9ys4zq3f1fl1y6crni8r0ynan673f49rs91b6z0m9";
+    };
+    propagatedBuildInputs = [ ListAllUtils ];
+    buildInputs = [ TestFatal ];
+    meta = {
+      description = "Provides a bits_is() subroutine for testing binary data";
+      license = with lib.licenses; [ artistic2 ];
+    };
+  };
+
+  TestCheckDeps = buildPerlPackage {
+    pname = "Test-CheckDeps";
+    version = "0.010";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/Test-CheckDeps-0.010.tar.gz";
+      sha256 = "1vjinlixxdx6gfcw8y1dw2rla8bfhi8nmgcqr3nffc7kqskcrz36";
+    };
+    propagatedBuildInputs = [ CPANMetaCheck ];
+    meta = {
+      description = "Check for presence of dependencies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestClass = buildPerlPackage {
+    pname = "Test-Class";
+    version = "0.50";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Class-0.50.tar.gz";
+      sha256 = "099154ed8caf3ff97c71237fab952264ac1c03d9270737a56071cabe65991350";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ MROCompat ModuleRuntime TryTiny ];
+    meta = {
+      description = "Easily create test classes in an xUnit/JUnit style";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestClassMost = buildPerlModule {
+     pname = "Test-Class-Most";
+     version = "0.08";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/O/OV/OVID/Test-Class-Most-0.08.tar.gz";
+       sha256 = "1zvx9hil0mg0pnb8xfa4m0xgjpvh8s5gnbyprq3xwpdsdgcdwk33";
+     };
+     buildInputs = [ TestClass TestDeep TestDifferences TestException TestMost TestWarn ];
+     meta = {
+       description = "Test Classes the easy way";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestCleanNamespaces = buildPerlPackage {
+    pname = "Test-CleanNamespaces";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-CleanNamespaces-0.24.tar.gz";
+      sha256 = "338d5569e8e89a654935f843ec0bc84aaa486fe8dd1898fb9cab3eccecd5327a";
+    };
+    buildInputs = [ Filepushd Moo Mouse RoleTiny SubExporter TestDeep TestNeeds TestWarnings namespaceclean ];
+    propagatedBuildInputs = [ PackageStash SubIdentify ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/Test-CleanNamespaces";
+      description = "Check for uncleaned imports";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestCmd = buildPerlPackage {
+     pname = "Test-Cmd";
+     version = "1.09";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/N/NE/NEILB/Test-Cmd-1.09.tar.gz";
+       sha256 = "114nfafwfxxn7kig265b7lg0znb5ybvc282sjjwf14g7vpn20cyg";
+     };
+       doCheck = false; /* test fails */
+     meta = {
+       description = "Perl module for portable testing of commands and scripts";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/neilb/Test-Cmd";
+     };
+  };
+
+  TestCommand = buildPerlModule {
+    pname = "Test-Command";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DANBOO/Test-Command-0.11.tar.gz";
+      sha256 = "0cwm3c4d49mdrbm6vgh78b3x8mk730l0zg8i7xb9z8bkx9pzr8r8";
+    };
+    meta = {
+      homepage = "https://github.com/danboo/perl-test-command";
+      description = "Test routines for external commands ";
+      license = with lib.licenses; [ artistic1 gpl1 ];
+    };
+  };
+
+  TestCompile = buildPerlModule {
+    pname = "Test-Compile";
+    version = "2.4.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EG/EGILES/Test-Compile-v2.4.1.tar.gz";
+      sha256 = "56a7a3459db5de0f92419029cf1b4d51c44dd02d4690cff3c4eedf666f6d8d46";
+    };
+    propagatedBuildInputs = [ UNIVERSALrequire ];
+    meta = {
+      description = "Check whether Perl files compile correctly";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestCPANMeta = buildPerlPackage {
+    pname = "Test-CPAN-Meta";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BA/BARBIE/Test-CPAN-Meta-0.25.tar.gz";
+      sha256 = "f55b4f9cf6bc396d0fe8027267685cb2ac4affce897d0967a317fac6db5a8db5";
+    };
+    meta = {
+      description = "Validate your CPAN META.yml files";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  TestCPANMetaJSON = buildPerlPackage {
+     pname = "Test-CPAN-Meta-JSON";
+     version = "0.16";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/B/BA/BARBIE/Test-CPAN-Meta-JSON-0.16.tar.gz";
+       sha256 = "1jg9ka50ixwq083wd4k12rhdjq87w0ihb34gd8jjn7gvvyd51b37";
+     };
+     propagatedBuildInputs = [ JSON ];
+     meta = {
+       description = "Validate your CPAN META.json files";
+       license = with lib.licenses; [ artistic2 ];
+     };
+  };
+
+  TestDataSplit = buildPerlModule {
+    pname = "Test-Data-Split";
+    version = "0.2.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Data-Split-0.2.2.tar.gz";
+      sha256 = "08l0h9xkikj6ggm24dark2hp9wffypanjdbha3gdfc5dmn83h275";
+    };
+    buildInputs = [ TestDifferences ];
+    propagatedBuildInputs = [ IOAll ListMoreUtils MooX MooXlate ];
+    meta = {
+      description = "Split data-driven tests into several test scripts";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestDeep = buildPerlPackage {
+    pname = "Test-Deep";
+    version = "1.130";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Test-Deep-1.130.tar.gz";
+      sha256 = "0mkw18q5agr30djxr1y68rcfw8aq20ws872hmv88f9gnynag8r20";
+    };
+    meta = {
+    };
+  };
+
+  TestDeepJSON = buildPerlModule {
+    pname = "Test-Deep-JSON";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MO/MOTEMEN/Test-Deep-JSON-0.05.tar.gz";
+      sha256 = "aec8571b9e31b7301e26132c132c6800952dc089c645d76954a3ad1a6b350858";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ ExporterLite JSONMaybeXS TestDeep ];
+    meta = {
+      homepage = "https://github.com/motemen/perl5-Test-Deep-JSON";
+      description = "Compare JSON with Test::Deep";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestDeepType = buildPerlPackage {
+    pname = "Test-Deep-Type";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Deep-Type-0.008.tar.gz";
+      sha256 = "6e7bea1a2f1e75319a22d1c51996ebac50ca5e3663d1bc223130887e62e959f1";
+    };
+    buildInputs = [ TestFatal TestNeeds ];
+    propagatedBuildInputs = [ TestDeep TryTiny ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/Test-Deep-Type";
+      description = "A Test::Deep plugin for validating type constraints";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestDir = buildPerlPackage {
+    pname = "Test-Dir";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MT/MTHURN/Test-Dir-1.16.tar.gz";
+      sha256 = "7332b323913eb6a2684d094755196304b2f8606f70eaab913654ca91f273eac2";
+    };
+    meta = {
+      description = "Test directory attributes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestDifferences = buildPerlPackage {
+    pname = "Test-Differences";
+    version = "0.67";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DC/DCANTRELL/Test-Differences-0.67.tar.gz";
+      sha256 = "c88dbbb48b934b069284874f33abbaaa438aa31204aa3fa73bfc2f4aeac878da";
+    };
+    propagatedBuildInputs = [ CaptureTiny TextDiff ];
+    meta = {
+      description = "Test strings and data structures and show differences if not ok";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestDistManifest = buildPerlModule {
+    pname = "Test-DistManifest";
+    version = "1.014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-DistManifest-1.014.tar.gz";
+      sha256 = "3d26c20df42628981cbfcfa5b1ca028c6ceadb344c1dcf97a25ad6a88b73d7c5";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ ModuleManifest ];
+    meta = {
+      description = "Author test that validates a package MANIFEST";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestEOL = buildPerlPackage {
+    pname = "Test-EOL";
+    version = "2.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-EOL-2.02.tar.gz";
+      sha256 = "1i5g40bx72fh0nszxh75v042bp66f4jv3xva4bi7z017zgbrjc98";
+    };
+    meta = {
+      description = "Check the correct line endings in your project";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestException = buildPerlPackage {
+    pname = "Test-Exception";
+    version = "0.43";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test-Exception-0.43.tar.gz";
+      sha256 = "0cxm7s4bg0xpxa6l6996a6iq3brr4j7p4hssnkc6dxv4fzq16sqm";
+    };
+    propagatedBuildInputs = [ SubUplevel ];
+  };
+
+  TestExpect = buildPerlPackage {
+    pname = "Test-Expect";
+    version = "0.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Test-Expect-0.34.tar.gz";
+      sha256 = "2628fcecdda5f649bd25323f646b96a1a07e4557cadcb327c9bad4dc41bbb999";
+    };
+    propagatedBuildInputs = [ ClassAccessorChained ExpectSimple ];
+    meta = {
+      description = "Automated driving and testing of terminal-based programs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestFailWarnings = buildPerlPackage {
+    pname = "Test-FailWarnings";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-FailWarnings-0.008.tar.gz";
+      sha256 = "0vx9chcp5x8m0chq574p9fnfckh5gl94j7904rh9v17n568fyd6s";
+    };
+    buildInputs = [ CaptureTiny ];
+    meta = {
+      description = "Add test failures if warnings are caught";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  TestFakeHTTPD = buildPerlModule {
+    pname = "Test-Fake-HTTPD";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MASAKI/Test-Fake-HTTPD-0.09.tar.gz";
+      sha256 = "07iddzxkgxk0ym2gz3scmrw9gmnk755qwksmpvlj42d9cyq9rxql";
+    };
+    propagatedBuildInputs = [ HTTPDaemon Plack ];
+    buildInputs = [ LWP ModuleBuildTiny TestException TestSharedFork TestTCP TestUseAllModules ];
+    meta = {
+      description = "a fake HTTP server";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/masaki/Test-Fake-HTTPD";
+    };
+  };
+
+  TestFatal = buildPerlPackage {
+    pname = "Test-Fatal";
+    version = "0.016";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Test-Fatal-0.016.tar.gz";
+      sha256 = "7283d430f2ba2030b8cd979ae3039d3f1b2ec3dde1a11ca6ae09f992a66f788f";
+    };
+    propagatedBuildInputs = [ TryTiny ];
+    meta = {
+      homepage = "https://github.com/rjbs/Test-Fatal";
+      description = "Incredibly simple helpers for testing code with exceptions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestFile = buildPerlPackage {
+    pname = "Test-File";
+    version = "1.443";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Test-File-1.443.tar.gz";
+      sha256 = "61b4a6ab8f617c8c7b5975164cf619468dc304b6baaaea3527829286fa58bcd5";
+    };
+    buildInputs = [ Testutf8 ];
+    meta = {
+      description = "Check file attributes";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestFileContents = buildPerlModule {
+    pname = "Test-File-Contents";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/Test-File-Contents-0.23.tar.gz";
+      sha256 = "cd6fadfb910b34b4b53991ff231dad99929ca8850abec3ad0e2810c4bd7b1f3d";
+    };
+    propagatedBuildInputs = [ TextDiff ];
+    meta = {
+      description = "Test routines for examining the contents of files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestFileShareDir = buildPerlPackage {
+    pname = "Test-File-ShareDir";
+    version = "1.001002";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KE/KENTNL/Test-File-ShareDir-1.001002.tar.gz";
+      sha256 = "b33647cbb4b2f2fcfbde4f8bb4383d0ac95c2f89c4c5770eb691f1643a337aad";
+    };
+    buildInputs = [ TestFatal ];
+    propagatedBuildInputs = [ ClassTiny FileCopyRecursive FileShareDir PathTiny ScopeGuard ];
+    meta = {
+      homepage = "https://github.com/kentfredric/Test-File-ShareDir";
+      description = "Create a Fake ShareDir for your modules for testing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestFilename = buildPerlPackage {
+    pname = "Test-Filename";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-Filename-0.03.tar.gz";
+      sha256 = "1gpw4mjw68gnby8s4cifvbz6g2923xsc189jkw9d27i8qv20qiba";
+    };
+    propagatedBuildInputs = [ PathTiny ];
+    meta = {
+      description = "Portable filename comparison";
+      license = with lib.licenses; [ asl20 ];
+    };
+  };
+
+  TestFork = buildPerlModule {
+    pname = "Test-Fork";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/Test-Fork-0.02.tar.gz";
+      sha256 = "0gnh8m81fdrwmzy1fix12grfq7sf7nn0gbf24zlap1gq4kxzpzpw";
+    };
+    meta = {
+      description = "test code which forks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestHarnessStraps = buildPerlModule {
+    pname = "Test-Harness-Straps";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/Test-Harness-Straps-0.30.tar.gz";
+      sha256 = "8b00efaa35723c1a35c8c8f5fa46a99e4bc528dfa520352b54ac418ef6d1cfa8";
+    };
+    meta = {
+      description = "Detailed analysis of test results";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestHexDifferences = buildPerlPackage {
+     pname = "Test-HexDifferences";
+     version = "1.001";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Test-HexDifferences-1.001.tar.gz";
+       sha256 = "18lh6shpfx567gjikrid4hixydgv1hi3mycl20qzq2j2vpn4afd6";
+     };
+     propagatedBuildInputs = [ SubExporter TextDiff ];
+     buildInputs = [ TestDifferences TestNoWarnings ];
+     meta = {
+     };
+  };
+
+  TestHexString = buildPerlModule {
+     pname = "Test-HexString";
+     version = "0.03";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/P/PE/PEVANS/Test-HexString-0.03.tar.gz";
+       sha256 = "0h1zl2l1ljlcxsn0xvin9dwiymnhyhnfnxgzg3f9899g37f4qk3x";
+     };
+     meta = {
+       description = "test binary strings with hex dump diagnostics";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestIdentity = buildPerlModule {
+    pname = "Test-Identity";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Test-Identity-0.01.tar.gz";
+      sha256 = "08szivpqfwxnf6cfh0f0rfs4f7xbaxis3bra31l2c5gdk800a0ig";
+    };
+    meta = {
+      description = "assert the referential identity of a reference";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestHTTPServerSimple = buildPerlPackage {
+    pname = "Test-HTTP-Server-Simple";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALEXMV/Test-HTTP-Server-Simple-0.11.tar.gz";
+      sha256 = "85c97ebd4deb805291b17277032da48807228f24f89b1ce2fb3c09f7a896bb78";
+    };
+    propagatedBuildInputs = [ HTTPServerSimple ];
+    meta = {
+      description = "Test::More functions for HTTP::Server::Simple";
+    };
+  };
+
+  TestJSON = buildPerlModule {
+    pname = "Test-JSON";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OV/OVID/Test-JSON-0.11.tar.gz";
+      sha256 = "1cyp46w3q7dg89qkw31ik2h2a6mdx6pzdz2lmp8m0a61zjr8mh07";
+    };
+    propagatedBuildInputs = [ JSONAny ];
+    buildInputs = [ TestDifferences ];
+  };
+
+  TestKwalitee = buildPerlPackage {
+     pname = "Test-Kwalitee";
+     version = "1.28";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Kwalitee-1.28.tar.gz";
+       sha256 = "18s3c8qfr3kmmyxmsn5la2zgbdsgpnkmscnl68i7fnavfpfnqlxl";
+     };
+     propagatedBuildInputs = [ ModuleCPANTSAnalyse ];
+     buildInputs = [ CPANMetaCheck TestDeep TestWarnings ];
+     meta = {
+       description = "Test the Kwalitee of a distribution before you release it";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/karenetheridge/Test-Kwalitee";
+     };
+  };
+
+  TestLWPUserAgent = buildPerlPackage {
+    pname = "Test-LWP-UserAgent";
+    version = "0.034";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-LWP-UserAgent-0.034.tar.gz";
+      sha256 = "1ybhl9zpxkz77d25h96kbgh16zy9f27n95p6j9jg52kvdg0r2lbp";
+    };
+    propagatedBuildInputs = [ LWP SafeIsa namespaceclean ];
+    buildInputs = [ PathTiny Plack TestDeep TestFatal TestNeeds TestRequiresInternet TestWarnings ];
+    meta = {
+      description = "A LWP::UserAgent suitable for simulating and testing network calls";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/karenetheridge/Test-LWP-UserAgent";
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.TestLWPUserAgent.x86_64-darwin
+    };
+  };
+
+  TestLeakTrace = buildPerlPackage {
+    pname = "Test-LeakTrace";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEEJO/Test-LeakTrace-0.16.tar.gz";
+      sha256 = "00z4hcjra5nk700f3fgpy8fs036d7ry7glpn8g3wh7jzj7nrw22z";
+    };
+    meta = {
+      description = "Traces memory leaks";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestLectroTest = buildPerlPackage {
+    pname = "Test-LectroTest";
+    version = "0.5001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TM/TMOERTEL/Test-LectroTest-0.5001.tar.gz";
+      sha256 = "0dfpkvn06499gczch4gfmdb05fdj82vlqy7cl6hz36l9jl6lyaxc";
+    };
+    meta = {
+      description = "Easy, automatic, specification-based tests";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestLoadAllModules = buildPerlPackage {
+    pname = "Test-LoadAllModules";
+    version = "0.022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KI/KITANO/Test-LoadAllModules-0.022.tar.gz";
+      sha256 = "1zjwbqk1ns9m8srrhyj3i5zih976i4d2ibflh5s8lr10a1aiz1hv";
+    };
+    propagatedBuildInputs = [ ListMoreUtils ModulePluggable ];
+    meta = {
+      description = "do use_ok for modules in search path";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestLongString = buildPerlPackage {
+    pname = "Test-LongString";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RG/RGARCIA/Test-LongString-0.17.tar.gz";
+      sha256 = "0kwp7rfr1i2amz4ckigkv13ah7jr30q6l5k4wk0vxl84myg39i5b";
+    };
+  };
+
+  TestMemoryCycle = buildPerlPackage {
+    pname = "Test-Memory-Cycle";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Test-Memory-Cycle-1.06.tar.gz";
+      sha256 = "9d53ddfdc964cd8454cb0da4c695b6a3ae47b45839291c34cb9d8d1cfaab3202";
+    };
+    propagatedBuildInputs = [ DevelCycle PadWalker ];
+    meta = {
+      description = "Verifies code hasn't left circular references";
+    };
+  };
+
+  TestMemoryGrowth = buildPerlModule {
+    pname = "Test-MemoryGrowth";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Test-MemoryGrowth-0.04.tar.gz";
+      sha256 = "1l1f7mwjyfgfbhad13p4wgavnb3mdjs6v3xr2m0rxm5ba8kqard0";
+    };
+    meta = {
+      description = "assert that code does not cause growth in memory usage";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.TestMemoryGrowth.x86_64-darwin
+    };
+  };
+
+  TestMetricsAny = buildPerlModule {
+    pname = "Test-Metrics-Any";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Test-Metrics-Any-0.01.tar.gz";
+      sha256 = "0s744lv997g1wr4i4vg1d7zpzjfw334hdy45215jf6xj9s6wh1i5";
+    };
+    propagatedBuildInputs = [ MetricsAny ];
+    meta = {
+      description = "assert that code produces metrics via L<Metrics::Any>";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestMockClass = buildPerlModule {
+    pname = "Test-Mock-Class";
+    version = "0.0303";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Test-Mock-Class-0.0303.tar.gz";
+      sha256 = "00pkfqcz7b34q1mvx15k46sbxs22zcrvrbv15rnbn2na57z54bnd";
+    };
+    buildInputs = [ ClassInspector TestAssert TestUnitLite ];
+    propagatedBuildInputs = [ FatalException Moose namespaceclean ];
+    meta = with lib; {
+      description = "Simulating other classes";
+      license = licenses.lgpl2Plus;
+    };
+  };
+
+  TestMockGuard = buildPerlModule {
+    pname = "Test-Mock-Guard";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/X/XA/XAICRON/Test-Mock-Guard-0.10.tar.gz";
+      sha256 = "7f228a63f8d6ceb92aa784080a13e85073121b2835eca06d794f9709950dbd3d";
+    };
+    propagatedBuildInputs = [ ClassLoad ];
+    meta = {
+      homepage = "https://github.com/zigorou/p5-test-mock-guard";
+      description = "Simple mock test library using RAII";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestMockModule = buildPerlModule {
+    pname = "Test-MockModule";
+    version = "0.175.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GF/GFRANKS/Test-MockModule-v0.175.0.tar.gz";
+      sha256 = "1zpf8p04and7jj33pc919g2pfg0scaqwqq1cnk8wx0nx2gbq9ch7";
+    };
+    propagatedBuildInputs = [ SUPER ];
+    buildInputs = [ TestWarnings ];
+  };
+
+  SUPER = buildPerlModule {
+    pname = "SUPER";
+    version = "1.20190531";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHROMATIC/SUPER-1.20190531.tar.gz";
+      sha256 = "685d1ee76e7f0e9006942923bf7df8b11c107132992917593dcf7397d417d39a";
+    };
+    propagatedBuildInputs = [ SubIdentify ];
+    meta = {
+      description = "Control superclass method dispatch";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+
+  TestMockObject = buildPerlPackage {
+    pname = "Test-MockObject";
+    version = "1.20200122";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHROMATIC/Test-MockObject-1.20200122.tar.gz";
+      sha256 = "2b7f80da87f5a6fe0360d9ee521051053017442c3a26e85db68dfac9f8307623";
+    };
+    buildInputs = [ TestException TestWarn ];
+    propagatedBuildInputs = [ UNIVERSALcan UNIVERSALisa ];
+    meta = {
+      description = "Perl extension for emulating troublesome interfaces";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestMockTime = buildPerlPackage {
+    pname = "Test-MockTime";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DD/DDICK/Test-MockTime-0.17.tar.gz";
+      sha256 = "1y820qsq7yf7r6smy5c6f0mpf2cis2q24vwmpim1svv0n8cf2qrk";
+    };
+  };
+
+  TestMockTimeHiRes = buildPerlModule {
+     pname = "Test-MockTime-HiRes";
+     version = "0.08";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/T/TA/TARAO/Test-MockTime-HiRes-0.08.tar.gz";
+       sha256 = "1hfykcjrls6ywgbd49w29c7apj3nq4wlyx7jzpd2glwmz2pgfjaz";
+     };
+     buildInputs = [ AnyEvent ModuleBuildTiny TestClass TestMockTime TestRequires ];
+     meta = {
+       description = "Replaces actual time with simulated high resolution time";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/tarao/perl5-Test-MockTime-HiRes";
+     };
+  };
+
+  TestMojibake = buildPerlPackage {
+    pname = "Test-Mojibake";
+    version = "1.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYP/Test-Mojibake-1.3.tar.gz";
+      sha256 = "0cqvbwddgh0pfzmh989gkysi9apqj7dp7jkxfa428db9kgzpbzlg";
+    };
+    meta = {
+      homepage = "https://github.com/creaktive/Test-Mojibake";
+      description = "Check your source for encoding misbehavior";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestMoreUTF8 = buildPerlPackage {
+     pname = "Test-More-UTF8";
+     version = "0.05";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MO/MONS/Test-More-UTF8-0.05.tar.gz";
+       sha256 = "016fs77lmw8xxrcnapvp6wq4hjwgsdfi3l9ylpxgxkcpdarw9wdr";
+     };
+     meta = {
+       description = "Enhancing Test::More for UTF8-based projects";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestMost = buildPerlPackage {
+    pname = "Test-Most";
+    version = "0.37";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OV/OVID/Test-Most-0.37.tar.gz";
+      sha256 = "1isg8z6by113zn08l044w6k04y5m5bnns3rqmks8rwdr3qa70csk";
+    };
+    propagatedBuildInputs = [ ExceptionClass ];
+    meta = {
+      description = "Most commonly needed test functions and features";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestDeep TestDifferences TestException TestWarn ];
+  };
+
+  Testmysqld = buildPerlModule {
+    pname = "Test-mysqld";
+    version = "1.0013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SO/SONGMU/Test-mysqld-1.0013.tar.gz";
+      sha256 = "1vrybrh3is3xfwqdhxr1mvmmdyjhz9p0f6n8hasn7japj2h43bap";
+    };
+    buildInputs = [ pkgs.which ModuleBuildTiny TestSharedFork ];
+    propagatedBuildInputs = [ ClassAccessorLite DBDmysql FileCopyRecursive ];
+    meta = {
+      homepage = "https://github.com/kazuho/p5-test-mysqld";
+      description = "Mysqld runner for tests";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  TestNeeds = buildPerlPackage {
+    pname = "Test-Needs";
+    version = "0.002006";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Test-Needs-0.002006.tar.gz";
+      sha256 = "77f9fff0c96c5e09f34d0416b3533c3319f7cd0bb1f7fe8f8072ad59f433f0e5";
+    };
+    meta = {
+      description = "Skip tests when modules not available";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestNoTabs = buildPerlPackage {
+    pname = "Test-NoTabs";
+    version = "2.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-NoTabs-2.02.tar.gz";
+      sha256 = "0c306p9qdpa2ycii3c50hml23mwy6bjxpry126g1dw11hyiwcxgv";
+    };
+    meta = {
+      description = "Check the presence of tabs in your project";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestNoWarnings = buildPerlPackage {
+    pname = "Test-NoWarnings";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz";
+      sha256 = "0v385ch0hzz9naqwdw2az3zdqi15gka76pmiwlgsy6diiijmg2k3";
+    };
+    meta = {
+      description = "Make sure you didn't emit any warnings while testing";
+      license = lib.licenses.lgpl21;
+    };
+  };
+
+  TestObject = buildPerlPackage {
+    pname = "Test-Object";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Object-0.08.tar.gz";
+      sha256 = "65278964147837313f4108e55b59676e8a364d6edf01b3dc198aee894ab1d0bb";
+    };
+  };
+
+  TestOutput = buildPerlPackage {
+    pname = "Test-Output";
+    version = "1.031";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Test-Output-1.031.tar.gz";
+      sha256 = "193y1xjvgc1p9pdgdwps2127knvpz9wc1xh6gmr74y3ihmqz7f7q";
+    };
+    propagatedBuildInputs = [ CaptureTiny ];
+  };
+
+  TestPAUSEPermissions = buildPerlPackage {
+     pname = "Test-PAUSE-Permissions";
+     version = "0.07";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/SK/SKAJI/Test-PAUSE-Permissions-0.07.tar.gz";
+       sha256 = "0gh7f67g1y30yggmwj1pq6xgrx3cfjibj2378nl3gilvyaxw2w2m";
+     };
+     propagatedBuildInputs = [ ConfigIdentity PAUSEPermissions ParseLocalDistribution ];
+     buildInputs = [ ExtUtilsMakeMakerCPANfile TestUseAllModules ];
+     meta = {
+       description = "tests module permissions in your distribution";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestPerlCritic = buildPerlModule {
+    pname = "Test-Perl-Critic";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Test-Perl-Critic-1.04.tar.gz";
+      sha256 = "28f806b5412c7908b56cf1673084b8b44ce1cb54c9417d784d91428e1a04096e";
+    };
+    propagatedBuildInputs = [ MCE PerlCritic ];
+  };
+
+  TestPerlTidy = buildPerlModule rec {
+    pname = "Test-PerlTidy";
+    version = "20200930";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-PerlTidy-${version}.tar.gz";
+      sha256 = "1djpfi57s1j6mqb0ii2ca1sj3ym7jjab018inp6vdmsyfjcnhvwz";
+    };
+    propagatedBuildInputs = [ PathTiny PerlTidy TextDiff ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestPerlCritic ];
+  };
+
+  TestPod = buildPerlPackage {
+    pname = "Test-Pod";
+    version = "1.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Pod-1.52.tar.gz";
+      sha256 = "1z75x1pxwp8ajwq9iazlg2c3wd7rdlim08yclpdg32qnc36dpa30";
+    };
+    meta = {
+      description = "Check for POD errors in files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestPodCoverage = buildPerlPackage {
+    pname = "Test-Pod-Coverage";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz";
+      sha256 = "1m203mhgfilz7iqc8mxaw4lw02fz391mni3n25sfx7nryylwrja8";
+    };
+    propagatedBuildInputs = [ PodCoverage ];
+  };
+
+  TestPodLinkCheck = buildPerlModule {
+    pname = "Test-Pod-LinkCheck";
+    version = "0.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AP/APOCAL/Test-Pod-LinkCheck-0.008.tar.gz";
+      sha256 = "2bfe771173c38b69eeb089504e3f76511b8e45e6a9e6dac3e616e400ea67bcf0";
+    };
+    buildInputs = [ ModuleBuildTiny TestPod ];
+    propagatedBuildInputs = [ CaptureTiny Moose podlinkcheck ];
+    meta = {
+      description = "Tests POD for invalid links";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestPodNo404s = buildPerlModule {
+    pname = "Test-Pod-No404s";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AP/APOCAL/Test-Pod-No404s-0.02.tar.gz";
+      sha256 = "0ycfghsyl9f31kxdppjwx2g5iajrqh3fyywz0x7d8ayndw2hdihi";
+    };
+    propagatedBuildInputs = [ LWP URIFind ];
+    meta = {
+      description = "Checks POD for any http 404 links";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ ModuleBuildTiny TestPod ];
+  };
+
+  TestPortabilityFiles = buildPerlPackage {
+    pname = "Test-Portability-Files";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AB/ABRAXXA/Test-Portability-Files-0.10.tar.gz";
+      sha256 = "08e4b432492dc1b44b55d5db57952eb76379c7f434ee8f16aca64d491f401a16";
+    };
+    meta = {
+      description = "Check file names portability";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestRefcount = buildPerlModule {
+    pname = "Test-Refcount";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/Test-Refcount-0.10.tar.gz";
+      sha256 = "1chf6zizi7x128l3qm1bdqzwjjqm2j4gzajgghaksisn945c4mq4";
+    };
+    meta = {
+      description = "assert reference counts on objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestRequires = buildPerlPackage {
+    pname = "Test-Requires";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Test-Requires-0.11.tar.gz";
+      sha256 = "03q49vi09b4n31kpnmq4v2dga5ja438a8f1wgkgwvvlpjmadx22b";
+    };
+    meta = {
+      description = "Checks to see if the module can be loaded";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestRequiresGit = buildPerlPackage {
+    pname = "Test-Requires-Git";
+    version = "1.008";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOOK/Test-Requires-Git-1.008.tar.gz";
+      sha256 = "70916210970d84d7491451159ab8b67e15251c8c0dae7c3df6c8d88542ea42a6";
+    };
+    propagatedBuildInputs = [ GitVersionCompare ];
+    meta = {
+      description = "Check your test requirements against the available version of Git";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestRequiresInternet = buildPerlPackage {
+     pname = "Test-RequiresInternet";
+     version = "0.05";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MA/MALLEN/Test-RequiresInternet-0.05.tar.gz";
+       sha256 = "0gl33vpj9bb78pzyijp884b66sbw6jkh1ci0xki8rmf03hmb79xv";
+     };
+     meta = {
+       description = "Easily test network connectivity";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestRoo = buildPerlPackage {
+    pname = "Test-Roo";
+    version = "1.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-Roo-1.004.tar.gz";
+      sha256 = "1mnym49j1lj7gzylma5b6nr4vp75rmgz2v71904v01xmxhy9l4i1";
+    };
+
+    propagatedBuildInputs = [ Moo MooXTypesMooseLike SubInstall strictures ];
+    buildInputs = [ CaptureTiny ];
+  };
+
+  TestRoutine = buildPerlPackage {
+    pname = "Test-Routine";
+    version = "0.027";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Test-Routine-0.027.tar.gz";
+      sha256 = "0n6k310v2py787lkvhzrn8vndws9icdf8mighgl472k0x890xm5s";
+    };
+    buildInputs = [ TestAbortable TestFatal ];
+    propagatedBuildInputs = [ Moose namespaceautoclean ];
+    meta = {
+      homepage = "https://github.com/rjbs/Test-Routine";
+      description = "Composable units of assertion";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestRun = buildPerlModule {
+    pname = "Test-Run";
+    version = "0.0305";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-0.0305.tar.gz";
+      sha256 = "0j62hzh7k4lvk390pm8581nhjnayxp4pf0g6x1vagqpqc3fp36pq";
+    };
+    buildInputs = [ TestTrap ];
+    propagatedBuildInputs = [ IPCSystemSimple ListMoreUtils MooseXStrictConstructor TextSprintfNamed UNIVERSALrequire ];
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Base class to run standard TAP scripts";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunCmdLine = buildPerlModule {
+    pname = "Test-Run-CmdLine";
+    version = "0.0132";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-CmdLine-0.0132.tar.gz";
+      sha256 = "01x7rzscj3f06kpv0bd9dwx4wg9bmn7b5gyqfvy7wmv3ak6r3hxj";
+    };
+    buildInputs = [ TestRun TestTrap ];
+    propagatedBuildInputs = [ MooseXGetopt UNIVERSALrequire YAMLLibYAML ];
+    doCheck = !stdenv.isDarwin;
+    meta = {
+      homepage = "http://web-cpan.berlios.de/modules/Test-Run/";
+      description = "Analyze tests from the command line using Test::Run";
+      license = lib.licenses.mit;
+    };
+   };
+
+  TestRunPluginAlternateInterpreters = buildPerlModule {
+    pname = "Test-Run-Plugin-AlternateInterpreters";
+    version = "0.0125";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-AlternateInterpreters-0.0125.tar.gz";
+      sha256 = "1fwr687h05fg6xn6vsfx9ll2ha8c7brmqbiz18biz0jx2jdnihsj";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestTrap YAMLLibYAML ];
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Define different interpreters for different test scripts with Test::Run";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunPluginBreakOnFailure = buildPerlModule {
+    pname = "Test-Run-Plugin-BreakOnFailure";
+    version = "0.0.6";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-BreakOnFailure-v0.0.6.tar.gz";
+      sha256 = "1a8k9p89s31wrax0yk8p0zsvj40mjgi0bnjmj0949hghwbihw650";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestTrap YAMLLibYAML ];
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Stop processing the entire test suite";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunPluginColorFileVerdicts = buildPerlModule {
+    pname = "Test-Run-Plugin-ColorFileVerdicts";
+    version = "0.0125";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorFileVerdicts-0.0125.tar.gz";
+      sha256 = "0ihy5rzhc7472kh8931i7fbqf36nixl6yjrf8x5ndzd62hn1l90w";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestTrap ];
+    propagatedBuildInputs = [ Moose ];
+    moreInputs = [ TestTrap ]; # Added because tests were failing without it
+    doCheck=true;
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Make the file verdict ('ok', 'NOT OK')";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunPluginColorSummary = buildPerlModule {
+    pname = "Test-Run-Plugin-ColorSummary";
+    version = "0.0203";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorSummary-0.0203.tar.gz";
+      sha256 = "1zca7w360m0vf3srf8af1s2k9k8hi85w1cavql7m2sr9kcvpknbv";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestTrap ];
+    moreInputs = [ TestTrap ]; # Added because tests were failing without it
+    doCheck=true;
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "A Test::Run plugin that";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunPluginTrimDisplayedFilenames = buildPerlModule {
+    pname = "Test-Run-Plugin-TrimDisplayedFilenames";
+    version = "0.0126";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-TrimDisplayedFilenames-0.0126.tar.gz";
+      sha256 = "0a4hxbsbhsnkx99h3d01fchv7ip0c1np2jmf6xvqm657qv1lk1la";
+    };
+    buildInputs = [ TestRun TestRunCmdLine TestTrap YAMLLibYAML ];
+    propagatedBuildInputs = [ Moose ];
+    meta = {
+      homepage = "https://web-cpan.shlomifish.org/modules/Test-Run/";
+      description = "Trim the first components";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestRunValgrind = buildPerlModule {
+    pname = "Test-RunValgrind";
+    version = "0.2.2";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-RunValgrind-0.2.2.tar.gz";
+      sha256 = "1vm5iw5sy0mhjjypaaviil9qgqixmkaghdbjbcyb4lf2mm6d24v9";
+    };
+    buildInputs = [ TestTrap ];
+    propagatedBuildInputs = [ PathTiny ];
+    meta = {
+      description = "Tests that an external program is valgrind-clean";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestScript = buildPerlPackage {
+    pname = "Test-Script";
+    version = "1.26";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Test-Script-1.26.tar.gz";
+      sha256 = "1dvkb8dvidnycd6ws2h2iy262h37fjakflv6z90xrw72xix26hkd";
+    };
+
+    buildInputs = [ Test2Suite ];
+
+    propagatedBuildInputs = [ CaptureTiny ProbePerl ];
+  };
+
+  TestScriptRun = buildPerlPackage {
+    pname = "Test-Script-Run";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SU/SUNNAVY/Test-Script-Run-0.08.tar.gz";
+      sha256 = "1fef216e70bc425ace3e2c4370dfcdddb5e798b099efba2679244a4d5bc1ab0a";
+    };
+    propagatedBuildInputs = [ IPCRun3 TestException ];
+    meta = {
+      description = "Test scripts with run";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestSharedFork = buildPerlPackage {
+    pname = "Test-SharedFork";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test-SharedFork-0.35.tar.gz";
+      sha256 = "17y52j20k1bs9dgf4n6rhh9dn4cfxxbnfn2cfs7pb00fc5jyhci9";
+    };
+    buildInputs = [ TestRequires ];
+    meta = {
+      homepage = "https://github.com/tokuhirom/Test-SharedFork";
+      description = "Fork test";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestSimple13 = buildPerlPackage {
+    pname = "Test-Simple";
+    version = "1.302183";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EX/EXODIST/Test-Simple-1.302183.tar.gz";
+      sha256 = "1zq6841yrwxmrmhgzmzx0njlymsv9mzl6l5njabfl2j2xjjvs0ws";
+    };
+    meta = {
+      description = "Basic utilities for writing tests";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestSnapshot = buildPerlPackage {
+    pname = "Test-Snapshot";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETJ/Test-Snapshot-0.06.tar.gz";
+      sha256 = "f4dd7a9a55baa2247540ae34210cd05a04f9d1061befec97a1c90eda95bfae45";
+    };
+    buildInputs = [ CaptureTiny ];
+    propagatedBuildInputs = [ TextDiff ];
+    meta = {
+      description = "Test against data stored in automatically-named file";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  TestSpec = buildPerlPackage {
+    pname = "Test-Spec";
+    version = "0.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AK/AKZHAN/Test-Spec-0.54.tar.gz";
+      sha256 = "1lk5l69bm6yl1zxzz5v6mizzqfinpdhasmi4qjxr1vnwcl9cyc8a";
+    };
+    propagatedBuildInputs = [ DevelGlobalPhase PackageStash TieIxHash ];
+    meta = {
+      description = "Write tests in a declarative specification style";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestDeep TestTrap ];
+  };
+
+  TestSubCalls = buildPerlPackage {
+    pname = "Test-SubCalls";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-SubCalls-1.10.tar.gz";
+      sha256 = "cbc1e9b35a05e71febc13e5ef547a31c8249899bb6011dbdc9d9ff366ddab6c2";
+    };
+    propagatedBuildInputs = [ HookLexWrap ];
+  };
+
+  TestSynopsis = buildPerlPackage {
+    pname = "Test-Synopsis";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZO/ZOFFIX/Test-Synopsis-0.16.tar.gz";
+      sha256 = "09891vnkw9i8v074rswaxbrp6x2d8j8r90gqc306497ppiryq4qv";
+    };
+    meta = {
+      description = "Test your SYNOPSIS code";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestTableDriven = buildPerlPackage {
+    pname = "Test-TableDriven";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JR/JROCKWAY/Test-TableDriven-0.02.tar.gz";
+      sha256 = "16l5n6sx3yqdir1rqq21d41znpwzbs8v34gqr93y051arypphn22";
+    };
+    meta = {
+      description = "Write tests, not scripts that run them";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestTempDirTiny = buildPerlPackage {
+    pname = "Test-TempDir-Tiny";
+    version = "0.018";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-TempDir-Tiny-0.018.tar.gz";
+      sha256 = "10ay3zbihyxn4nbb1f0fmr4szag8iy8pd27v8j6idq6cgzys3dyp";
+    };
+    meta = {
+      description = "Temporary directories that stick around when tests fail";
+      license = with lib.licenses; [ asl20 ];
+      homepage = "https://github.com/dagolden/Test-TempDir-Tiny";
+    };
+
+  };
+
+  TestTCP = buildPerlPackage {
+    pname = "Test-TCP";
+    version = "2.22";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Test-TCP-2.22.tar.gz";
+      sha256 = "0mvv9rqwrwlcfh8qrs0s47p85rhlnw15d4gbpyi802bddp0c6lry";
+    };
+    meta = {
+      description = "Testing TCP program";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestSharedFork ];
+  };
+
+  TestUNIXSock = buildPerlModule rec {
+    pname = "Test-UNIXSock";
+    version = "0.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/F/FU/FUJIWARA/${pname}-${version}.tar.gz";
+      sha256 = "0gwgd2w16dsppmf1r6yc17ipvs8b62ybsiz2dyzwy4il236b8c1p";
+    };
+    meta = {
+      description = "Testing UNIX domain socket program";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ TestSharedFork TestTCP ];
+  };
+
+  TestTime = buildPerlPackage {
+    pname = "Test-Time";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SATOH/Test-Time-0.08.tar.gz";
+      sha256 = "b8bc3b074bb2247e8588399c1e55d071f049cf6ce1c8b4192c38cf3c24559548";
+    };
+    meta = {
+      description = "Overrides the time() and sleep() core functions for testing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestToolbox = buildPerlModule {
+     pname = "Test-Toolbox";
+     version = "0.4";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIKO/Test-Toolbox-0.4.tar.gz";
+       sha256 = "1hxx9rhvncvn7wvzhzx4sk00w0xq2scgspfhhyqwjnm1yg3va820";
+     };
+     meta = {
+       description = "Test::Toolbox - tools for testing";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TestTrailingSpace = buildPerlModule {
+    pname = "Test-TrailingSpace";
+    version = "0.0600";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Test-TrailingSpace-0.0600.tar.gz";
+      sha256 = "f09d263adec06700a43a24e29f5484cf6d2939914c607dec51590f4bb8fa5a11";
+    };
+    propagatedBuildInputs = [ FileFindObjectRule ];
+    meta = {
+      description = "Test for trailing space in source files";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TestUnitLite = buildPerlModule {
+    pname = "Test-Unit-Lite";
+    version = "0.1202";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DE/DEXTER/Test-Unit-Lite-0.1202.tar.gz";
+      sha256 = "1a5jym9hjcpdf0rwyn7gwrzsx4xqzwgzx59rgspqlqiif7p2a79m";
+    };
+    meta = {
+      description = "Unit testing without external dependencies";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestWarn = buildPerlPackage {
+    pname = "Test-Warn";
+    version = "0.36";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz";
+      sha256 = "1nkc7jzxff0w4x9axbpsgxrksqdjnf70rb74q39zikkrsd3a7g7c";
+    };
+    propagatedBuildInputs = [ SubUplevel ];
+    meta = {
+      description = "Perl extension to test methods for warnings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestWarnings = buildPerlPackage {
+    pname = "Test-Warnings";
+    version = "0.030";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Test-Warnings-0.030.tar.gz";
+      sha256 = "89a4947ddf1564ae01122275584433d7f6c4370370bcf3768922d796956ae24f";
+    };
+    buildInputs = [ CPANMetaCheck PadWalker ];
+    meta = {
+      homepage = "https://github.com/karenetheridge/Test-Warnings";
+      description = "Test for warnings and the lack of them";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestWithoutModule = buildPerlPackage {
+    pname = "Test-Without-Module";
+    version = "0.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CO/CORION/Test-Without-Module-0.20.tar.gz";
+      sha256 = "8e9aeb7c32a6c6d0b8a93114db2a8c072721273a9d9a2dd4f9ca86cfd28aa524";
+    };
+    meta = {
+      description = "Test fallback behaviour in absence of modules";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestWWWMechanize = buildPerlPackage {
+    pname = "Test-WWW-Mechanize";
+    version = "1.54";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PETDANCE/Test-WWW-Mechanize-1.54.tar.gz";
+      sha256 = "1z4s8fijwx8p74fw29435d2c2l6c1sgzz0n7lrdby5212xdqpa6w";
+    };
+    buildInputs = [ TestLongString ];
+    propagatedBuildInputs = [ CarpAssertMore HTTPServerSimple WWWMechanize ];
+    meta = {
+      homepage = "https://github.com/petdance/test-www-mechanize";
+      description = "Testing-specific WWW::Mechanize subclass";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  TestWWWMechanizeCatalyst = buildPerlPackage {
+    pname = "Test-WWW-Mechanize-Catalyst";
+    version = "0.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTROUT/Test-WWW-Mechanize-Catalyst-0.62.tar.gz";
+      sha256 = "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq";
+    };
+    doCheck = false; # listens on an external port
+    propagatedBuildInputs = [ CatalystRuntime WWWMechanize ];
+    meta = {
+      description = "Test::WWW::Mechanize for Catalyst";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ CatalystPluginSession CatalystPluginSessionStateCookie TestException TestWWWMechanize Testutf8 ];
+  };
+
+  TestWWWMechanizeCGI = buildPerlPackage {
+    pname = "Test-WWW-Mechanize-CGI";
+    version = "0.1";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/Test-WWW-Mechanize-CGI-0.1.tar.gz";
+      sha256 = "0bwwdk0iai5dlvvfpja971qpgvmf6yq67iag4z4szl9v5sra0xm5";
+    };
+    propagatedBuildInputs = [ WWWMechanizeCGI ];
+    buildInputs = [ TestLongString TestWWWMechanize ];
+  };
+
+  TestWWWMechanizePSGI = buildPerlPackage {
+    pname = "Test-WWW-Mechanize-PSGI";
+    version = "0.39";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/Test-WWW-Mechanize-PSGI-0.39.tar.gz";
+      sha256 = "0n4rhyyags3cwqb0gb1pr6gccd2x3l190j8gd96lwlvxnjrklss7";
+    };
+    buildInputs = [ CGI TestLongString TestWWWMechanize ];
+    propagatedBuildInputs = [ Plack ];
+    meta = {
+      description = "Test PSGI programs using WWW::Mechanize";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestXPath = buildPerlModule {
+    pname = "Test-XPath";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/Test-XPath-0.19.tar.gz";
+      sha256 = "1wy0488yg15kahfafnlmlhppxik7d0z00wxwj9fszrsq2h6crz6y";
+    };
+    propagatedBuildInputs = [ XMLLibXML ];
+  };
+
+  TestYAML = buildPerlPackage {
+    pname = "Test-YAML";
+    version = "1.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TINITA/Test-YAML-1.07.tar.gz";
+      sha256 = "0pwrrnwi1qaiy3c5522vy0kzncxc9g02r4b056wqqaa69w1hsc0z";
+    };
+    buildInputs = [ TestBase ];
+  };
+
+  TextAligner = buildPerlModule {
+    pname = "Text-Aligner";
+    version = "0.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Aligner-0.16.tar.gz";
+      sha256 = "09ap457vrlqvw2544j907fbb5crs08hd7sy4syipzxc6wny7v1aw";
+    };
+    meta = {
+      description = "Align text in columns";
+    };
+  };
+
+  TextAspell = buildPerlPackage {
+    pname = "Text-Aspell";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HANK/Text-Aspell-0.09.tar.gz";
+      sha256 = "0r9g31rd55934mp6n45b96g934ck4qns8x9i7qckn9wfy44k5sib";
+    };
+    propagatedBuildInputs = [ pkgs.aspell ];
+    ASPELL_CONF = "dict-dir ${pkgs.aspellDicts.en}/lib/aspell";
+    NIX_CFLAGS_COMPILE = "-I${pkgs.aspell}/include";
+    NIX_CFLAGS_LINK = "-L${pkgs.aspell}/lib -laspell";
+  };
+
+  TextAutoformat = buildPerlPackage {
+    pname = "Text-Autoformat";
+    version = "1.75";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Text-Autoformat-1.75.tar.gz";
+      sha256 = "9dd4f4ce3daec4b4dbf5b59dac4568a8946aed12c28b4e5988c8e8c602c6b771";
+    };
+    propagatedBuildInputs = [ TextReform ];
+    meta = {
+      homepage = "https://github.com/neilbowers/Text-Autoformat";
+      description = "Automatic text wrapping and reformatting";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextBalanced = buildPerlPackage {
+    pname = "Text-Balanced";
+    version = "2.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/Text-Balanced-2.04.tar.gz";
+      sha256 = "1qp7whrampvdzb4nbdvbzp02vlmyk5ssha2lg1iaf2y8hn5l177l";
+    };
+    meta = {
+      description = "Extract delimited text sequences from strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextBibTeX = buildPerlModule {
+    pname = "Text-BibTeX";
+    version = "0.88";
+    buildInputs = [ CaptureTiny ConfigAutoConf ExtUtilsLibBuilder ];
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AM/AMBS/Text-BibTeX-0.88.tar.gz";
+      sha256 = "0b7lmjvfmypps1nw6nsdikgaakm0n0g4186glaqazg5xd1p5h55h";
+    };
+    # libbtparse.so: cannot open shared object file (aarch64 only)
+    patches = [ ../development/perl-modules/TextBibTeX-use-lib-on-aarch64.patch ];
+    perlPreHook = "export LD=$CC";
+    perlPostHook = lib.optionalString stdenv.isDarwin ''
+      oldPath="$(pwd)/btparse/src/libbtparse.dylib"
+      newPath="$out/lib/libbtparse.dylib"
+
+      install_name_tool -id "$newPath" "$newPath"
+      install_name_tool -change "$oldPath" "$newPath" "$out/bin/biblex"
+      install_name_tool -change "$oldPath" "$newPath" "$out/bin/bibparse"
+      install_name_tool -change "$oldPath" "$newPath" "$out/bin/dumpnames"
+      install_name_tool -change "$oldPath" "$newPath" "$out/${perl.libPrefix}/${perl.version}/darwin"*"-2level/auto/Text/BibTeX/BibTeX.bundle"
+    '';
+    meta = {
+      description = "Interface to read and parse BibTeX files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextBrew = buildPerlPackage {
+    pname = "Text-Brew";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KC/KCIVEY/Text-Brew-0.02.tar.gz";
+      sha256 = "0k7nxglbx5pxl693zrj1fsi094sf1a3vqsrn73inzz7r3j28a6xa";
+    };
+  };
+
+  TextCharWidth = buildPerlPackage {
+    pname = "Text-CharWidth";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KU/KUBOTA/Text-CharWidth-0.04.tar.gz";
+      sha256 = "abded5f4fdd9338e89fd2f1d8271c44989dae5bf50aece41b6179d8e230704f8";
+    };
+  };
+
+  TextCSV = buildPerlPackage {
+    pname = "Text-CSV";
+    version = "2.00";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Text-CSV-2.00.tar.gz";
+      sha256 = "8ccbd9195805222d995844114d0e595bb24ce188f85284dbf256080311cbb2c2";
+    };
+    meta = {
+      description = "Comma-separated values manipulator (using XS or PurePerl)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextCSVEncoded = buildPerlPackage {
+    pname = "Text-CSV-Encoded";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Z/ZA/ZARQUON/Text-CSV-Encoded-0.25.tar.gz";
+      sha256 = "1l5rwlmnpnhjszb200a94lwvkwslsvyxm24ycf37gm8dla1mk2i4";
+    };
+    propagatedBuildInputs = [ TextCSV ];
+    meta = {
+      description = "Encoding aware Text::CSV";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextCSV_XS = buildPerlPackage {
+    pname = "Text-CSV_XS";
+    version = "1.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HM/HMBRAND/Text-CSV_XS-1.44.tgz";
+      sha256 = "c4812ddca8e2654736c44bc2ce60b27a428a1bc4d5364b0ed1fad3609c8f9bc4";
+    };
+    meta = {
+      description = "Comma-Separated Values manipulation routines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextDiff = buildPerlPackage {
+    pname = "Text-Diff";
+    version = "1.45";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Text-Diff-1.45.tar.gz";
+      sha256 = "013g13prdghxvrp5754gyc7rmv1syyxrhs33yc5f0lrz3dxs1fp8";
+    };
+    propagatedBuildInputs = [ AlgorithmDiff ];
+    meta = {
+      description = "Perform diffs on files and record sets";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextFormat = buildPerlModule {
+    pname = "Text-Format";
+    version = "0.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Format-0.62.tar.gz";
+      sha256 = "0104z7jjv46kqh77rnx8kvmsbr5dy0s56xm01dckq4ly65br0hkx";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/Text-Format";
+      description = "Format text";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ bcdarwin ];
+    };
+  };
+
+  TextDiffFormattedHTML = buildPerlPackage {
+    pname = "Text-Diff-FormattedHTML";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AM/AMBS/Text-Diff-FormattedHTML-0.08.tar.gz";
+      sha256 = "39ab775a5c056745f2abd8cc7c1cbc5496dfef7e52a9f4bd8ada6aa6c9c7b70d";
+    };
+    propagatedBuildInputs = [ FileSlurp StringDiff ];
+    meta = {
+      description = "Generate a colorful HTML diff of strings/files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  TextFuzzy = buildPerlPackage {
+    pname = "Text-Fuzzy";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BK/BKB/Text-Fuzzy-0.29.tar.gz";
+      sha256 = "3df5cfd2ca1a4c5ca7ff7bab3cc8d53ad2064e134cbf11004f3cf8c4b9055bff";
+    };
+    meta = {
+      description = "Partial string matching using edit distances";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextGerman = buildPerlPackage {
+     pname = "Text-German";
+     version = "0.06";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/U/UL/ULPFR/Text-German-0.06.tar.gz";
+       sha256 = "1p87pgap99lw0nv62i3ghvsi7yg90lhn8vsa3yqp75rd04clybcj";
+     };
+     meta = {
+     };
+  };
+
+  TextGlob = buildPerlPackage {
+    pname = "Text-Glob";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Text-Glob-0.11.tar.gz";
+      sha256 = "11sj62fynfgwrlgkv5a051cq6yn0pagxqjsz27dxx8phsd4wv706";
+    };
+  };
+
+  TextHogan = buildPerlPackage {
+    pname = "Text-Hogan";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAORU/Text-Hogan-2.03.tar.gz";
+      sha256 = "0yk1qn457jqknds4g2khlhi5vk2li1njbfwvxy44i665wknj7naq";
+    };
+    propagatedBuildInputs = [ Clone RefUtil TextTrim ];
+    buildInputs = [ DataVisitor PathTiny TryTiny YAML ];
+    meta = {
+      description = "Text::Hogan - A mustache templating engine statement-for-statement cloned from hogan.js";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextIconv = buildPerlPackage {
+    pname = "Text-Iconv";
+    version = "1.7";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MP/MPIOTR/Text-Iconv-1.7.tar.gz";
+      sha256 = "5b80b7d5e709d34393bcba88971864a17b44a5bf0f9e4bcee383d029e7d2d5c3";
+    };
+    meta = {
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.TextIconv.x86_64-darwin
+    };
+  };
+
+  TestInDistDir = buildPerlPackage {
+    pname = "Test-InDistDir";
+    version = "1.112071";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MITHALDU/Test-InDistDir-1.112071.tar.gz";
+      sha256 = "922c5c63314f406f4cbb35ec423ac2154d2c2b71a65addb7732c9d240a83fefb";
+    };
+    meta = {
+      homepage = "https://github.com/wchristian/Test-InDistDir";
+      description = "Test environment setup for development with IDE";
+      license = lib.licenses.wtfpl;
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  TestInter = buildPerlPackage {
+    pname = "Test-Inter";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SB/SBECK/Test-Inter-1.09.tar.gz";
+      sha256 = "1e9f129cc1a001fb95449d385253b38afabf5b466e3b3bd33e4e430f216e177a";
+    };
+    meta = {
+      description = "Framework for more readable interactive test scripts";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ FileFindRule TestPod TestPodCoverage ];
+  };
+
+  TextLayout = buildPerlPackage {
+    pname = "Text-Layout";
+    version = "0.019";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JV/JV/Text-Layout-0.019.tar.gz";
+      sha256 = "a043f2a89e113b29c523a9efa71fa8398ed75edd482193901b38d08dd4a4108e";
+    };
+    buildInputs = [ PDFAPI2 ];
+    meta = {
+      description = "Pango style markup formatting";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextLorem = buildPerlModule {
+    pname = "Text-Lorem";
+    version = "0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AD/ADEOLA/Text-Lorem-0.3.tar.gz";
+      sha256 = "64bb636fb21213101a646b414ecbdc1b55edf905cbcdc7f5d24774ec5061fe2d";
+    };
+    meta = {
+      description = "Generate random Latin looking text";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  TestManifest = buildPerlPackage {
+    pname = "Test-Manifest";
+    version = "2.021";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Test-Manifest-2.021.tar.gz";
+      sha256 = "a47aaad71c580e16e6e63d8c037cdddcd919876754beb2c95d9a88682dd332d9";
+    };
+    meta = {
+      description = "Interact with a t/test_manifest file";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextMarkdown = buildPerlPackage {
+    pname = "Text-Markdown";
+    version = "1.000031";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Text-Markdown-1.000031.tar.gz";
+      sha256 = "06y79lla8adkqhrs41xdddqjs81dcrh266b50mfbg37bxkawd4f1";
+    };
+    buildInputs = [ ListMoreUtils TestDifferences TestException ];
+  };
+
+  TextMarkdownHoedown = buildPerlModule {
+    pname = "Text-Markdown-Hoedown";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOKUHIROM/Text-Markdown-Hoedown-1.03.tar.gz";
+      sha256 = "sha256-U6cw/29IgrmavYVW8mqRH1gvZ1tZ8OFnJe0ey8CE7lA=";
+    };
+    buildInputs = [ Filepushd ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      homepage = "https://github.com/tokuhirom/Text-Markdown-Hoedown";
+      description = "hoedown for Perl5";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestMinimumVersion = buildPerlPackage {
+    pname = "Test-MinimumVersion";
+    version = "0.101082";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Test-MinimumVersion-0.101082.tar.gz";
+      sha256 = "3fba4e8fcf74806259aa639be7d90e70346ad0e0e4b8b619593490e378241970";
+    };
+    propagatedBuildInputs = [ PerlMinimumVersion ];
+    meta = {
+      homepage = "https://github.com/rjbs/Test-MinimumVersion";
+      description = "Does your code require newer perl than you think?";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextMicroTemplate = buildPerlPackage {
+    pname = "Text-MicroTemplate";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAZUHO/Text-MicroTemplate-0.24.tar.gz";
+      sha256 = "1j5ljx7hs4k29732nr5f2m4kssz4rqjw3kknsnhams2yydqix01j";
+    };
+    meta = {
+      description = "Micro template engine with Perl5 language";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextMultiMarkdown = buildPerlPackage {
+    pname = "Text-MultiMarkdown";
+    version = "1.000035";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BO/BOBTFISH/Text-MultiMarkdown-1.000035.tar.gz";
+      sha256 = "2467dd13751dc2979d7c880b24e762952130fdf42a1ed3ee04fdf72d4b52646a";
+    };
+    buildInputs = [ ListMoreUtils TestException ];
+    propagatedBuildInputs = [ HTMLParser TextMarkdown ];
+    meta = {
+      description = "Convert MultiMarkdown syntax to (X)HTML";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  TestNumberDelta = buildPerlPackage {
+    pname = "Test-Number-Delta";
+    version = "1.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-Number-Delta-1.06.tar.gz";
+      sha256 = "535430919e6fdf6ce55ff76e9892afccba3b7d4160db45f3ac43b0f92ffcd049";
+    };
+    meta = {
+      homepage = "https://github.com/dagolden/Test-Number-Delta";
+      description = "Compare the difference between numbers against a given tolerance";
+      license = "apache";
+    };
+  };
+
+  TextParsewords = buildPerlPackage {
+    pname = "Text-Parsewords";
+    version = "3.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Text-ParseWords-3.30.tar.gz";
+      hash = "sha256-heAjgXndQ5l+WMZr1RYRGCvH1TNQUCmi2w0yMu2v9eg=";
+    };
+    meta = {
+      description = "Parse text into an array of tokens or array of arrays";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextPasswordPronounceable = buildPerlPackage {
+    pname = "Text-Password-Pronounceable";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TS/TSIBLEY/Text-Password-Pronounceable-0.30.tar.gz";
+      sha256 = "c186a50256e0bedfafb17e7ce157e7c52f19503bb79e18ebf06255911f6ead1a";
+    };
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextPatch = buildPerlPackage {
+    pname = "Text-Patch";
+    version = "1.8";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CADE/Text-Patch-1.8.tar.gz";
+      sha256 = "eaf18e61ba6a3e143846a7cc66f08ce58a0c4fbda92acb31aede25cb3b5c3dcc";
+    };
+    propagatedBuildInputs = [ TextDiff ];
+    meta = {
+      description = "Patches text with given patch";
+      license = lib.licenses.gpl2;
+    };
+  };
+
+  TextPDF = buildPerlPackage {
+    pname = "Text-PDF";
+    version = "0.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BH/BHALLISSY/Text-PDF-0.31.tar.gz";
+      sha256 = "0s5cimfr4wwzgv15k30x83ncg1257jwsvmbmb86lp02rw5g537yz";
+    };
+  };
+
+  TextQuoted = buildPerlPackage {
+    pname = "Text-Quoted";
+    version = "2.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BP/BPS/Text-Quoted-2.10.tar.gz";
+      sha256 = "081bf95ec9220af26cec89161e61bf73f9fbcbfeee1d9af15139e5d7b708f445";
+    };
+    propagatedBuildInputs = [ TextAutoformat ];
+    meta = {
+      description = "Extract the structure of a quoted mail message";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextRecordParser = buildPerlPackage {
+    pname = "Text-RecordParser";
+    version = "1.6.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KC/KCLARK/Text-RecordParser-1.6.5.tar.gz";
+      sha256 = "0nn33c058bl957v38xhqig4ld34lifl4arqiilhxky339i0q2fys";
+    };
+
+    # In a NixOS chroot build, the tests fail because the font configuration
+    # at /etc/fonts/font.conf is not available.
+    doCheck = false;
+
+    propagatedBuildInputs = [ ClassAccessor IOStringy ListMoreUtils Readonly TextAutoformat ];
+    buildInputs = [ TestException ];
+  };
+
+  TextReform = buildPerlModule {
+    pname = "Text-Reform";
+    version = "1.20";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Text-Reform-1.20.tar.gz";
+      sha256 = "a8792dd8c1aac97001032337b36a356be96e2d74c4f039ef9a363b641db4ae61";
+    };
+    meta = {
+      description = "Manual text wrapping and reformatting";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextRoman = buildPerlPackage {
+    pname = "Text-Roman";
+    version = "3.5";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SY/SYP/Text-Roman-3.5.tar.gz";
+      sha256 = "0sh47svzz0wm993ywfgpn0fvhajl2sj5hcnf5zxjz02in6ihhjnb";
+    };
+    meta = {
+      description = "Allows conversion between Roman and Arabic algarisms";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  TextSimpleTable = buildPerlPackage {
+    pname = "Text-SimpleTable";
+    version = "2.07";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/Text-SimpleTable-2.07.tar.gz";
+      sha256 = "1v8r8qpzg283p2pqqr8dqrak2bxray1b2jmib0qk75jffqw3yv95";
+    };
+    meta = {
+      description = "Simple eyecandy ASCII tables";
+      license = lib.licenses.artistic2;
+    };
+    propagatedBuildInputs = [ UnicodeLineBreak ];
+  };
+
+  TextSoundex = buildPerlPackage {
+    pname = "Text-Soundex";
+    version = "3.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Text-Soundex-3.05.tar.gz";
+      sha256 = "f6dd55b4280b25dea978221839864382560074e1d6933395faee2510c2db60ed";
+    };
+  };
+
+  TextSprintfNamed = buildPerlModule {
+    pname = "Text-Sprintf-Named";
+    version = "0.0405";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Sprintf-Named-0.0405.tar.gz";
+      sha256 = "1z0glxrmbc6pgjs5bkmp1wiifd4xdcrin8wqz6rhmi6gzxw0siwv";
+    };
+    buildInputs = [ TestWarn ];
+    meta = {
+      description = "Sprintf-like function with named conversions";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TextTable = buildPerlModule {
+    pname = "Text-Table";
+    version = "1.134";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Table-1.134.tar.gz";
+      sha256 = "02yigisvgshpgfyqwj0xad4jg473cd80a6c210nb5h5p32dl5kxs";
+    };
+    propagatedBuildInputs = [ TextAligner ];
+    meta = {
+      homepage = "https://www.shlomifish.org/open-source/projects/docmake/";
+      description = "Organize Data in Tables";
+      license = lib.licenses.isc;
+    };
+  };
+
+  TextTabularDisplay = buildPerlPackage {
+    pname = "Text-TabularDisplay";
+    version = "1.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DARREN/Text-TabularDisplay-1.38.tar.gz";
+      sha256 = "1s46s4pg5mpfllx3icf4vnqz9iadbbdbsr5p7pr6gdjnzbx902gb";
+    };
+  };
+
+  TextTemplate = buildPerlPackage {
+    pname = "Text-Template";
+    version = "1.59";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHOUT/Text-Template-1.59.tar.gz";
+      sha256 = "1dd2c788c05303ed9a970e1881109642151fa93e02c7a80d4c70608276bab1ee";
+    };
+    buildInputs = [ TestMoreUTF8 TestWarnings ];
+  };
+
+  TestTrap = buildPerlModule {
+    pname = "Test-Trap";
+    version = "0.3.4";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/EB/EBHANSSEN/Test-Trap-v0.3.4.tar.gz";
+      sha256 = "1qjs2080kcc66s4d7499br5lw2qmhr9gxky4xsl6vjdn6dpna10b";
+    };
+    propagatedBuildInputs = [ DataDump ];
+    meta = {
+      description = "Trap exit codes, exceptions, output, etc";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestVars = buildPerlModule {
+    pname = "Test-Vars";
+    version = "0.014";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Test-Vars-0.014.tar.gz";
+      sha256 = "0qr8q0ksr925ycwbsyxjwgz4p9r7a8vkxpn33vy23zbijwpa3xx7";
+    };
+
+    buildInputs = [ ModuleBuildTiny ];
+
+    meta = {
+      homepage = "https://github.com/gfx/p5-Test-Vars";
+      description = "Detects unused variables";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TestVersion = buildPerlPackage {
+    pname = "Test-Version";
+    version = "2.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/Test-Version-2.09.tar.gz";
+      sha256 = "9ce1dd2897a5f30e1b7f8966ec66f57d8d8f280f605f28c7ca221fa79aca38e0";
+    };
+    buildInputs = [ TestException ];
+    propagatedBuildInputs = [ FileFindRulePerl ];
+    meta = {
+      description = "Check to see that version's in modules are sane";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  TextTrim = buildPerlPackage {
+    pname = "Text-Trim";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJT/Text-Trim-1.03.tar.gz";
+      sha256 = "0ks9afvx9c1b6px98wwzhbyhd2y6hdg7884814fc9pnx8qfzrz50";
+    };
+    meta = {
+      description = "Remove leading and/or trailing whitespace from strings";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextUnaccent = buildPerlPackage {
+    pname = "Text-Unaccent";
+    version = "1.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LD/LDACHARY/Text-Unaccent-1.08.tar.gz";
+      sha256 = "0avk50kia78kxryh2whmaj5l18q2wvmkdyqyjsf6kwr4kgy6x3i7";
+    };
+    # https://rt.cpan.org/Public/Bug/Display.html?id=124815
+    NIX_CFLAGS_COMPILE = "-DHAS_VPRINTF";
+    meta = {
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.TextUnaccent.x86_64-darwin
+    };
+  };
+
+  TextUnidecode = buildPerlPackage {
+    pname = "Text-Unidecode";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SB/SBURKE/Text-Unidecode-1.30.tar.gz";
+      sha256 = "1imii0p6wvhrxsr5z2zhazpx5vl4l4ybf1y2c5hy480xvi6z293c";
+    };
+  };
+
+  Testutf8 = buildPerlPackage {
+    pname = "Test-utf8";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKF/Test-utf8-1.02.tar.gz";
+      sha256 = "df82f09c5940830b25a49f1c8162fa24d371e602880edef8d9a4d4bfd66b8bd7";
+    };
+    meta = {
+      homepage = "https://github.com/2shortplanks/Test-utf8";
+      description = "Handy utf8 tests";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextNSP = buildPerlPackage {
+    pname = "Text-NSP";
+    version = "1.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TP/TPEDERSE/Text-NSP-1.31.tar.gz";
+      sha256 = "a01201beb29636b3e41ecda2a6cf6522fd265416bd6d994fad02f59fb49cf595";
+    };
+    meta = {
+      description = "Extract collocations and Ngrams from text";
+      license = lib.licenses.free;
+      maintainers = [ maintainers.bzizou ];
+    };
+  };
+
+  TextvFileasData = buildPerlPackage {
+    pname = "Text-vFile-asData";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCLAMP/Text-vFile-asData-0.08.tar.gz";
+      sha256 = "b291ab5e0f987c5172560a692234711a75e4596d83475f72d01278369532f82a";
+    };
+    propagatedBuildInputs = [ ClassAccessorChained ];
+    meta = {
+      description = "Parse vFile formatted files into data structures";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextWikiFormat = buildPerlModule {
+    pname = "Text-WikiFormat";
+    version = "0.81";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CY/CYCLES/Text-WikiFormat-0.81.tar.gz";
+      sha256 = "0cxbgx879bsskmnhjzamgsa5862ddixyx4yr77lafmwimnaxjg74";
+    };
+    propagatedBuildInputs = [ URI ];
+  };
+
+  TextWordDiff = buildPerlPackage {
+    pname = "Text-WordDiff";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TIMK/Text-WordDiff-0.09.tar.gz";
+      sha256 = "fee699ca763adca2f4e18f4a8a836fd2102bc2820af708f8eb43356d5ae0d50e";
+    };
+    propagatedBuildInputs = [ AlgorithmDiff HTMLParser ];
+    meta = {
+      homepage = "https://metacpan.org/release/Text-WordDiff";
+      description = "Track changes between documents";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TextWrapI18N = buildPerlPackage {
+    pname = "Text-WrapI18N";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KU/KUBOTA/Text-WrapI18N-0.06.tar.gz";
+      sha256 = "4bd29a17f0c2c792d12c1005b3c276f2ab0fae39c00859ae1741d7941846a488";
+    };
+    buildInputs = [ pkgs.glibcLocales ];
+    propagatedBuildInputs = [ TextCharWidth ];
+    preConfigure = ''
+      substituteInPlace WrapI18N.pm --replace '/usr/bin/locale' '${pkgs.glibc.bin}/bin/locale'
+    '';
+    meta = {
+      description = "Line wrapping module with support for multibyte, fullwidth, and combining characters and languages without whitespaces between words";
+      license = with lib.licenses; [ artistic1 gpl2 ];
+    };
+  };
+
+  TextWrapper = buildPerlPackage {
+    pname = "Text-Wrapper";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CJ/CJM/Text-Wrapper-1.05.tar.gz";
+      sha256 = "64268e15983a9df47e1d9199a491f394e89f542e54afb33f4b78f3f318e09ab9";
+    };
+    meta = {
+      description = "Word wrap text by breaking long lines";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestDifferences ];
+  };
+
+  Throwable = buildPerlPackage {
+    pname = "Throwable";
+    version = "0.200013";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/Throwable-0.200013.tar.gz";
+      sha256 = "184gdcwxqwnkrx5md968v1ny70pq6blzpkihccm3bpdxnpgd11wr";
+    };
+    propagatedBuildInputs = [ DevelStackTrace Moo ];
+    meta = {
+      homepage = "https://github.com/rjbs/Throwable";
+      description = "A role for classes that can be thrown";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TieCacheLRU = buildPerlPackage {
+    pname = "Tie-Cache-LRU";
+    version = "20150301";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/Tie-Cache-LRU-20150301.tar.gz";
+      sha256 = "1bf740450d3a6d7c12b48c25f7da5964e44e7cc38b28572cfb76ff22464f4469";
+    };
+    propagatedBuildInputs = [ ClassVirtual enum ];
+    meta = {
+      description = "A Least-Recently Used cache";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TieCacheLRUExpires = buildPerlPackage {
+    pname = "Tie-Cache-LRU-Expires";
+    version = "0.55";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OE/OESTERHOL/Tie-Cache-LRU-Expires-0.55.tar.gz";
+      sha256 = "b316d849acd25f24346d55a9950d281fee0746398767c601234122159573eb9a";
+    };
+    propagatedBuildInputs = [ TieCacheLRU ];
+    meta = {
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  TieCycle = buildPerlPackage {
+    pname = "Tie-Cycle";
+    version = "1.225";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BD/BDFOY/Tie-Cycle-1.225.tar.gz";
+      sha256 = "0i9xq2qm50p2ih24265jndp2x8hfq7ap0d88nrlv5yaad4hxhc7k";
+    };
+    meta = {
+      description = "Cycle through a list of values via a scalar";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TieEncryptedHash = buildPerlPackage {
+    pname = "Tie-EncryptedHash";
+    version = "1.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VI/VIPUL/Tie-EncryptedHash-1.24.tar.gz";
+      sha256 = "aa9a083a231e4046170a5894644e3c59679c7dbd0aa2d1217dc85150df2c1e21";
+    };
+    propagatedBuildInputs = [ CryptBlowfish CryptCBC CryptDES ];
+    meta = {
+      description = "Hashes (and objects based on hashes) with encrypting fields";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  TieFile = buildPerlPackage {
+    pname = "Tie-File";
+    version = "1.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/Tie-File-1.05.tar.gz";
+      sha256 = "8a980b577ff4b10fe11062ed8c774857fa8c9833c5305f2e8bfb3347af63f139";
+    };
+    meta = {
+      description = "Access the lines of a disk file via a Perl array";
+    };
+  };
+
+  TieIxHash = buildPerlModule {
+    pname = "Tie-IxHash";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHORNY/Tie-IxHash-1.23.tar.gz";
+      sha256 = "0mmg9iyh42syal3z1p2pn9airq65yrkfs66cnqs9nz76jy60pfzs";
+    };
+    meta = {
+      description = "Ordered associative arrays for Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TieHandleOffset = buildPerlPackage {
+    pname = "Tie-Handle-Offset";
+    version = "0.004";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/Tie-Handle-Offset-0.004.tar.gz";
+      sha256 = "ee9f39055dc695aa244a252f56ffd37f8be07209b337ad387824721206d2a89e";
+    };
+    meta = {
+      homepage = "https://github.com/dagolden/tie-handle-offset";
+      description = "Tied handle that hides the beginning of a file";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  TieHashIndexed = buildPerlPackage {
+    pname = "Tie-Hash-Indexed";
+    version = "0.08";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MH/MHX/Tie-Hash-Indexed-0.08.tar.gz";
+      sha256 = "043v98xaid6sjch2x9c39s475wm9i13vzf8jg73qm12sby0n5g1p";
+    };
+    meta = {
+      description = "Ordered hashes for Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    doCheck = false; /* test fails on some machines */
+  };
+
+  TieHashMethod = buildPerlPackage {
+    pname = "Tie-Hash-Method";
+    version = "0.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/Y/YV/YVES/Tie-Hash-Method-0.02.tar.gz";
+      sha256 = "d513fbb51413f7ca1e64a1bdce6194df7ec6076dea55066d67b950191eec32a9";
+    };
+    meta = {
+      description = "Tied hash with specific methods overriden by callbacks";
+      license = with lib.licenses; [ artistic1 ];
+    };
+  };
+
+  TieRefHash = buildPerlPackage {
+    pname = "Tie-RefHash";
+    version = "1.40";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Tie-RefHash-1.40.tar.gz";
+      sha256 = "1mvyjab8pv1yfimvlh4gxxpm3xzny4pinymdr8hgdd9gim8izkss";
+    };
+  };
+
+  TieRegexpHash = buildPerlPackage {
+    pname = "Tie-RegexpHash";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AL/ALTREUS/Tie-RegexpHash-0.17.tar.gz";
+      sha256 = "0c207850e77efb16618e0aa015507926a3425b34aad5aa6e3e40d83989a085a3";
+    };
+    meta = {
+      license = lib.licenses.artistic1;
+    };
+  };
+
+  TieSimple = buildPerlPackage {
+    pname = "Tie-Simple";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HANENKAMP/Tie-Simple-1.04.tar.gz";
+      sha256 = "29e9e2133951046c78f205f1b3e8df62c90e114f0e08fa06b817766a0f808b12";
+    };
+    meta = {
+      description = "Variable ties made much easier: much, much, much easier..";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TieSub = buildPerlPackage {
+     pname = "Tie-Sub";
+     version = "1.001";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/S/ST/STEFFENW/Tie-Sub-1.001.tar.gz";
+       sha256 = "1cgiyj85hhw2m4x2iv4zgaj3hzf3fghircpcfqmjndni4r4a0wgg";
+     };
+     propagatedBuildInputs = [ ParamsValidate ];
+     buildInputs = [ ModuleBuild TestDifferences TestException TestNoWarnings ];
+     meta = {
+       description = "Tie::Sub - Tying a subroutine, function or method to a hash";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  TieToObject = buildPerlPackage {
+    pname = "Tie-ToObject";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NU/NUFFIN/Tie-ToObject-0.03.tar.gz";
+      sha256 = "1x1smn1kw383xc5h9wajxk9dlx92bgrbf7gk4abga57y6120s6m3";
+    };
+  };
+
+  TimeDate = buildPerlPackage {
+    pname = "TimeDate";
+    version = "2.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AT/ATOOMIC/TimeDate-2.33.tar.gz";
+      sha256 = "1cjyc0yi873597r7xcp9yz0l1c46ik2kxwfrn00zbrlx0d5rrdn0";
+    };
+  };
+
+  TimeDuration = buildPerlPackage {
+    pname = "Time-Duration";
+    version = "1.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Time-Duration-1.21.tar.gz";
+      sha256 = "1f59z2svfydxgd1gzrb5k3hl6d432kzmskk7jhv2dyb5hyx0wd7y";
+    };
+    meta = {
+      description = "Rounded or exact English expression of durations";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TimeDurationParse = buildPerlPackage {
+    pname = "Time-Duration-Parse";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/Time-Duration-Parse-0.15.tar.gz";
+      sha256 = "10g39bbrxkabbsfq4rv7f5b5x7h3jba08j4pg8gwr0b9iqx19n31";
+    };
+    buildInputs = [ TimeDuration ];
+    propagatedBuildInputs = [ ExporterLite ];
+    meta = {
+      description = "Parse string that represents time duration";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TimeLocal = buildPerlPackage {
+    pname = "Time-Local";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Time-Local-1.30.tar.gz";
+      sha256 = "c7744f6b2986b946d3e2cf034df371bee16cdbafe53e945abb1a542c4f8920cb";
+    };
+    meta = {
+      description = "Efficiently compute time from local and GMT time";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TimeMoment = buildPerlPackage {
+    pname = "Time-Moment";
+    version = "0.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHANSEN/Time-Moment-0.44.tar.gz";
+      sha256 = "64acfa042f634fcef8dadf55e7f42ba4eaab8aaeb7d5212eb89815a31f78f6fd";
+    };
+    buildInputs = [ TestFatal TestNumberDelta TestRequires ];
+    meta = {
+      description = "Represents a date and time of day with an offset from UTC";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TimeOut = buildPerlPackage {
+    pname = "Time-Out";
+    version = "0.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PA/PATL/Time-Out-0.11.tar.gz";
+      sha256 = "1lhmx1x8j6z1k9vn32bcsw7g44cg22icshnnc37djlnlixlxm5lk";
+    };
+    meta = {
+    };
+  };
+
+  TimeParseDate = buildPerlPackage {
+    pname = "Time-ParseDate";
+    version = "2015.103";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MU/MUIR/modules/Time-ParseDate-2015.103.tar.gz";
+      sha256 = "2c1a06235bf811813caac9eaa9daa71af758667cdf7b082cb59863220fcaeed1";
+    };
+    doCheck = false;
+    meta = {
+      description = "Parse and format time values";
+    };
+  };
+
+  TimePeriod = buildPerlPackage {
+    pname = "Time-Period";
+    version = "1.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PB/PBOYD/Time-Period-1.25.tar.gz";
+      sha256 = "d07fa580529beac6a9c8274c6bf220b4c3aade685df65c1669d53339bf6ef1e8";
+    };
+    meta = {
+      description = "A Perl module to deal with time periods";
+      license = lib.licenses.gpl1;
+      maintainers = [ maintainers.winpat ];
+    };
+  };
+
+  TimePiece = buildPerlPackage {
+    pname = "Time-Piece";
+    version = "1.3401";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ES/ESAYM/Time-Piece-1.3401.tar.gz";
+      sha256 = "4b55b7bb0eab45cf239a54dfead277dfa06121a43e63b3fce0853aecfdb04c27";
+    };
+    meta = {
+      description = "Object Oriented time objects";
+      homepage = "https://metacpan.org/release/Time-Piece";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  Tirex = buildPerlPackage rec {
+    pname = "Tirex";
+    version = "0.6.1";
+
+    src = fetchFromGitHub {
+      owner  = "openstreetmap";
+      repo   = "tirex";
+      rev    = "v${version}";
+      sha256 = "0dskf50qm6yh3rx6j2nqydr1if71x6ik85hxsa2r9qgldcby2rgh";
+    };
+
+    buildInputs = [
+      GD
+      IPCShareLite
+      JSON
+      LWP
+      pkgs.cairo
+      pkgs.mapnik
+      pkgs.zlib
+    ];
+
+    installPhase = ''
+      make install DESTDIR=$out INSTALLOPTS=""
+      mv $out/$out/lib $out/$out/share $out
+      rmdir $out/$out $out/nix/store $out/nix
+    '';
+
+    meta = {
+      description = "Tools for running a map tile server";
+      homepage = "https://github.com/openstreetmap/tirex";
+      maintainers = with maintainers; [ jglukasik ];
+      license = with lib.licenses; [ gpl2 ];
+    };
+  };
+
+  Tk = buildPerlPackage {
+    pname = "Tk";
+    version = "804.035";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SR/SREZIC/Tk-804.035.tar.gz";
+      sha256 = "4d2b80291ba6de34d8ec886a085a6dbd2b790b926035a087e99025614c5ffdd4";
+    };
+    makeMakerFlags = "X11INC=${pkgs.xorg.libX11.dev}/include X11LIB=${pkgs.xorg.libX11.out}/lib";
+    buildInputs = [ pkgs.xorg.libX11 pkgs.libpng ];
+    doCheck = false;            # Expects working X11.
+    meta = {
+      license = lib.licenses.tcltk;
+    };
+  };
+
+  TreeDAGNode = buildPerlPackage {
+    pname = "Tree-DAG_Node";
+    version = "1.31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Tree-DAG_Node-1.31.tgz";
+      sha256 = "016kr76azxzfcpxjkhqp2piyyl6529shjis20mc3g2snfabsd2qw";
+    };
+    meta = {
+      description = "An N-ary tree";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    propagatedBuildInputs = [ FileSlurpTiny ];
+  };
+
+  TreeSimple = buildPerlPackage {
+    pname = "Tree-Simple";
+    version = "1.33";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Tree-Simple-1.33.tgz";
+      sha256 = "1alnwb6c7n4al91m9cyknvcyvdz521lh22dz1hyk4v7c50adffnv";
+    };
+    buildInputs = [ TestException ];
+    meta = {
+      description = "A simple tree object";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TreeSimpleVisitorFactory = buildPerlPackage {
+    pname = "Tree-Simple-VisitorFactory";
+    version = "0.15";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RS/RSAVAGE/Tree-Simple-VisitorFactory-0.15.tgz";
+      sha256 = "06y2vazkl307k59hnkp9h5bp3p7711kgmp1qdhb2lgnfwzn84zin";
+    };
+    propagatedBuildInputs = [ TreeSimple ];
+    buildInputs = [ TestException ];
+  };
+
+  TryTiny = buildPerlPackage {
+    pname = "Try-Tiny";
+    version = "0.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz";
+      sha256 = "da5bd0d5c903519bbf10bb9ba0cb7bcac0563882bcfe4503aee3fb143eddef6b";
+    };
+    buildInputs = [ CPANMetaCheck CaptureTiny ];
+    meta = {
+      description = "Minimal try/catch with proper preservation of $@";
+      license = lib.licenses.mit;
+    };
+  };
+
+  TryTinyByClass = buildPerlPackage {
+    pname = "Try-Tiny-ByClass";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MAUKE/Try-Tiny-ByClass-0.01.tar.gz";
+      sha256 = "0ipif12ix6vnmlyar4gh89libfadbsd9kvqg52f2cpr957slx3h3";
+    };
+    propagatedBuildInputs = [ DispatchClass TryTiny ];
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Twiggy = buildPerlPackage {
+     pname = "Twiggy";
+     version = "0.1025";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Twiggy-0.1025.tar.gz";
+       sha256 = "1a57knbwync7rlzhsz1kdc0sd380xnaccwgiy1qwj5d87abdynnp";
+     };
+     propagatedBuildInputs = [ AnyEvent Plack ];
+     buildInputs = [ TestRequires TestSharedFork TestTCP ];
+     meta = {
+       description = "AnyEvent HTTP server for PSGI (like Thin)";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/miyagawa/Twiggy";
+     };
+  };
+
+  TypeTiny = buildPerlPackage {
+    pname = "Type-Tiny";
+    version = "1.012000";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/Type-Tiny-1.012000.tar.gz";
+      sha256 = "147axzi07g5akpzbzd2npvdyh9pmzv22a8la1dmylahw2qh15nyk";
+    };
+    propagatedBuildInputs = [ ExporterTiny ];
+    meta = {
+      description = "Tiny, yet Moo(se)-compatible type constraint";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestMemoryCycle ];
+  };
+
+  TypeTinyXS = buildPerlPackage {
+    pname = "Type-Tiny-XS";
+    version = "0.022";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TOBYINK/Type-Tiny-XS-0.022.tar.gz";
+      sha256 = "bcc34a31f7dc1d30cc803889b5c8f90e4773b73b5becbdb3860f5abe7e22ff00";
+    };
+    meta = {
+      homepage = "https://metacpan.org/release/Type-Tiny-XS";
+      description = "Provides an XS boost for some of Type::Tiny's built-in type constraints";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  TypesSerialiser = buildPerlPackage {
+     pname = "Types-Serialiser";
+     version = "1.01";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/ML/MLEHMANN/Types-Serialiser-1.01.tar.gz";
+       sha256 = "104a7292pwwg57rswpkiaq1cgj7hcsrpf818azcy7l0l14xigizq";
+     };
+     propagatedBuildInputs = [ commonsense ];
+     meta = {
+     };
+  };
+
+  UNIVERSALcan = buildPerlPackage {
+    pname = "UNIVERSAL-can";
+    version = "1.20140328";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHROMATIC/UNIVERSAL-can-1.20140328.tar.gz";
+      sha256 = "522da9f274786fe2cba99bc77cc1c81d2161947903d7fad10bd62dfb7f11990f";
+    };
+    meta = {
+      homepage = "https://github.com/chromatic/UNIVERSAL-can";
+      description = "Work around buggy code calling UNIVERSAL::can() as a function";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UNIVERSALisa = buildPerlPackage {
+    pname = "UNIVERSAL-isa";
+    version = "1.20171012";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/UNIVERSAL-isa-1.20171012.tar.gz";
+      sha256 = "0avzv9j32aab6l0rd63n92v0pgliz1p4yabxxjfq275hdh1mcsfi";
+    };
+    meta = {
+      homepage = "https://github.com/chromatic/UNIVERSAL-isa";
+      description = "Attempt to recover from people calling UNIVERSAL::isa as a function";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UNIVERSALrequire = buildPerlPackage {
+    pname = "UNIVERSAL-require";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz";
+      sha256 = "b2a736a87967a143dab58c8a110501d5235bcdd2c8b2a3bfffcd3c0bd06b38ed";
+    };
+    meta = {
+      description = "Require() modules from a variable";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UnicodeCaseFold = buildPerlModule {
+    pname = "Unicode-CaseFold";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AR/ARODLAND/Unicode-CaseFold-1.01.tar.gz";
+      sha256 = "418a212808f9d0b8bb330ac905096d2dd364976753d4c71534dab9836a63194d";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UnicodeCheckUTF8 = buildPerlPackage {
+    pname = "Unicode-CheckUTF8";
+    version = "1.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BRADFITZ/Unicode-CheckUTF8-1.03.tar.gz";
+      sha256 = "97f84daf033eb9b49cd8fe31db221fef035a5c2ee1d757f3122c88cf9762414c";
+    };
+  };
+
+  UnicodeLineBreak = buildPerlPackage {
+    pname = "Unicode-LineBreak";
+    version = "2019.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/N/NE/NEZUMI/Unicode-LineBreak-2019.001.tar.gz";
+      sha256 = "12iinva5gqc9g7qzxrvmh45n714z0ad9g7wq2dxwgp6drbj64rs8";
+    };
+    propagatedBuildInputs = [ MIMECharset ];
+    meta = {
+      description = "UAX #14 Unicode Line Breaking Algorithm";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UnicodeString = buildPerlPackage {
+    pname = "Unicode-String";
+    version = "2.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/GAAS/Unicode-String-2.10.tar.gz";
+      sha256 = "0s4vp8k7ag7z9lsnnkpa9mnch83kxhp9gh7yiapld5a7rq712jl9";
+    };
+  };
+
+  UnicodeStringprep = buildPerlModule {
+    pname = "Unicode-Stringprep";
+    version = "1.105";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CF/CFAERBER/Unicode-Stringprep-1.105.tar.gz";
+      sha256 = "e6bebbc58408231fd1317db9102449b3e7da4fa437e79f637382d36313efd011";
+    };
+    buildInputs = [ TestNoWarnings ];
+    meta = {
+      description = "Preparation of Internationalized Strings (RFC 3454)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  UnicodeUTF8 = buildPerlPackage {
+    pname = "Unicode-UTF8";
+    version = "0.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHANSEN/Unicode-UTF8-0.62.tar.gz";
+      sha256 = "fa8722d0b74696e332fddd442994436ea93d3bfc7982d4babdcedfddd657d0f6";
+    };
+    buildInputs = [ TestFatal ];
+    meta = {
+      homepage = "https://github.com/chansen/p5-unicode-utf8";
+      description = "Encoding and decoding of UTF-8 encoding form";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = with maintainers; [ sgo ];
+    };
+  };
+
+  UnixGetrusage = buildPerlPackage {
+    pname = "Unix-Getrusage";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TA/TAFFY/Unix-Getrusage-0.03.tar.gz";
+      sha256 = "76cde1cee2453260b85abbddc27cdc9875f01d2457e176e03dcabf05fb444d12";
+    };
+  };
+
+  URI = buildPerlPackage {
+    pname = "URI";
+    version = "5.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/URI-5.05.tar.gz";
+      sha256 = "1v3r3ck67w272kzfgm1nd3wb41av1hlnza56vkxxj1i7s3917hd5";
+    };
+    buildInputs = [ TestNeeds ];
+    meta = {
+      homepage = "https://github.com/libwww-perl/URI";
+      description = "Uniform Resource Identifiers (absolute and relative)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URIdb = buildPerlModule {
+    pname = "URI-db";
+    version = "0.19";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/URI-db-0.19.tar.gz";
+      sha256 = "c4999deaf451652216032c8e327ff6e6d655539eac379095bb69b0c369efa658";
+    };
+    propagatedBuildInputs = [ URINested ];
+    meta = {
+      description = "Database URIs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URIFind = buildPerlModule {
+    pname = "URI-Find";
+    version = "20160806";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSCHWERN/URI-Find-20160806.tar.gz";
+      sha256 = "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Find URIs in arbitrary text";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URIFromHash = buildPerlPackage {
+    pname = "URI-FromHash";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/URI-FromHash-0.05.tar.gz";
+      sha256 = "1l3g5ygv83vn9y1zpwjdqq5cs4ip2q058q0gmpcf5wp9rsycbjm7";
+    };
+    propagatedBuildInputs = [ ParamsValidate URI ];
+    meta = {
+      description = "Build a URI from a set of named parameters";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ TestFatal ];
+  };
+
+  UriGoogleChart = buildPerlPackage {
+    pname = "URI-GoogleChart";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/URI-GoogleChart-1.02.tar.gz";
+      sha256 = "00hq5cpsk7sa04n0wg52qhpqf9i2849yyvw2zk83ayh1qqpc50js";
+    };
+    propagatedBuildInputs = [ URI ];
+  };
+
+  UserIdentity = buildPerlPackage {
+     pname = "User-Identity";
+     version = "1.00";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/M/MA/MARKOV/User-Identity-1.00.tar.gz";
+       sha256 = "0jlzishg33848qvl5x7nsrnlpnx7lfg5hr4m1qrjddzy3hkv86cj";
+     };
+     meta = {
+       description = "Collect information about a user";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  URIIMAP = buildPerlPackage {
+    pname = "URI-imap";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CW/CWEST/URI-imap-1.01.tar.gz";
+      sha256 = "0bdv6mrdijcq46r3lmz801rscs63f8p9qqliy2safd6fds4rj55v";
+    };
+    propagatedBuildInputs = [ URI ];
+  };
+
+  URINested = buildPerlModule {
+    pname = "URI-Nested";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/URI-Nested-0.10.tar.gz";
+      sha256 = "e1971339a65fbac63ab87142d4b59d3d259d51417753c77cb58ea31a8233efaf";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Nested URIs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URISmartURI = buildPerlPackage {
+    pname = "URI-SmartURI";
+    version = "0.032";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RK/RKITOVER/URI-SmartURI-0.032.tar.gz";
+      sha256 = "0b2grkmkbnp37q85wj7jpj5zr93vdbisgxlls2vl5q928rwln5zb";
+    };
+    propagatedBuildInputs = [ ClassC3Componentised FileFindRule ListMoreUtils Moose URI namespaceclean ];
+    buildInputs = [ TestFatal TestNoWarnings ];
+    meta = {
+      description = "Subclassable and hostless URIs";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URITemplate = buildPerlPackage {
+    pname = "URI-Template";
+    version = "0.24";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-0.24.tar.gz";
+      sha256 = "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Object for handling URI templates (RFC 6570)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  URIcpan = buildPerlPackage {
+    pname = "URI-cpan";
+    version = "1.007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RJ/RJBS/URI-cpan-1.007.tar.gz";
+      sha256 = "1lsjw7m9c3vyq1h9pqzngww18yq23mn4jxv9d7i4a2ifcsa16nhj";
+    };
+    propagatedBuildInputs = [ CPANDistnameInfo URI ];
+    meta = {
+      description = "URLs that refer to things on the CPAN";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/rjbs/URI-cpan";
+    };
+  };
+
+  URIws = buildPerlPackage {
+    pname = "URI-ws";
+    version = "0.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PL/PLICEASE/URI-ws-0.03.tar.gz";
+      sha256 = "6e6b0e4172acb6a53c222639c000608c2dd61d50848647482ac8600d50e541ef";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      homepage = "https://metacpan.org/release/URI-ws";
+      description = "WebSocket support for URI package";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UUIDTiny = buildPerlPackage {
+    pname = "UUID-Tiny";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CA/CAUGUSTIN/UUID-Tiny-1.04.tar.gz";
+      sha256 = "6dcd92604d64e96cc6c188194ae16a9d3a46556224f77b6f3d1d1312b68f9a3d";
+    };
+    meta = {
+      description = "Pure Perl UUID Support With Functional Interface";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  UUIDURandom = buildPerlPackage {
+    pname = "UUID-URandom";
+    version = "0.001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/UUID-URandom-0.001.tar.gz";
+      sha256 = "3f13631b13b9604fb489e2989490c99f103743a837239bdafae9d6baf55f8f46";
+    };
+    propagatedBuildInputs = [ CryptURandom ];
+    meta = {
+      homepage = "https://github.com/dagolden/UUID-URandom";
+      description = "UUIDs based on /dev/urandom or the Windows Crypto API";
+      license = lib.licenses.asl20;
+    };
+  };
+
+  VariableMagic = buildPerlPackage {
+    pname = "Variable-Magic";
+    version = "0.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/V/VP/VPIT/Variable-Magic-0.62.tar.gz";
+      sha256 = "3f9a18517e33f006a9c2fc4f43f01b54abfe6ff2eae7322424f31069296b615c";
+    };
+    meta = {
+      description = "Associate user-defined magic to variables from Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Version = buildPerlPackage {
+    pname = "version";
+    version = "0.9928";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LE/LEONT/version-0.9928.tar.gz";
+      sha256 = "13mabl07rhwwlshj72hvp1j43q3ygxf7wp7qxx3nbqbnrf6i83i4";
+    };
+    meta = {
+      description = "Structured version objects";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  vidir = buildPerlPackage {
+    pname = "App-vidir";
+    version = "0.050";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/W/WO/WOLDRICH/App-vidir-0.050.tar.gz";
+      sha256 = "1xa3vabbkxaqa8pnyl0dblr1m4g2229m1fzl8c9q74f06i00hikh";
+    };
+    outputs = [ "out" ];
+    meta = {
+      maintainers = [ maintainers.chreekat ];
+      description = "Edit a directory in $EDITOR";
+      license = with lib.licenses; [ gpl1 ];
+    };
+  };
+
+  VMEC2 = buildPerlModule {
+    pname = "VM-EC2";
+    version = "1.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/L/LD/LDS/VM-EC2-1.28.tar.gz";
+      sha256 = "b2b6b31745c57431fca0efb9b9d0b8f168d6081755e048fd9d6c4469bd108acd";
+    };
+    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 lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  VMEC2SecurityCredentialCache = buildPerlPackage {
+    pname = "VM-EC2-Security-CredentialCache";
+    version = "0.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCONOVER/VM-EC2-Security-CredentialCache-0.25.tar.gz";
+      sha256 = "fc7e9c152ff2b721ccb221ac40089934775cf58366aedb5cc1693609f840937b";
+    };
+    propagatedBuildInputs = [ DateTimeFormatISO8601 VMEC2 ];
+    meta = {
+      description = "Cache credentials respecting expiration time for IAM roles";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  W3CLinkChecker = buildPerlPackage {
+    pname = "W3C-LinkChecker";
+    version = "4.81";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCOP/W3C-LinkChecker-4.81.tar.gz";
+      sha256 = "6239f61b20d91dce7b21e4d4f626ab93a8f1e2f207da5015590d508cf6c66a65";
+    };
+    outputs = [ "out" ];
+    propagatedBuildInputs = [ CGI CSSDOM ConfigGeneral LWP LocaleCodes NetIP TermReadKey ];
+    meta = {
+      homepage = "https://validator.w3.org/checklink";
+      description = "A tool to check links and anchors in Web pages or full Web sites";
+      license = lib.licenses.w3c;
+    };
+  };
+
+  WWWCurl = buildPerlPackage {
+    pname = "WWW-Curl";
+    version = "4.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-4.17.tar.gz";
+      sha256 = "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj";
+    };
+    patches = [
+      (fetchpatch {
+        url = "https://aur.archlinux.org/cgit/aur.git/plain/curl-7.71.0.patch?h=perl-www-curl&id=261d84887d736cc097abef61164339216fb79180";
+        sha256 = "1hiw5lkflfa93z5d6k8fnnml0r08c653bbvvb8zx6gcrlbrdalfs";
+        name = "WWWCurl-curl-7.71.0.patch";
+      })
+    ];
+    NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-return-type";
+    buildInputs = [ pkgs.curl ];
+    doCheck = false; # performs network access
+  };
+
+  WWWFormUrlEncoded = buildPerlModule {
+     pname = "WWW-Form-UrlEncoded";
+     version = "0.26";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/K/KA/KAZEBURO/WWW-Form-UrlEncoded-0.26.tar.gz";
+       sha256 = "1x4h5m5fkwaa0gbn6zp9mjrhr3r989w8wyrjxiii3dqm3xghnj60";
+     };
+     meta = {
+       description = "parser and builder for application/x-www-form-urlencoded";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+       homepage = "https://github.com/kazeburo/WWW-Form-UrlEncoded";
+     };
+  };
+
+  WWWMechanize = buildPerlPackage {
+    pname = "WWW-Mechanize";
+    version = "2.03";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/O/OA/OALDERS/WWW-Mechanize-2.03.tar.gz";
+      sha256 = "0pl4jc6hmkhzkswka62dij7l0378qvn9dwbh08n54q8xyr6xf79z";
+    };
+    propagatedBuildInputs = [ HTMLForm HTMLTree LWP ];
+    doCheck = false;
+    meta = {
+      homepage = "https://github.com/libwww-perl/WWW-Mechanize";
+      description = "Handy web browsing in a Perl object";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+    buildInputs = [ CGI HTTPServerSimple PathTiny TestDeep TestFatal TestOutput TestWarnings ];
+  };
+
+  WWWMechanizeCGI = buildPerlPackage {
+    pname = "WWW-Mechanize-CGI";
+    version = "0.3";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MR/MRAMBERG/WWW-Mechanize-CGI-0.3.tar.gz";
+      sha256 = "046jm18liq7rwkdawdh9520cnalkfrk26yqryp7xgw71y65lvq61";
+    };
+    propagatedBuildInputs = [ HTTPRequestAsCGI WWWMechanize ];
+    preConfigure = ''
+      substituteInPlace t/cgi-bin/script.cgi \
+        --replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
+    '';
+    meta = {
+      broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/perl534Packages.WWWMechanizeCGI.x86_64-darwin
+    };
+  };
+
+  WWWRobotRules = buildPerlPackage {
+    pname = "WWW-RobotRules";
+    version = "6.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-6.02.tar.gz";
+      sha256 = "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6";
+    };
+    propagatedBuildInputs = [ URI ];
+    meta = {
+      description = "Database of robots.txt-derived permissions";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  WWWTwilioAPI = buildPerlPackage {
+    pname = "WWW-Twilio-API";
+    version = "0.21";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SC/SCOTTW/WWW-Twilio-API-0.21.tar.gz";
+      sha256 = "582db53a091f8da3670c037733314f2510af5e8ee0ba42a0e391e2f2e3ca7734";
+    };
+    prePatch = "rm examples.pl";
+    propagatedBuildInputs = [ LWPProtocolHttps ];
+    meta = {
+      description = "Accessing Twilio's REST API with Perl";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  WWWYoutubeViewer = callPackage ../development/perl-modules/WWW-YoutubeViewer { };
+
+  Want = buildPerlPackage {
+    pname = "Want";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBIN/Want-0.29.tar.gz";
+      sha256 = "1xsjylbxxcbkjazqms49ipi94j1hd2ykdikk29cq7dscil5p9r5l";
+    };
+  };
+
+  Win32ShellQuote = buildPerlPackage {
+    pname = "Win32-ShellQuote";
+    version = "0.003001";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/H/HA/HAARG/Win32-ShellQuote-0.003001.tar.gz";
+      sha256 = "aa74b0e3dc2d41cd63f62f853e521ffd76b8d823479a2619e22edb4049b4c0dc";
+    };
+    meta = {
+      description = "Quote argument lists for Win32";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Workflow = buildPerlModule {
+    pname = "Workflow";
+    version = "1.48";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JO/JONASBN/Workflow-1.48.tar.gz";
+      sha256 = "0bz6gil9mygh5ikh8mf86ids9xb1dbgx9hqc1g68qn9ffsyb012f";
+    };
+    buildInputs = [ DBDMock ListMoreUtils PodCoverageTrustPod TestException TestKwalitee TestPod TestPodCoverage ];
+    propagatedBuildInputs = [ ClassAccessor ClassFactory ClassObservable DBI DataUUID DateTimeFormatStrptime FileSlurp LogDispatch LogLog4perl XMLSimple ];
+    meta = {
+      homepage = "https://github.com/jonasbn/perl-workflow";
+      description = "Simple, flexible system to implement workflows";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  Wx = buildPerlPackage {
+    pname = "Wx";
+    version = "0.9932";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MD/MDOOTSON/Wx-0.9932.tar.gz";
+      sha256 = "0w0vcpk8bmklh16c0z1vxgipnmvdw7cckcmay7k7cihgb99vdz8w";
+    };
+    propagatedBuildInputs = [ AlienWxWidgets ];
+    # Testing requires an X server:
+    #   Error: Unable to initialize GTK, is DISPLAY set properly?"
+    doCheck = false;
+    buildInputs = [ ExtUtilsXSpp ];
+  };
+
+  WxGLCanvas = buildPerlPackage {
+    pname = "Wx-GLCanvas";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MB/MBARBON/Wx-GLCanvas-0.09.tar.gz";
+      sha256 = "1q4gvj4gdx4l8k4mkgiix24p9mdfy1miv7abidf0my3gy2gw5lka";
+    };
+    propagatedBuildInputs = [ pkgs.libGLU Wx ];
+    doCheck = false;
+  };
+
+  X11IdleTime = buildPerlPackage {
+    pname = "X11-IdleTime";
+    version = "0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AW/AWENDT/X11-IdleTime-0.09.tar.gz";
+      sha256 = "0j27cb9yy9ymni8cbiyxplbg086b8lv6b330nwqyx0briq3xrzfq";
+    };
+    buildInputs = [ pkgs.xorg.libXext pkgs.xorg.libXScrnSaver pkgs.xorg.libX11 ];
+    propagatedBuildInputs = [ InlineC ];
+    patchPhase = "sed -ie 's,-L/usr/X11R6/lib/,-L${pkgs.xorg.libX11.out}/lib/ -L${pkgs.xorg.libXext.out}/lib/ -L${pkgs.xorg.libXScrnSaver}/lib/,' IdleTime.pm";
+    meta = {
+      description = "Get the idle time of X11";
+    };
+  };
+
+  X11Protocol = buildPerlPackage {
+    pname = "X11-Protocol";
+    version = "0.56";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMCCAM/X11-Protocol-0.56.tar.gz";
+      sha256 = "1dq89bh6fqv7l5mbffqcismcljpq5f869bx7g8lg698zgindv5ny";
+    };
+    buildInputs = [ pkgs.xlibsWrapper ];
+    NIX_CFLAGS_LINK = "-lX11";
+    doCheck = false; # requires an X server
+  };
+
+  X11ProtocolOther = buildPerlPackage {
+    pname = "X11-Protocol-Other";
+    version = "31";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRYDE/X11-Protocol-Other-31.tar.gz";
+      sha256 = "1x3kvic52jgp2mvd5wzrqrprqi82cdk8l4075v8b33ksvj9mjqiw";
+    };
+    propagatedBuildInputs = [ X11Protocol ];
+    buildInputs = [ EncodeHanExtra ModuleUtil ];
+    meta = {
+      description = "Miscellaneous helpers for X11::Protocol connections.";
+      license = with lib.licenses; [ gpl1Plus gpl3Plus ];
+      homepage = "http://user42.tuxfamily.org/x11-protocol-other/index.html";
+    };
+  };
+
+  X11GUITest = buildPerlPackage {
+    pname = "X11-GUITest";
+    version = "0.28";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CT/CTRONDLP/X11-GUITest-0.28.tar.gz";
+      sha256 = "0jznws68skdzkhgkgcgjlj40qdyh9i75r7fw8bqzy406f19xxvnw";
+    };
+    buildInputs = [ pkgs.xlibsWrapper pkgs.xorg.libXtst pkgs.xorg.libXi ];
+    NIX_CFLAGS_LINK = "-lX11 -lXext -lXtst";
+    doCheck = false; # requires an X server
+  };
+
+  X11XCB = buildPerlPackage {
+    pname = "X11-XCB";
+    version = "0.18";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSTPLBG/X11-XCB-0.18.tar.gz";
+      sha256 = "1cjpghw7cnackw20lbd7yzm222kz5bnrwz52f8ay24d1f4pwrnxf";
+    };
+    patches = [
+      # Pull upstream fix for parallel build failure
+      (fetchpatch {
+        url = "https://github.com/stapelberg/X11-XCB/commit/813608dacdae1ae35c9eb0f171a958617e014520.patch";
+        sha256 = "017f5r4fyryhzgp99lw3csrl21r27hmqv483vp9fdz9xkvrmh743";
+      })
+    ];
+    AUTOMATED_TESTING = false;
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    buildInputs = [ pkgs.xorg.libxcb pkgs.xorg.xcbproto pkgs.xorg.xcbutil pkgs.xorg.xcbutilwm ExtUtilsDepends ExtUtilsPkgConfig TestDeep TestException XSObjectMagic ];
+    propagatedBuildInputs = [ DataDump MouseXNativeTraits XMLDescent XMLSimple ];
+    NIX_CFLAGS_LINK = "-lxcb -lxcb-util -lxcb-xinerama -lxcb-icccm";
+    doCheck = false; # requires an X server
+    meta = {
+      description = "XCB bindings for X";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLCanonicalizeXML = buildPerlPackage {
+    pname = "XML-CanonicalizeXML";
+    version = "0.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SJ/SJZASADA/XML-CanonicalizeXML-0.10.tar.gz";
+      sha256 = "1vl6wbqmq91mc0hkgfwlndbxcv2jm01hj7kpzprw3d6bh144ca77";
+    };
+    buildInputs = [ pkgs.libxml2 ];
+    meta = {
+      description = "Perl extension for inclusive (1.0 and 1.1) and exclusive canonicalization of XML using libxml2";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.sgo ];
+    };
+  };
+
+  XMLDescent = buildPerlModule {
+    pname = "XML-Descent";
+    version = "1.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/A/AN/ANDYA/XML-Descent-1.04.tar.gz";
+      sha256 = "0l5xmw2hd95ypppz3lyvp4sn02ccsikzjwacli3ydxfdz1bbh4d7";
+    };
+    buildInputs = [ TestDifferences ];
+    propagatedBuildInputs = [ XMLTokeParser ];
+    meta = {
+      description = "Recursive descent XML parsing";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLEncoding = buildPerlPackage {
+    pname = "XML-Encoding";
+    version = "2.11";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHAY/XML-Encoding-2.11.tar.gz";
+      sha256 = "a50e41af0a79b882d48816b95681f38a55af1e6a88828dcd96374a8bde2305a1";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+    meta = {
+      description = "A perl module for parsing XML encoding maps";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLDOM = buildPerlPackage {
+    pname = "XML-DOM";
+    version = "1.46";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-DOM-1.46.tar.gz";
+      sha256 = "0phpkc4li43m2g44hdcvyxzy9pymqwlqhh5hwp2xc0cv8l5lp8lb";
+    };
+    propagatedBuildInputs = [ XMLRegExp libxml_perl ];
+  };
+
+  XMLFeedPP = buildPerlPackage {
+    pname = "XML-FeedPP";
+    version = "0.95";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/XML-FeedPP-0.95.tar.gz";
+      sha256 = "1x5806xwmbqxr1dkdhalb6d7n31s3ya776klkai7c2x6y6drbhwh";
+    };
+    propagatedBuildInputs = [ XMLTreePP ];
+    meta = {
+      description = "Parse/write/merge/edit RSS/RDF/Atom syndication feeds";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLFilterBufferText = buildPerlPackage {
+    pname = "XML-Filter-BufferText";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RB/RBERJON/XML-Filter-BufferText-1.01.tar.gz";
+      sha256 = "8fd2126d3beec554df852919f4739e689202cbba6a17506e9b66ea165841a75c";
+    };
+    doCheck = false;
+  };
+
+  XMLFilterXInclude = buildPerlPackage {
+    pname = "XML-Filter-XInclude";
+    version = "1.0";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MS/MSERGEANT/XML-Filter-XInclude-1.0.tar.gz";
+      sha256 = "98746f3c1f6f049491fec203d455bb8f8c9c6e250f041904dda5d78e21187f93";
+    };
+    doCheck = false;
+  };
+
+  XMLFilterSort = buildPerlPackage {
+    pname = "XML-Filter-Sort";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRANTM/XML-Filter-Sort-1.01.tar.gz";
+      sha256 = "sha256-UQWF85pJFszV+o1UXpYXnJHq9vx8l6QBp1aOhBFi+l8=";
+    };
+    nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+    propagatedBuildInputs = [
+      XMLSAX
+      XMLSAXWriter
+    ];
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      shortenPerlShebang $out/bin/xmlsort
+    '';
+  };
+
+  XMLGrove = buildPerlPackage {
+    pname = "XML-Grove";
+    version = "0.46alpha";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KM/KMACLEOD/XML-Grove-0.46alpha.tar.gz";
+      sha256 = "05yis1ms7cgwjh57k57whrmalb3ha0bjr9hyvh7cnadcyiynvdpw";
+    };
+    buildInputs = [ pkgs.libxml2 ];
+    propagatedBuildInputs = [ libxml_perl ];
+
+    #patch from https://bugzilla.redhat.com/show_bug.cgi?id=226285
+    patches = [ ../development/perl-modules/xml-grove-utf8.patch ];
+    meta = {
+      description = "Perl-style XML objects";
+    };
+  };
+
+  XMLHandlerYAWriter = buildPerlPackage {
+    pname = "XML-Handler-YAWriter";
+    version = "0.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KR/KRAEHE/XML-Handler-YAWriter-0.23.tar.gz";
+      sha256 = "11d45a1sz862va9rry3p2m77pwvq3kpsvgwhc5ramh9mbszbnk77";
+    };
+    propagatedBuildInputs = [ libxml_perl ];
+    meta = {
+      description = "Yet another Perl SAX XML Writer";
+    };
+  };
+
+  XMLLibXML = buildPerlPackage {
+    pname = "XML-LibXML";
+    version = "2.0207";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/XML-LibXML-2.0207.tar.gz";
+      sha256 = "sha256-kDQ2yYWYdb71WTJDquhc7TKa0PtLV7v0WXXjJUfFDBU=";
+    };
+    SKIP_SAX_INSTALL = 1;
+    buildInputs = [ AlienBuild AlienLibxml2 ]
+      ++ lib.optionals stdenv.isDarwin (with pkgs; [ libiconv zlib ]);
+    propagatedBuildInputs = [ XMLSAX ];
+  };
+
+  XMLLibXMLSimple = buildPerlPackage {
+    pname = "XML-LibXML-Simple";
+    version = "1.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MARKOV/XML-LibXML-Simple-1.01.tar.gz";
+      sha256 = "cd98c8104b70d7672bfa26b4513b78adf2b4b9220e586aa8beb1a508500365a6";
+    };
+    propagatedBuildInputs = [ XMLLibXML ];
+    meta = {
+      description = "XML::LibXML based XML::Simple clone";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLLibXSLT = buildPerlPackage {
+    pname = "XML-LibXSLT";
+    version = "1.99";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.99.tar.gz";
+      sha256 = "1w7pn0wb88nma6biy4h05ak3j4ykma6vz1wbkrxy8qgvfyl1fzhj";
+    };
+    buildInputs = [ pkgs.pkg-config pkgs.zlib pkgs.libxml2 pkgs.libxslt ];
+    propagatedBuildInputs = [ XMLLibXML ];
+  };
+
+  XMLMini = buildPerlPackage {
+    pname = "XML-Mini";
+    version = "1.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PD/PDEEGAN/XML-Mini-1.38.tar.gz";
+      sha256 = "af803d38036a3184e124a682e5466f1bc107f48a89ef35b0c7647e11a073fe2d";
+    };
+    meta = {
+      license = "unknown";
+    };
+  };
+
+  XMLNamespaceSupport = buildPerlPackage {
+    pname = "XML-NamespaceSupport";
+    version = "1.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-1.12.tar.gz";
+      sha256 = "1vz5pbi4lm5fhq2slrs2hlp6bnk29863abgjlcx43l4dky2rbsa7";
+    };
+  };
+
+  XMLParser = buildPerlPackage {
+    pname = "XML-Parser";
+    version = "2.46";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz";
+      sha256 = "0pai3ik47q7rgnix9644c673fwydz52gqkxr9kxwq765j4j36cfk";
+    };
+    patches = [ ../development/perl-modules/xml-parser-0001-HACK-Assumes-Expat-paths-are-good.patch ];
+    postPatch = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+      substituteInPlace Expat/Makefile.PL --replace 'use English;' '#'
+    '' + 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";
+    propagatedBuildInputs = [ LWP ];
+  };
+
+  XMLParserLite = buildPerlPackage {
+    pname = "XML-Parser-Lite";
+    version = "0.722";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/XML-Parser-Lite-0.722.tar.gz";
+      sha256 = "1vk3jwh1kfcsmc5kvxzqdnb1cllvf0yf27fg0ra0w6jkw4ks143g";
+    };
+    buildInputs = [ TestRequires ];
+    meta = {
+      description = "Lightweight pure-perl XML Parser (based on regexps)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLXPath = buildPerlPackage {
+    pname = "XML-XPath";
+    version = "1.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MA/MANWAR/XML-XPath-1.44.tar.gz";
+      sha256 = "1cc9110705165dc09dd09974dd7c0b6709c9351d6b6b1cef5a711055f891dd0f";
+    };
+    buildInputs = [ PathTiny ];
+    propagatedBuildInputs = [ XMLParser ];
+    meta = {
+      description = "Modules for parsing and evaluating XPath statements";
+      license = lib.licenses.artistic2;
+    };
+  };
+
+  XMLXPathEngine = buildPerlPackage {
+    pname = "XML-XPathEngine";
+    version = "0.14";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIROD/XML-XPathEngine-0.14.tar.gz";
+      sha256 = "0r72na14bmsxfd16s9nlza155amqww0k8wsa9x2a3sqbpp5ppznj";
+    };
+    meta = {
+      description = "A re-usable XPath engine for DOM-like trees";
+    };
+  };
+
+  XMLRegExp = buildPerlPackage {
+    pname = "XML-RegExp";
+    version = "0.04";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-RegExp-0.04.tar.gz";
+      sha256 = "0m7wj00a2kik7wj0azhs1zagwazqh3hlz4255n75q21nc04r06fz";
+    };
+  };
+
+  XMLRPCLite = buildPerlPackage {
+    pname = "XMLRPC-Lite";
+    version = "0.717";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PH/PHRED/XMLRPC-Lite-0.717.tar.gz";
+      sha256 = "0925md6jhzgpsibwgny4my461b2wngm8dhxlcry8pbqzrgrab7rs";
+    };
+    propagatedBuildInputs = [ SOAPLite ];
+    # disable tests that require network
+    preCheck = "rm t/{26-xmlrpc.t,37-mod_xmlrpc.t}";
+    meta = {
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      description = "Client and server implementation of XML-RPC protocol";
+    };
+  };
+
+  XMLRSS = buildPerlModule {
+    pname = "XML-RSS";
+    version = "1.62";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SH/SHLOMIF/XML-RSS-1.62.tar.gz";
+      sha256 = "0klb8ghd405pdkmn25lp3i4j2lfydz8w581sk51p3zy788s0c9yk";
+    };
+    propagatedBuildInputs = [ DateTimeFormatMail DateTimeFormatW3CDTF XMLParser ];
+    meta = {
+      homepage = "http://perl-rss.sourceforge.net/";
+      description = "Creates and updates RSS files";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLRules = buildPerlModule {
+    pname = "XML-Rules";
+    version = "1.16";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JE/JENDA/XML-Rules-1.16.tar.gz";
+      sha256 = "3788255c07afe4195a0de72ce050652320d817528ff2d10c611f6e392043868b";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+    meta = {
+      description =
+        "Parse XML and specify what and how to keep/process for individual tags";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLSAX = buildPerlPackage {
+    pname = "XML-SAX";
+    version = "1.02";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRANTM/XML-SAX-1.02.tar.gz";
+      sha256 = "0am13vnv8qsjafr5ljakwnkhlwpk15sga02z8mxsg9is0j3w61j5";
+    };
+    propagatedBuildInputs = [ XMLNamespaceSupport XMLSAXBase ];
+    postInstall = ''
+      perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::SAX::PurePerl))->save_parsers()"
+      '';
+  };
+
+  XMLSAXBase = buildPerlPackage {
+    pname = "XML-SAX-Base";
+    version = "1.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRANTM/XML-SAX-Base-1.09.tar.gz";
+      sha256 = "66cb355ba4ef47c10ca738bd35999723644386ac853abbeb5132841f5e8a2ad0";
+    };
+    meta = {
+      description = "Base class for SAX Drivers and Filters";
+      homepage = "https://github.com/grantm/XML-SAX-Base";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLSAXExpat = buildPerlPackage {
+     pname = "XML-SAX-Expat";
+     version = "0.51";
+     src = fetchurl {
+       url = "mirror://cpan/authors/id/B/BJ/BJOERN/XML-SAX-Expat-0.51.tar.gz";
+       sha256 = "0gy8h2bvvvlxychwsb99ikdh5cqpk6sqc073jk2b4zffs09n40ac";
+     };
+     propagatedBuildInputs = [ XMLParser XMLSAX ];
+     # Avoid creating perllocal.pod, which contains a timestamp
+     installTargets = [ "pure_install" ];
+     meta = {
+       description = "SAX Driver for Expat";
+       license = with lib.licenses; [ artistic1 gpl1Plus ];
+     };
+  };
+
+  XMLSAXWriter = buildPerlPackage {
+    pname = "XML-SAX-Writer";
+    version = "0.57";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERIGRIN/XML-SAX-Writer-0.57.tar.gz";
+      sha256 = "3d61d07ef43b0126f5b4de4f415a256fa859fa88dc4fdabaad70b7be7c682cf0";
+    };
+    propagatedBuildInputs = [ XMLFilterBufferText XMLNamespaceSupport XMLSAXBase ];
+    meta = {
+      homepage = "https://github.com/perigrin/xml-sax-writer";
+      description = "SAX2 XML Writer";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLSemanticDiff = buildPerlModule {
+    pname = "XML-SemanticDiff";
+    version = "1.0007";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PERIGRIN/XML-SemanticDiff-1.0007.tar.gz";
+      sha256 = "1xd00821y795fy2rag8aizb5wsbbzfxgmdf9qwpvdxn3pgpyzz85";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+  };
+
+  XMLSimple = buildPerlPackage {
+    pname = "XML-Simple";
+    version = "2.25";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.25.tar.gz";
+      sha256 = "1y6vh328zrh085d40852v4ij2l4g0amxykswxd1nfhd2pspds7sk";
+    };
+    propagatedBuildInputs = [ XMLSAXExpat ];
+  };
+
+  XMLTokeParser = buildPerlPackage {
+    pname = "XML-TokeParser";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PO/PODMASTER/XML-TokeParser-0.05.tar.gz";
+      sha256 = "1hnpwb3lh6cbgwvjjgqzcp6jm4mp612qn6ili38adc9nhkwv8fc5";
+    };
+    propagatedBuildInputs = [ XMLParser ];
+    meta = {
+      description = "Simplified interface to XML::Parser";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLTreePP = buildPerlPackage {
+    pname = "XML-TreePP";
+    version = "0.43";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/K/KA/KAWASAKI/XML-TreePP-0.43.tar.gz";
+      sha256 = "7fbe2d6430860059894aeeebf75d4cacf1bf8d7b75294eb87d8e1502f81bd760";
+    };
+    propagatedBuildInputs = [ LWP ];
+    meta = {
+      description = "Pure Perl implementation for parsing/writing XML documents";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XMLTwig = buildPerlPackage {
+    pname = "XML-Twig";
+    version = "3.52";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIROD/XML-Twig-3.52.tar.gz";
+      sha256 = "1bc0hrz4jp6199hi29sdxmb9gyy45whla9hd19yqfasgq8k5ixzy";
+    };
+    postInstall = ''
+      mkdir -p $out/bin
+      cp tools/xml_grep/xml_grep $out/bin
+    '';
+    propagatedBuildInputs = [ XMLParser ];
+    doCheck = false;  # requires lots of extra packages
+  };
+
+  XMLValidatorSchema = buildPerlPackage {
+    pname = "XML-Validator-Schema";
+    version = "1.10";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SA/SAMTREGAR/XML-Validator-Schema-1.10.tar.gz";
+      sha256 = "6142679580150a891f7d32232b5e31e2b4e5e53e8a6fa9cbeecb5c23814f1422";
+    };
+    propagatedBuildInputs = [ TreeDAGNode XMLFilterBufferText XMLSAX ];
+    meta = {
+      description = "Validate XML against a subset of W3C XML Schema";
+    };
+  };
+
+  XMLWriter = buildPerlPackage {
+    pname = "XML-Writer";
+    version = "0.900";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JO/JOSEPHW/XML-Writer-0.900.tar.gz";
+      sha256 = "07qd806kcs7si7qakx3x5p68xq2jdmkxdrns987kaayg7syzbj3k";
+    };
+  };
+
+  XSObjectMagic = buildPerlPackage {
+    pname = "XS-Object-Magic";
+    version = "0.05";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/XS-Object-Magic-0.05.tar.gz";
+      sha256 = "0njyy4y0zax4zz55y82dlm9cly1pld1lcxb281s12bp9rrhf9j9x";
+    };
+    buildInputs = [ ExtUtilsDepends TestFatal TestSimple13 ];
+    meta = {
+      description = "XS pointer backed objects using sv_magic";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  XSParseKeyword = buildPerlModule {
+    pname = "XS-Parse-Keyword";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/XS-Parse-Keyword-0.12.tar.gz";
+      sha256 = "0crwhcw9ciqndvwvhycd93m6jgyhi77yyj4vi9xfyglpv84p3y68";
+    };
+    buildInputs = [ ExtUtilsCChecker ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "XS functions to assist in parsing keyword syntax";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  XSParseSublike = buildPerlModule {
+    pname = "XS-Parse-Sublike";
+    version = "0.12";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PE/PEVANS/XS-Parse-Sublike-0.12.tar.gz";
+      sha256 = "08kpia48f1rqc44rvbns97h3jyy2y5c8qlkh4a95v1m0yr5cb22s";
+    };
+    buildInputs = [ TestFatal ];
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "XS functions to assist in parsing sub-like syntax";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.zakame ];
+    };
+  };
+
+  XXX = buildPerlPackage {
+    pname = "XXX";
+    version = "0.35";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/XXX-0.35.tar.gz";
+      sha256 = "1azk2h3d2vxc84zpa34gr0dvhvf5qkwbaidy3ks0gkkx9463crm6";
+    };
+    propagatedBuildInputs = [ YAMLPP ];
+    meta = {
+      description = "See Your Data in the Nude";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+      homepage = "https://github.com/ingydotnet/xxx-pm";
+    };
+  };
+
+  YAML = buildPerlPackage {
+    pname = "YAML";
+    version = "1.30";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TINITA/YAML-1.30.tar.gz";
+      sha256 = "1kbrfksjg4k4vmx1i337m5n69m00m0m5bgsh61c15bzzrgbacc2h";
+    };
+
+    buildInputs = [ TestBase TestDeep TestYAML ];
+
+    meta = {
+      homepage = "https://github.com/ingydotnet/yaml-pm";
+      description = "YAML Ain't Markup Language (tm)";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  YAMLOld = buildPerlPackage {
+    pname = "YAML-Old";
+    version = "1.23";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/I/IN/INGY/YAML-Old-1.23.tar.gz";
+      sha256 = "fa546fcd9acc5a39bc8871902f7fc1eba50e7dc781c5cd5c0abf1aece6d17ecd";
+    };
+    buildInputs = [ TestYAML TestBase ];
+    meta = {
+      homepage = "https://github.com/ingydotnet/yaml-old-pm";
+      description = "Old YAML.pm Legacy Code";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  YAMLSyck = buildPerlPackage {
+    pname = "YAML-Syck";
+    version = "1.34";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TO/TODDR/YAML-Syck-1.34.tar.gz";
+      sha256 = "0na1wg3d7ykzy5i44w6i1s37ymq6x0cvcc9gzvmri9xxmv65d4fc";
+    };
+    perlPreHook = lib.optionalString stdenv.isDarwin "export LD=$CC";
+    meta = {
+      description = "Fast, lightweight YAML loader and dumper";
+      license = lib.licenses.mit;
+    };
+  };
+
+  YAMLTiny = buildPerlPackage {
+    pname = "YAML-Tiny";
+    version = "1.73";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/E/ET/ETHER/YAML-Tiny-1.73.tar.gz";
+      sha256 = "0i3p4nz8ysrsrs6vlzc6gkjcfpcaf05xjc7lwbjkw7lg5shmycdw";
+    };
+  };
+
+  YAMLLibYAML = buildPerlPackage {
+    pname = "YAML-LibYAML";
+    version = "0.82";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TINITA/YAML-LibYAML-0.82.tar.gz";
+      sha256 = "0j7yhxkaasccynl5iq1cqpf4x253p4bi5wsq6qbwwv2wjsiwgd02";
+    };
+  };
+
+  YAMLPP = buildPerlPackage {
+    pname = "YAML-PP";
+    version = "0.026";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/T/TI/TINITA/YAML-PP-0.026.tar.gz";
+      sha256 = "1ss5b8ny00pvg6bfx562hy7z5hj02w1yh224qpn6dsgk3ikqx1ab";
+    };
+    buildInputs = [ TestDeep TestWarn ];
+    meta = {
+      description = "YAML Framework";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  WebMachine = buildPerlPackage {
+    pname = "Web-Machine";
+    version = "0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DR/DROLSKY/Web-Machine-0.17.tar.gz";
+      sha256 = "f139d2b3114c549e91847daaab8b75cb699e57daf5bbf0dbd13293f33fe5e22a";
+    };
+    buildInputs = [ NetHTTP TestFailWarnings TestFatal ];
+    propagatedBuildInputs = [ HTTPHeadersActionPack HTTPMessage HashMultiValue IOHandleUtil ModuleRuntime Plack SubExporter TryTiny ];
+    meta = {
+      homepage = "http://metacpan.org/release/Web-Machine";
+      description = "A Perl port of Webmachine";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  WebServiceLinode = buildPerlModule {
+    pname = "WebService-Linode";
+    version = "0.29";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MI/MIKEGRB/WebService-Linode-0.29.tar.gz";
+      sha256 = "103aab245304f08e9e87ac7bc884ddb44a630de6bac077dc921f716d71154922";
+    };
+    buildInputs = [ ModuleBuildTiny ];
+    propagatedBuildInputs = [ JSON LWPProtocolHttps ];
+    meta = {
+      homepage = "https://github.com/mikegrb/WebService-Linode";
+      description = "Perl Interface to the Linode.com API";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+} // 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
+  DevelSelfStubber = null; # part of Perl 5.22
+  Digest = null; # part of Perl 5.22
+  Exporter = null; # part of Perl 5.22
+  I18NCollate = null; # part of Perl 5.22
+  lib_ = null; # part of Perl 5.22
+  LocaleMaketextSimple = null; # part of Perl 5.22
+  MathComplex = null; # part of Perl 5.22
+  MIMEBase64 = null; # part of Perl 5.22
+  PerlIOviaQuotedPrint = null; # part of Perl 5.22
+  PodEscapes = null; # part of Perl 5.22
+  Safe = null; # part of Perl 5.22
+  SearchDict = null; # part of Perl 5.22
+  Test = null; # part of Perl 5.22
+  TextAbbrev = null; # part of Perl 5.22
+  TextTabsWrap = null; # part of Perl 5.22
+  DigestSHA = null;
+  "if" = null;
+  TestSimple = null;
+  AttributeHandlers = null; # part of Perl 5.26
+  base = null; # part of Perl 5.26
+  CPANMeta = null; # part of Perl 5.26
+  CPANMetaRequirements = null; # part of Perl 5.26
+  CPANMetaYAML = null; # part of Perl 5.26
+  DigestMD5 = null; # part of Perl 5.26
+  LocaleMaketext = null; # part of Perl 5.26
+  ModuleLoadConditional = null; # part of Perl 5.26
+  ModuleMetadata = null; # part of Perl 5.26
+  PerlOSType = null; # part of Perl 5.26
+  PodUsage = null; # part of Perl 5.26
+  TermANSIColor = null; # part of Perl 5.26
+  TermCap = null; # part of Perl 5.26
+  ThreadSemaphore = null; # part of Perl 5.26
+  UnicodeNormalize = null; # part of Perl 5.26
+  XSLoader = null; # part of Perl 5.26
+
+  Carp = null; # part of Perl 5.28
+  ExtUtilsCBuilder = null; # part of Perl 5.28
+  ExtUtilsParseXS = null; # part of Perl 5.28
+  FilterSimple = null; # part of Perl 5.28
+  IOSocketIP = null; # part of Perl 5.28
+  SelfLoader = null; # part of Perl 5.28
+  Socket = null; # part of Perl 5.28
+  TestHarness = null; # part of Perl 5.28
+  threads = null; # part of Perl 5.28
+  TimeHiRes = null; # part of Perl 5.28
+  UnicodeCollate = null; # part of Perl 5.28
+  ModuleCoreList = null; # part of Perl 5.28.2
+
+  bignum = null; # part of Perl 5.30.3
+  DataDumper = null; # part of Perl 5.30.3
+  ExtUtilsManifest = null; # part of Perl 5.30.3
+  FileTemp = null; # part of Perl 5.30.3
+  MathBigRat = null; # part of Perl 5.30.3
+  Storable = null; # part of Perl 5.30.3
+  threadsshared = null; # part of Perl 5.30.3
+  ThreadQueue = null; # part of Perl 5.30.3
+
+  ArchiveZip_1_53 = self.ArchiveZip;
+  Autobox = self.autobox;
+  CommonSense = self.commonsense; # For backwards compatibility.
+  if_ = self."if"; # For backwards compatibility.
+  Log4Perl = self.LogLog4perl; # For backwards compatibility.
+  MouseXGetOpt = self.MouseXGetopt;
+  NamespaceAutoclean = self.namespaceautoclean; # Deprecated.
+  NamespaceClean = self.namespaceclean; # Deprecated.
+  CatalystPluginUnicodeEncoding = self.CatalystRuntime;
+  ClassAccessorFast = self.ClassAccessor;
+  ClassMOP = self.Moose;
+  CompressZlib = self.IOCompress;
+  constantdefer = self.constant-defer;
+  DigestHMAC_SHA1 = self.DigestHMAC;
+  DistZillaPluginNoTabsTests = self.DistZillaPluginTestNoTabs;
+  EmailMIMEModifier = self.EmailMIME;
+  ExtUtilsCommand = self.ExtUtilsMakeMaker;
+  IOstringy = self.IOStringy;
+  libintl_perl = self.libintl-perl;
+  libintlperl = self.libintl-perl;
+  LWPProtocolconnect = self.LWPProtocolConnect;
+  LWPProtocolhttps = self.LWPProtocolHttps;
+  LWPUserAgent = self.LWP;
+  MIMEtools = self.MIMETools;
+  NetLDAP = self.perlldap;
+  NetSMTP = self.libnet;
+  OLEStorageLight = self.OLEStorage_Lite; # For backwards compatibility. Please use OLEStorage_Lite instead.
+  ParseCPANMeta = self.CPANMeta;
+  TestMoose = self.Moose;
+  TestMore = self.TestSimple;
+  TestTester = self.TestSimple;
+  Testuseok = self.TestSimple;
+  SubExporterUtil = self.SubExporter;
+  version = self.Version;
+
+  Gtk2GladeXML = throw "Gtk2GladeXML has been removed"; # 2022-01-15
+}; in self
diff --git a/nixpkgs/pkgs/top-level/php-packages.nix b/nixpkgs/pkgs/top-level/php-packages.nix
new file mode 100644
index 000000000000..1da6e934c24b
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/php-packages.nix
@@ -0,0 +1,654 @@
+{ stdenv
+, lib
+, pkgs
+, fetchgit
+, phpPackage
+, autoconf
+, pkg-config
+, aspell
+, bzip2
+, curl
+, cyrus_sasl
+, enchant1
+, fetchpatch
+, freetds
+, freetype
+, gd
+, gettext
+, gmp
+, html-tidy
+, icu64
+, libXpm
+, libedit
+, libffi
+, libiconv
+, libjpeg
+, libpng
+, libsodium
+, libwebp
+, libxml2
+, libxslt
+, libzip
+, net-snmp
+, oniguruma
+, openldap
+, openssl
+, pam
+, pcre2
+, postgresql
+, re2c
+, readline
+, rsync
+, sqlite
+, unixODBC
+, uwimap
+, valgrind
+, zlib
+}:
+
+lib.makeScope pkgs.newScope (self: with self; {
+  buildPecl = import ../build-support/build-pecl.nix {
+    php = php.unwrapped;
+    inherit lib;
+    inherit (pkgs) stdenv autoreconfHook fetchurl re2c;
+  };
+
+  # Wrap mkDerivation to prepend pname with "php-" to make names consistent
+  # with how buildPecl does it and make the file easier to overview.
+  mkDerivation = { pname, ... }@args: pkgs.stdenv.mkDerivation (args // {
+    pname = "php-${pname}";
+  });
+
+  # Function to build an extension which is shipped as part of the php
+  # source, based on the php version.
+  #
+  # Name passed is the name of the extension and is automatically used
+  # to add the configureFlag "--enable-${name}", which can be overriden.
+  #
+  # Build inputs is used for extra deps that may be needed. And zendExtension
+  # will mark the extension as a zend extension or not.
+  mkExtension =
+    { name
+    , configureFlags ? [ "--enable-${name}" ]
+    , internalDeps ? [ ]
+    , postPhpize ? ""
+    , buildInputs ? [ ]
+    , zendExtension ? false
+    , doCheck ? true
+    , ...
+    }@args: stdenv.mkDerivation ((builtins.removeAttrs args [ "name" ]) // {
+      pname = "php-${name}";
+      extensionName = name;
+
+      inherit (php.unwrapped) version src;
+      sourceRoot = "php-${php.version}/ext/${name}";
+
+      enableParallelBuilding = true;
+      nativeBuildInputs = [ php.unwrapped autoconf pkg-config re2c ];
+      inherit configureFlags internalDeps buildInputs
+        zendExtension doCheck;
+
+      prePatch = "pushd ../..";
+      postPatch = "popd";
+
+      preConfigure = ''
+        nullglobRestore=$(shopt -p nullglob)
+        shopt -u nullglob   # To make ?-globbing work
+
+        # Some extensions have a config0.m4 or config9.m4
+        if [ -f config?.m4 ]; then
+          mv config?.m4 config.m4
+        fi
+
+        $nullglobRestore
+        phpize
+        ${postPhpize}
+        ${lib.concatMapStringsSep "\n"
+          (dep: "mkdir -p ext; ln -s ${dep.dev}/include ext/${dep.extensionName}")
+          internalDeps}
+      '';
+      checkPhase = ''
+        runHook preCheck
+        NO_INTERACTON=yes SKIP_PERF_SENSITIVE=yes make test
+        runHook postCheck
+      '';
+      outputs = [ "out" "dev" ];
+      installPhase = ''
+        mkdir -p $out/lib/php/extensions
+        cp modules/${name}.so $out/lib/php/extensions/${name}.so
+        mkdir -p $dev/include
+        ${rsync}/bin/rsync -r --filter="+ */" \
+                              --filter="+ *.h" \
+                              --filter="- *" \
+                              --prune-empty-dirs \
+                              . $dev/include/
+      '';
+
+      meta = {
+        description = "PHP upstream extension: ${name}";
+        inherit (php.meta) maintainers homepage license;
+      };
+    });
+
+  php = phpPackage;
+
+  # This is a set of interactive tools based on PHP.
+  tools = {
+    box = callPackage ../development/php-packages/box { };
+
+    composer = callPackage ../development/php-packages/composer { };
+
+    deployer = callPackage ../development/php-packages/deployer { };
+
+    grumphp = callPackage ../development/php-packages/grumphp { };
+
+    phing = callPackage ../development/php-packages/phing { };
+
+    phive = callPackage ../development/php-packages/phive { };
+
+    php-cs-fixer = callPackage ../development/php-packages/php-cs-fixer { };
+
+    php-parallel-lint = callPackage ../development/php-packages/php-parallel-lint { };
+
+    phpcbf = callPackage ../development/php-packages/phpcbf { };
+
+    phpcs = callPackage ../development/php-packages/phpcs { };
+
+    phpmd = callPackage ../development/php-packages/phpmd { };
+
+    phpstan = callPackage ../development/php-packages/phpstan { };
+
+    psalm = callPackage ../development/php-packages/psalm { };
+
+    psysh = callPackage ../development/php-packages/psysh { };
+  };
+
+
+
+  # This is a set of PHP extensions meant to be used in php.buildEnv
+  # or php.withExtensions to extend the functionality of the PHP
+  # interpreter.
+  extensions = {
+    amqp = callPackage ../development/php-packages/amqp { };
+
+    apcu = callPackage ../development/php-packages/apcu { };
+
+    apcu_bc = callPackage ../development/php-packages/apcu_bc { };
+
+    ast = callPackage ../development/php-packages/ast { };
+
+    blackfire = pkgs.callPackage ../development/tools/misc/blackfire/php-probe.nix { inherit php; };
+
+    couchbase = callPackage ../development/php-packages/couchbase { };
+
+    ds = callPackage ../development/php-packages/ds { };
+
+    event = callPackage ../development/php-packages/event { };
+
+    gnupg = callPackage ../development/php-packages/gnupg { };
+
+    igbinary = callPackage ../development/php-packages/igbinary { };
+
+    imagick = callPackage ../development/php-packages/imagick { };
+
+    mailparse = callPackage ../development/php-packages/mailparse { };
+
+    maxminddb = callPackage ../development/php-packages/maxminddb { };
+
+    memcached = callPackage ../development/php-packages/memcached { };
+
+    mongodb = callPackage ../development/php-packages/mongodb { };
+
+    oci8 = callPackage ../development/php-packages/oci8 ({
+      version = "2.2.0";
+      sha256 = "0jhivxj1nkkza4h23z33y7xhffii60d7dr51h1czjk10qywl7pyd";
+    } // lib.optionalAttrs (lib.versionAtLeast php.version "8.0") {
+      version = "3.0.1";
+      sha256 = "108ds92620dih5768z19hi0jxfa7wfg5hdvyyvpapir87c0ap914";
+    });
+
+    pdlib = callPackage ../development/php-packages/pdlib { };
+
+    pcov = callPackage ../development/php-packages/pcov { };
+
+    pdo_oci = buildPecl rec {
+      inherit (php.unwrapped) src version;
+
+      pname = "pdo_oci";
+      sourceRoot = "php-${version}/ext/pdo_oci";
+
+      buildInputs = [ pkgs.oracle-instantclient ];
+      configureFlags = [ "--with-pdo-oci=instantclient,${pkgs.oracle-instantclient.lib}/lib" ];
+
+      internalDeps = [ php.extensions.pdo ];
+
+      postPatch = ''
+        sed -i -e 's|OCISDKMANINC=`.*$|OCISDKMANINC="${pkgs.oracle-instantclient.dev}/include"|' config.m4
+      '';
+
+      meta.maintainers = lib.teams.php.members;
+    };
+
+    pdo_sqlsrv = callPackage ../development/php-packages/pdo_sqlsrv { };
+
+    php_excel = callPackage ../development/php-packages/php_excel { };
+
+    pinba = callPackage ../development/php-packages/pinba { };
+
+    protobuf = callPackage ../development/php-packages/protobuf { };
+
+    rdkafka = callPackage ../development/php-packages/rdkafka { };
+
+    redis = callPackage ../development/php-packages/redis { };
+
+    smbclient = callPackage ../development/php-packages/smbclient { };
+
+    snuffleupagus = callPackage ../development/php-packages/snuffleupagus { };
+
+    sqlsrv = callPackage ../development/php-packages/sqlsrv { };
+
+    swoole = callPackage ../development/php-packages/swoole { };
+
+    xdebug = callPackage ../development/php-packages/xdebug { };
+
+    yaml = callPackage ../development/php-packages/yaml { };
+  } // (
+    let
+      # This list contains build instructions for different modules that one may
+      # want to build.
+      #
+      # These will be passed as arguments to mkExtension above.
+      extensionData = [
+        { name = "bcmath"; }
+        { name = "bz2"; buildInputs = [ bzip2 ]; configureFlags = [ "--with-bz2=${bzip2.dev}" ]; }
+        { name = "calendar"; }
+        { name = "ctype"; }
+        {
+          name = "curl";
+          buildInputs = [ curl ];
+          configureFlags = [ "--with-curl=${curl.dev}" ];
+          doCheck = false;
+        }
+        { name = "dba"; }
+        {
+          name = "dom";
+          buildInputs = [ libxml2 ];
+          configureFlags = [ "--enable-dom" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+        }
+        {
+          name = "enchant";
+          buildInputs = [ enchant1 ];
+          configureFlags = [ "--with-enchant=${enchant1}" ];
+          # enchant1 doesn't build on darwin.
+          enable = (!stdenv.isDarwin);
+          doCheck = false;
+        }
+        { name = "exif"; doCheck = false; }
+        { name = "ffi"; buildInputs = [ libffi ]; enable = lib.versionAtLeast php.version "7.4"; }
+        { name = "fileinfo"; buildInputs = [ pcre2 ]; }
+        { name = "filter"; buildInputs = [ pcre2 ]; }
+        { name = "ftp"; buildInputs = [ openssl ]; }
+        {
+          name = "gd";
+          buildInputs = [ zlib gd ];
+          configureFlags = [
+            "--enable-gd"
+            "--with-external-gd=${gd.dev}"
+            "--enable-gd-jis-conv"
+          ];
+          doCheck = false;
+          enable = lib.versionAtLeast php.version "7.4";
+        }
+        {
+          name = "gd";
+          buildInputs = [ zlib gd libXpm ];
+          configureFlags = [
+            "--with-gd=${gd.dev}"
+            "--with-freetype-dir=${freetype.dev}"
+            "--with-jpeg-dir=${libjpeg.dev}"
+            "--with-png-dir=${libpng.dev}"
+            "--with-webp-dir=${libwebp}"
+            "--with-xpm-dir=${libXpm.dev}"
+            "--with-zlib-dir=${zlib.dev}"
+            "--enable-gd-jis-conv"
+          ];
+          doCheck = false;
+          enable = lib.versionOlder php.version "7.4";
+        }
+        {
+          name = "gettext";
+          buildInputs = [ gettext ];
+          patches = lib.optionals (lib.versionOlder php.version "7.4") [
+            (fetchpatch {
+              url = "https://github.com/php/php-src/commit/632b6e7aac207194adc3d0b41615bfb610757f41.patch";
+              sha256 = "0xn3ivhc4p070vbk5yx0mzj2n7p04drz3f98i77amr51w0vzv046";
+            })
+          ];
+          postPhpize = ''substituteInPlace configure --replace 'as_fn_error $? "Cannot locate header file libintl.h" "$LINENO" 5' ':' '';
+          configureFlags = [ "--with-gettext=${gettext}" ];
+        }
+        {
+          name = "gmp";
+          buildInputs = [ gmp ];
+          configureFlags = [ "--with-gmp=${gmp.dev}" ];
+        }
+        { name = "hash"; enable = lib.versionOlder php.version "7.4"; }
+        {
+          name = "iconv";
+          configureFlags = [
+            "--with-iconv${lib.optionalString stdenv.isDarwin "=${libiconv}"}"
+          ];
+          patches = lib.optionals (lib.versionOlder php.version "8.0") [
+            # Header path defaults to FHS location, preventing the configure script from detecting errno support.
+            (fetchpatch {
+              url = "https://github.com/fossar/nix-phps/raw/263861a8c9bdafd7abe44db6db4ef0179643680c/pkgs/iconv-header-path.patch";
+              sha256 = "7GHnEUu+hcsQ4h3itDwk6p46ZKfib9JZ2XpWlXrdn6E=";
+            })
+          ];
+          doCheck = false;
+        }
+        {
+          name = "imap";
+          buildInputs = [ uwimap openssl pam pcre2 ];
+          configureFlags = [ "--with-imap=${uwimap}" "--with-imap-ssl" ];
+          # uwimap doesn't build on darwin.
+          enable = (!stdenv.isDarwin);
+        }
+        {
+          name = "intl";
+          buildInputs = [ icu64 ];
+          patches = lib.optionals (lib.versionOlder php.version "7.4") [
+            (fetchpatch {
+              url = "https://github.com/php/php-src/commit/93a9b56c90c334896e977721bfb3f38b1721cec6.patch";
+              sha256 = "055l40lpyhb0rbjn6y23qkzdhvpp7inbnn6x13cpn4inmhjqfpg4";
+            })
+          ];
+        }
+        { name = "json"; enable = lib.versionOlder php.version "8.0"; }
+        {
+          name = "ldap";
+          buildInputs = [ openldap cyrus_sasl ];
+          configureFlags = [
+            "--with-ldap"
+            "LDAP_DIR=${openldap.dev}"
+            "LDAP_INCDIR=${openldap.dev}/include"
+            "LDAP_LIBDIR=${openldap.out}/lib"
+          ] ++ lib.optionals stdenv.isLinux [
+            "--with-ldap-sasl=${cyrus_sasl.dev}"
+          ];
+          doCheck = false;
+        }
+        {
+          name = "mbstring";
+          buildInputs = [ oniguruma ] ++ lib.optionals (lib.versionAtLeast php.version "8.0") [
+            pcre2
+          ];
+          doCheck = false;
+        }
+        {
+          name = "mysqli";
+          internalDeps = [ php.extensions.mysqlnd ];
+          configureFlags = [ "--with-mysqli=mysqlnd" "--with-mysql-sock=/run/mysqld/mysqld.sock" ];
+          doCheck = false;
+        }
+        {
+          name = "mysqlnd";
+          buildInputs = [ zlib openssl ];
+          # The configure script doesn't correctly add library link
+          # flags, so we add them to the variable used by the Makefile
+          # when linking.
+          MYSQLND_SHARED_LIBADD = "-lssl -lcrypto";
+          # The configure script builds a config.h which is never
+          # included. Let's include it in the main header file
+          # included by all .c-files.
+          patches = [
+            (pkgs.writeText "mysqlnd_config.patch" ''
+              --- a/ext/mysqlnd/mysqlnd.h
+              +++ b/ext/mysqlnd/mysqlnd.h
+              @@ -1,3 +1,6 @@
+              +#ifdef HAVE_CONFIG_H
+              +#include "config.h"
+              +#endif
+               /*
+                 +----------------------------------------------------------------------+
+                 | Copyright (c) The PHP Group                                          |
+            '')
+          ] ++ lib.optionals (lib.versionOlder php.version "7.4.8") [
+            (pkgs.writeText "mysqlnd_fix_compression.patch" ''
+              --- a/ext/mysqlnd/mysqlnd.h
+              +++ b/ext/mysqlnd/mysqlnd.h
+              @@ -48,7 +48,7 @@
+               #define MYSQLND_DBG_ENABLED 0
+               #endif
+
+              -#if defined(MYSQLND_COMPRESSION_WANTED) && defined(HAVE_ZLIB)
+              +#if defined(MYSQLND_COMPRESSION_WANTED)
+               #define MYSQLND_COMPRESSION_ENABLED 1
+               #endif
+            '')
+          ];
+          postPhpize = lib.optionalString (lib.versionOlder php.version "7.4") ''
+            substituteInPlace configure --replace '$OPENSSL_LIBDIR' '${openssl}/lib' \
+                                        --replace '$OPENSSL_INCDIR' '${openssl.dev}/include'
+          '';
+        }
+        # oci8 (7.4, 7.3, 7.2)
+        # odbc (7.4, 7.3, 7.2)
+        {
+          name = "opcache";
+          buildInputs = [ pcre2 ] ++ lib.optionals (!stdenv.isDarwin && lib.versionAtLeast php.version "8.0") [
+            valgrind.dev
+          ];
+          patches = lib.optionals (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
+              @@ -27,9 +27,9 @@
+               #include "ext/standard/md5.h"
+               #endif
+
+              +#include "ZendAccelerator.h"
+               #ifdef HAVE_OPCACHE_FILE_CACHE
+
+              -#include "ZendAccelerator.h"
+               #include "zend_file_cache.h"
+               #include "zend_shared_alloc.h"
+               #include "zend_accelerator_util_funcs.h"
+            '')
+          ];
+          zendExtension = true;
+          doCheck = !(lib.versionOlder php.version "7.4");
+          # Tests launch the builtin webserver.
+          __darwinAllowLocalNetworking = true;
+        }
+        {
+          name = "openssl";
+          buildInputs = [ openssl ];
+          configureFlags = [ "--with-openssl" ];
+          doCheck = false;
+        }
+        { name = "pcntl"; }
+        { name = "pdo"; doCheck = false; }
+        {
+          name = "pdo_dblib";
+          internalDeps = [ php.extensions.pdo ];
+          configureFlags = [ "--with-pdo-dblib=${freetds}" ];
+          # Doesn't seem to work on darwin.
+          enable = (!stdenv.isDarwin);
+          doCheck = false;
+        }
+        # pdo_firebird (7.4, 7.3, 7.2)
+        {
+          name = "pdo_mysql";
+          internalDeps = with php.extensions; [ pdo mysqlnd ];
+          configureFlags = [ "--with-pdo-mysql=mysqlnd" "PHP_MYSQL_SOCK=/run/mysqld/mysqld.sock" ];
+          doCheck = false;
+        }
+        # pdo_oci (7.4, 7.3, 7.2)
+        {
+          name = "pdo_odbc";
+          internalDeps = [ php.extensions.pdo ];
+          configureFlags = [ "--with-pdo-odbc=unixODBC,${unixODBC}" ];
+          doCheck = false;
+        }
+        {
+          name = "pdo_pgsql";
+          internalDeps = [ php.extensions.pdo ];
+          configureFlags = [ "--with-pdo-pgsql=${postgresql}" ];
+          doCheck = false;
+        }
+        {
+          name = "pdo_sqlite";
+          internalDeps = [ php.extensions.pdo ];
+          buildInputs = [ sqlite ];
+          configureFlags = [ "--with-pdo-sqlite=${sqlite.dev}" ];
+          doCheck = false;
+        }
+        {
+          name = "pgsql";
+          buildInputs = [ pcre2 ];
+          configureFlags = [ "--with-pgsql=${postgresql}" ];
+          doCheck = false;
+        }
+        { name = "posix"; doCheck = false; }
+        { name = "pspell"; configureFlags = [ "--with-pspell=${aspell}" ]; }
+        {
+          name = "readline";
+          buildInputs = [ libedit readline ];
+          configureFlags = [ "--with-readline=${readline.dev}" ];
+          postPhpize = lib.optionalString (lib.versionOlder php.version "7.4") ''
+            substituteInPlace configure --replace 'as_fn_error $? "Please reinstall libedit - I cannot find readline.h" "$LINENO" 5' ':'
+          '';
+          doCheck = false;
+        }
+        { name = "session"; doCheck = !(lib.versionAtLeast php.version "8.0"); }
+        { name = "shmop"; }
+        {
+          name = "simplexml";
+          buildInputs = [ libxml2 pcre2 ];
+          configureFlags = [ "--enable-simplexml" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+        }
+        {
+          name = "snmp";
+          buildInputs = [ net-snmp openssl ];
+          configureFlags = [ "--with-snmp" ];
+          # net-snmp doesn't build on darwin.
+          enable = (!stdenv.isDarwin);
+          doCheck = false;
+        }
+        {
+          name = "soap";
+          buildInputs = [ libxml2 ];
+          configureFlags = [ "--enable-soap" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+          doCheck = false;
+        }
+        {
+          name = "sockets";
+          doCheck = false;
+        }
+        { name = "sodium"; buildInputs = [ libsodium ]; }
+        { name = "sqlite3"; buildInputs = [ sqlite ]; }
+        { name = "sysvmsg"; }
+        { name = "sysvsem"; }
+        { name = "sysvshm"; }
+        { name = "tidy"; configureFlags = [ "--with-tidy=${html-tidy}" ]; doCheck = false; }
+        {
+          name = "tokenizer";
+          patches = lib.optional (lib.versionAtLeast php.version "8.1")
+            ../development/interpreters/php/fix-tokenizer-php81.patch;
+        }
+        {
+          name = "wddx";
+          buildInputs = [ libxml2 ];
+          internalDeps = [ php.extensions.session ];
+          configureFlags = [ "--enable-wddx" "--with-libxml-dir=${libxml2.dev}" ];
+          # Removed in php 7.4.
+          enable = lib.versionOlder php.version "7.4";
+        }
+        {
+          name = "xml";
+          buildInputs = [ libxml2 ];
+          configureFlags = [ "--enable-xml" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+          doCheck = false;
+        }
+        {
+          name = "xmlreader";
+          buildInputs = [ libxml2 ];
+          internalDeps = [ php.extensions.dom ];
+          NIX_CFLAGS_COMPILE = [ "-I../.." "-DHAVE_DOM" ];
+          doCheck = false;
+          configureFlags = [ "--enable-xmlreader" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+        }
+        {
+          name = "xmlrpc";
+          buildInputs = [ libxml2 libiconv ];
+          # xmlrpc was unbundled in 8.0 https://php.watch/versions/8.0/xmlrpc
+          enable = lib.versionOlder php.version "8.0";
+          configureFlags = [ "--with-xmlrpc" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+        }
+        {
+          name = "xmlwriter";
+          buildInputs = [ libxml2 ];
+          configureFlags = [ "--enable-xmlwriter" ]
+            # Required to build on darwin.
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ];
+        }
+        {
+          name = "xsl";
+          buildInputs = [ libxslt libxml2 ];
+          doCheck = lib.versionOlder php.version "8.0";
+          configureFlags = [ "--with-xsl=${libxslt.dev}" ];
+        }
+        { name = "zend_test"; }
+        {
+          name = "zip";
+          buildInputs = [ libzip pcre2 ];
+          configureFlags = [ "--with-zip" ]
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-zlib-dir=${zlib.dev}" ]
+            ++ lib.optionals (lib.versionOlder php.version "7.3") [ "--with-libzip" ];
+          doCheck = false;
+        }
+        {
+          name = "zlib";
+          buildInputs = [ zlib ];
+          patches = lib.optionals (lib.versionOlder php.version "7.4") [
+            # Derived from https://github.com/php/php-src/commit/f16b012116d6c015632741a3caada5b30ef8a699
+            ../development/interpreters/php/zlib-darwin-tests.patch
+          ];
+          configureFlags = [ "--with-zlib" ]
+            ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-zlib-dir=${zlib.dev}" ];
+        }
+      ];
+
+      # Convert the list of attrs:
+      # [ { name = <name>; ... } ... ]
+      # to a list of
+      # [ { name = <name>; value = <extension drv>; } ... ]
+      #
+      # which we later use listToAttrs to make all attrs available by name.
+      #
+      # Also filter out extensions based on the enable property.
+      namedExtensions = builtins.map
+        (drv: {
+          name = drv.name;
+          value = mkExtension drv;
+        })
+        (builtins.filter (i: i.enable or true) extensionData);
+
+      # Produce the final attribute set of all extensions defined.
+    in
+    builtins.listToAttrs namedExtensions
+  );
+})
diff --git a/nixpkgs/pkgs/top-level/pure-packages.nix b/nixpkgs/pkgs/top-level/pure-packages.nix
new file mode 100644
index 000000000000..005e09cc003e
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/pure-packages.nix
@@ -0,0 +1,33 @@
+{ callPackage }:
+
+rec {
+  audio = callPackage ../development/pure-modules/audio { };
+  avahi = callPackage ../development/pure-modules/avahi { };
+  csv = callPackage ../development/pure-modules/csv { };
+  doc = callPackage ../development/pure-modules/doc { };
+  fastcgi = callPackage ../development/pure-modules/fastcgi { };
+  faust = callPackage ../development/pure-modules/faust { };
+  ffi = callPackage ../development/pure-modules/ffi { };
+  gen = callPackage ../development/pure-modules/gen { };
+  gl = callPackage ../development/pure-modules/gl { };
+  glpk = callPackage ../development/pure-modules/glpk { };
+  gplot = callPackage ../development/pure-modules/gplot { };
+  gsl = callPackage ../development/pure-modules/gsl { };
+  gtk = callPackage ../development/pure-modules/gtk { pure-ffi = ffi; };
+  liblo = callPackage ../development/pure-modules/liblo { };
+  lilv = callPackage ../development/pure-modules/lilv { };
+  lv2 = callPackage ../development/pure-modules/lv2 { };
+  midi = callPackage ../development/pure-modules/midi { };
+  mpfr = callPackage ../development/pure-modules/mpfr { };
+  octave = callPackage ../development/pure-modules/octave { };
+  odbc = callPackage ../development/pure-modules/odbc { };
+  pandoc = callPackage ../development/pure-modules/pandoc { };
+  rational = callPackage ../development/pure-modules/rational { };
+  readline = callPackage ../development/pure-modules/readline { };
+  sockets = callPackage ../development/pure-modules/sockets { };
+  sql3 = callPackage ../development/pure-modules/sql3 { };
+  stldict = callPackage ../development/pure-modules/stldict { };
+  stllib = callPackage ../development/pure-modules/stllib { };
+  tk = callPackage ../development/pure-modules/tk { };
+  xml = callPackage ../development/pure-modules/xml { };
+}
diff --git a/nixpkgs/pkgs/top-level/python-aliases.nix b/nixpkgs/pkgs/top-level/python-aliases.nix
new file mode 100644
index 000000000000..2ac1f83917a0
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/python-aliases.nix
@@ -0,0 +1,129 @@
+lib: self: super:
+
+with self;
+
+let
+  # Removing recurseForDerivation prevents derivations of aliased attribute
+  # set to appear while listing all the packages available.
+  removeRecurseForDerivations = alias: with lib;
+      if alias.recurseForDerivations or false then
+            removeAttrs alias ["recurseForDerivations"]
+                else alias;
+
+  # Disabling distribution prevents top-level aliases for non-recursed package
+  # sets from building on Hydra.
+  removeDistribute = alias: with lib;
+    if isDerivation alias then
+      dontDistribute alias
+    else alias;
+
+  # Make sure that we are not shadowing something from
+  # python-packages.nix.
+  checkInPkgs = n: alias: if builtins.hasAttr n super
+                          then throw "Alias ${n} is still in python-packages.nix"
+                          else alias;
+
+  mapAliases = aliases:
+    lib.mapAttrs (n: alias: removeDistribute
+                             (removeRecurseForDerivations
+                              (checkInPkgs n alias)))
+                     aliases;
+in
+
+  ### Deprecated aliases - for backward compatibility
+
+mapAliases ({
+  anyjson = throw "anyjson has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
+  asyncio-nats-client = nats-py; # added 2022-02-08
+  blockdiagcontrib-cisco = throw "blockdiagcontrib-cisco is not compatible with blockdiag 2.0.0 and has been removed."; # added 2020-11-29
+  bt_proximity = bt-proximity; # added 2021-07-02
+  bugseverywhere = throw "bugseverywhere has been removed: Abandoned by upstream."; # added 2019-11-27
+  carrot = throw "carrot has been removed, as its development was discontinued in 2012"; # added 2022-01-18
+  class-registry = phx-class-registry; # added 2021-10-05
+  ConfigArgParse = configargparse; # added 2021-03-18
+  cozy = throw "cozy was removed because it was not actually https://pypi.org/project/Cozy/."; # added 2022-01-14
+  dateutil = python-dateutil; # added 2021-07-03
+  demjson = throw "demjson has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
+  detox = throw "detox is no longer maintained, and was broken since may 2019"; # added 2020-07-04
+  dftfit = throw "dftfit dependency lammps-cython no longer builds"; # added 2021-07-04
+  diff_cover = diff-cover; # added 2021-07-02
+  discogs_client = discogs-client; # added 2021-07-02
+  djangorestframework-jwt = drf-jwt; # added 2021-07-20
+  django_environ = django-environ; # added 2021-12-25
+  django_extensions = django-extensions; # added 2022-01-09
+  django_redis = django-redis; # added 2021-10-11
+  django_taggit = django-taggit; # added 2021-10-11
+  dns = dnspython; # added 2017-12-10
+  dogpile_cache = dogpile-cache; # added 2021-10-28
+  dogpile-core = throw "dogpile-core is no longer maintained, use dogpile-cache instead"; # added 2021-11-20
+  eebrightbox = throw "eebrightbox is unmaintained upstream and has therefore been removed"; # added 2022-02-03
+  faulthandler = throw "faulthandler is built into ${python.executable}"; # added 2021-07-12
+  garminconnect-ha = garminconnect; # added 2022-02-05
+  gitdb2 = throw "gitdb2 has been deprecated, use gitdb instead."; # added 2020-03-14
+  glances = throw "glances has moved to pkgs.glances"; # added 2020-20-28
+  google_api_python_client = google-api-python-client; # added 2021-03-19
+  googleapis_common_protos = googleapis-common-protos; # added 2021-03-19
+  grpc_google_iam_v1 = grpc-google-iam-v1; # added 2021-08-21
+  HAP-python = hap-python; # added 2021-06-01
+  hbmqtt = throw "hbmqtt was removed because it is no longer maintained"; # added 2021-11-07
+  hdlparse = throw "hdlparse has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
+  IMAPClient = imapclient; # added 2021-10-28
+  jupyter_client = jupyter-client; # added 2021-10-15
+  Keras = keras; # added 2021-11-25
+  lammps-cython = throw "lammps-cython no longer builds and is unmaintained"; # added 2021-07-04
+  Markups = markups; # added 2022-02-14
+  MechanicalSoup = mechanicalsoup; # added 2021-06-01
+  pam = python-pam; # added 2020-09-07.
+  PasteDeploy = pastedeploy; # added 2021-10-07
+  powerlineMemSegment = powerline-mem-segment; # added 2021-10-08
+  privacyidea = throw "privacyidea has been renamed to pkgs.privacyidea"; # added 2021-06-20
+  prometheus_client = prometheus-client; # added 2021-06-10
+  prompt_toolkit = prompt-toolkit; # added 2021-07-22
+  pur = throw "pur has been renamed to pkgs.pur"; # added 2021-11-08
+  pyGtkGlade = throw "Glade support for pygtk has been removed"; # added 2022-01-15
+  pycallgraph = throw "pycallgraph has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
+  pylibgen = throw "pylibgen is unmaintained upstreamed, and removed from nixpkgs"; # added 2020-06-20
+  pymssql = throw "pymssql has been abandoned upstream."; # added 2020-05-04
+  pysmart-smartx = pysmart; # added 2021-10-22
+  pytestcov = pytest-cov; # added 2021-01-04
+  pytest-pep8 = pytestpep8; # added 2021-01-04
+  pytestpep8 = throw "pytestpep8 was removed because it is abandoned and no longer compatible with pytest v6.0"; # added 2020-12-10
+  pytestquickcheck = pytest-quickcheck; # added 2021-07-20
+  pytestrunner = pytest-runner; # added 2021-01-04
+  python-igraph = igraph; # added 2021-11-11
+  python-lz4 = lz4; # added 2018-06-01
+  python_mimeparse = python-mimeparse; # added 2021-10-31
+  python-subunit = subunit; # added 2021-09-10
+  pytest_xdist = pytest-xdist; # added 2021-01-04
+  python_simple_hipchat = python-simple-hipchat; # added 2021-07-21
+  pytwitchapi = twitchapi; # added 2022-03-07
+  qasm2image = throw "qasm2image is no longer maintained (since November 2018), and is not compatible with the latest pythonPackages.qiskit versions."; # added 2020-12-09
+  qiskit-aqua = throw "qiskit-aqua has been removed due to deprecation, with its functionality moved to different qiskit packages";
+  rdflib-jsonld = throw "rdflib-jsonld is not compatible with rdflib 6"; # added 2021-11-05
+  repeated_test = throw "repeated_test is no longer maintained"; # added 2022-01-11
+  requests_toolbelt = requests-toolbelt; # added 2017-09-26
+  roboschool = throw "roboschool is deprecated in favor of PyBullet and has been removed"; # added 2022-01-15
+  rotate-backups = throw "rotate-backups was removed in favor of the top-level rotate-backups"; # added 2021-07-01
+  ruamel_base = ruamel-base; # added 2021-11-01
+  ruamel_yaml = ruamel-yaml; # added 2021-11-01
+  ruamel_yaml_clib = ruamel-yaml-clib; # added 2021-11-01
+  scikitlearn = scikit-learn; # added 2021-07-21
+  selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
+  setuptools_scm = setuptools-scm; # added 2021-06-03
+  ROPGadget = ropgadget; # added 2021-07-06
+  smart_open = smart-open; # added 2021-03-14
+  smmap2 = throw "smmap2 has been deprecated, use smmap instead."; # added 2020-03-14
+  sphinxcontrib_plantuml = sphinxcontrib-plantuml; # added 2021-08-02
+  sqlalchemy_migrate = sqlalchemy-migrate; # added 2021-10-28
+  tensorflow-bin_2 = tensorflow-bin; # added 2021-11-25
+  tensorflow-build_2 = tensorflow-build; # added 2021-11-25
+  tensorflow-estimator_2 = tensorflow-estimator; # added 2021-11-25
+  tensorflow-tensorboard_2 = tensorflow-tensorboard; # added 2021-11-25
+  topydo = throw "topydo was moved to pkgs.topydo"; # added 2017-09-22
+  tvnamer = throw "tvnamer was moved to pkgs.tvnamer"; # added 2021-07-05
+  WazeRouteCalculator = wazeroutecalculator; # added 2021-09-29
+  websocket_client = websocket-client; # added 2021-06-15
+  xenomapper = throw "xenomapper was moved to pkgs.xenomapper"; # added 2021-12-31
+  zc-buildout221 = zc-buildout; # added 2021-07-21
+  zc_buildout_nix = throw "zc_buildout_nix was pinned to a version no longer compatible with other modules";
+})
diff --git a/nixpkgs/pkgs/top-level/python-packages.nix b/nixpkgs/pkgs/top-level/python-packages.nix
new file mode 100644
index 000000000000..19465727dc47
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/python-packages.nix
@@ -0,0 +1,11061 @@
+# This file contains the Python packages set.
+# Each attribute is a Python library or a helper function.
+# Expressions for Python libraries are supposed to be in `pkgs/development/python-modules/<name>/default.nix`.
+# Python packages that do not need to be available for each interpreter version do not belong in this packages set.
+# Examples are Python-based cli tools.
+#
+# For more details, please see the Python section in the Nixpkgs manual.
+
+{ pkgs
+, stdenv
+, lib
+, python
+}:
+
+with lib;
+
+self:
+
+let unoverriddenPython = python; in
+
+let
+  inherit (self) callPackage;
+  inherit (python.passthru) isPy27 isPy35 isPy36 isPy37 isPy38 isPy39 isPy310 isPy311 isPy3k isPyPy pythonAtLeast pythonOlder;
+
+  namePrefix = python.libPrefix + "-";
+
+  bootstrapped-pip = callPackage ../development/python-modules/bootstrapped-pip { };
+
+  # Derivations built with `buildPythonPackage` can already be overriden with `override`, `overrideAttrs`, and `overrideDerivation`.
+  # This function introduces `overridePythonAttrs` and it overrides the call to `buildPythonPackage`.
+  makeOverridablePythonPackage = f: origArgs:
+    let
+      ff = f origArgs;
+      overrideWith = newArgs: origArgs // (if pkgs.lib.isFunction newArgs then newArgs origArgs else newArgs);
+    in
+      if builtins.isAttrs ff then (ff // {
+        overridePythonAttrs = newArgs: makeOverridablePythonPackage f (overrideWith newArgs);
+      })
+      else if builtins.isFunction ff then {
+        overridePythonAttrs = newArgs: makeOverridablePythonPackage f (overrideWith newArgs);
+        __functor = self: ff;
+      }
+      else ff;
+
+  buildPythonPackage = makeOverridablePythonPackage ( makeOverridable (callPackage ../development/interpreters/python/mk-python-derivation.nix {
+    inherit namePrefix;     # We want Python libraries to be named like e.g. "python3.6-${name}"
+    inherit toPythonModule; # Libraries provide modules
+  }));
+
+  buildPythonApplication = makeOverridablePythonPackage ( makeOverridable (callPackage ../development/interpreters/python/mk-python-derivation.nix {
+    namePrefix = "";        # Python applications should not have any prefix
+    toPythonModule = x: x;  # Application does not provide modules.
+  }));
+
+  # See build-setupcfg/default.nix for documentation.
+  buildSetupcfg = import ../build-support/build-setupcfg self;
+
+  fetchPypi = callPackage ../development/interpreters/python/fetchpypi.nix { };
+
+  # Check whether a derivation provides a Python module.
+  hasPythonModule = drv: drv?pythonModule && drv.pythonModule == python;
+
+  # Get list of required Python modules given a list of derivations.
+  requiredPythonModules = drvs: let
+    modules = filter hasPythonModule drvs;
+  in unique ([python] ++ modules ++ concatLists (catAttrs "requiredPythonModules" modules));
+
+  # Create a PYTHONPATH from a list of derivations. This function recurses into the items to find derivations
+  # providing Python modules.
+  makePythonPath = drvs: lib.makeSearchPath python.sitePackages (requiredPythonModules drvs);
+
+  removePythonPrefix = name:
+    removePrefix namePrefix name;
+
+  # Convert derivation to a Python module.
+  toPythonModule = drv:
+    drv.overrideAttrs( oldAttrs: {
+      # Use passthru in order to prevent rebuilds when possible.
+      passthru = (oldAttrs.passthru or {})// {
+        pythonModule = python;
+        pythonPath = [ ]; # Deprecated, for compatibility.
+        requiredPythonModules = requiredPythonModules drv.propagatedBuildInputs;
+      };
+    });
+
+  # Convert a Python library to an application.
+  toPythonApplication = drv:
+    drv.overrideAttrs( oldAttrs: {
+      passthru = (oldAttrs.passthru or {}) // {
+        # Remove Python prefix from name so we have a "normal" name.
+        # While the prefix shows up in the store path, it won't be
+        # used by `nix-env`.
+        name = removePythonPrefix oldAttrs.name;
+        pythonModule = false;
+      };
+    });
+
+  disabled = drv: throw "${removePythonPrefix (drv.pname or drv.name)} not supported for interpreter ${python.executable}";
+
+  disabledIf = x: drv: if x then disabled drv else drv;
+
+  # CUDA-related packages that are compatible with the currently packaged version
+  # of TensorFlow, used to keep these versions in sync in related packages like `jaxlib`.
+  tensorflow_compat_cudatoolkit = pkgs.cudatoolkit_11_2;
+  tensorflow_compat_cudnn = pkgs.cudnn_8_1_cudatoolkit_11_2;
+  tensorflow_compat_nccl = pkgs.nccl_cudatoolkit_11;
+
+in {
+
+  inherit pkgs stdenv;
+
+  inherit (python.passthru) isPy27 isPy35 isPy36 isPy37 isPy38 isPy39 isPy310 isPy311 isPy3k isPyPy pythonAtLeast pythonOlder;
+  inherit python bootstrapped-pip buildPythonPackage buildPythonApplication;
+  inherit fetchPypi;
+  inherit hasPythonModule requiredPythonModules makePythonPath disabled disabledIf;
+  inherit toPythonModule toPythonApplication;
+  inherit buildSetupcfg;
+
+  inherit (callPackage ../development/interpreters/python/hooks { })
+    condaInstallHook
+    condaUnpackHook
+    eggUnpackHook
+    eggBuildHook
+    eggInstallHook
+    flitBuildHook
+    pipBuildHook
+    pipInstallHook
+    pytestCheckHook
+    pythonCatchConflictsHook
+    pythonImportsCheckHook
+    pythonNamespacesHook
+    pythonRecompileBytecodeHook
+    pythonRemoveBinBytecodeHook
+    pythonRemoveTestsDirHook
+    setuptoolsBuildHook
+    setuptoolsCheckHook
+    venvShellHook
+    wheelUnpackHook;
+
+  # Not all packages are compatible with the latest pytest yet.
+  # We need to override the hook to select an older pytest, however,
+  # it should not override the version of pytest that is used for say
+  # Python 2. This is an ugly hack that is needed now because the hook
+  # propagates the package.
+  pytestCheckHook_6_1 = if isPy3k then
+    self.pytestCheckHook.override { pytest = self.pytest_6_1; }
+  else
+    self.pytestCheckHook;
+
+  # helpers
+
+  # We use build packages because we are making a setup hook to be used as a
+  # native build input. The script itself references both the build-time
+  # (build) and run-time (host) python from the explicitly passed in `python`
+  # attribute, so the `buildPackages` doesn't effect that.
+  wrapPython = pkgs.buildPackages.callPackage ../development/interpreters/python/wrap-python.nix {
+    inherit python;
+  };
+
+  # Dont take pythonPackages from "global" pkgs scope to avoid mixing python versions
+  pythonPackages = self;
+
+  # specials
+
+  recursivePthLoader = callPackage ../development/python-modules/recursive-pth-loader { };
+
+  setuptools = callPackage ../development/python-modules/setuptools { };
+
+  aadict = callPackage ../development/python-modules/aadict { };
+
+  aafigure = callPackage ../development/python-modules/aafigure { };
+
+  abodepy = callPackage ../development/python-modules/abodepy { };
+
+  absl-py = callPackage ../development/python-modules/absl-py { };
+
+  accuweather = callPackage ../development/python-modules/accuweather { };
+
+  accupy = callPackage ../development/python-modules/accupy { };
+
+  acebinf = callPackage ../development/python-modules/acebinf { };
+
+  acme = callPackage ../development/python-modules/acme { };
+
+  acme-tiny = callPackage ../development/python-modules/acme-tiny { };
+
+  acoustics = callPackage ../development/python-modules/acoustics { };
+
+  actdiag = callPackage ../development/python-modules/actdiag { };
+
+  adafruit-io = callPackage ../development/python-modules/adafruit-io { };
+
+  adafruit-platformdetect = callPackage ../development/python-modules/adafruit-platformdetect { };
+
+  adafruit-pureio = callPackage ../development/python-modules/adafruit-pureio { };
+
+  adal = callPackage ../development/python-modules/adal { };
+
+  adax = callPackage ../development/python-modules/adax { };
+
+  adax-local = callPackage ../development/python-modules/adax-local { };
+
+  adb-enhanced = callPackage ../development/python-modules/adb-enhanced { };
+
+  adb-homeassistant = callPackage ../development/python-modules/adb-homeassistant { };
+
+  adb-shell = callPackage ../development/python-modules/adb-shell { };
+
+  adblock = callPackage ../development/python-modules/adblock {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  addict = callPackage ../development/python-modules/addict { };
+
+  addic7ed-cli = callPackage ../development/python-modules/addic7ed-cli { };
+
+  adext = callPackage ../development/python-modules/adext { };
+
+  adguardhome = callPackage ../development/python-modules/adguardhome { };
+
+  adjusttext = callPackage ../development/python-modules/adjusttext { };
+
+  advantage-air = callPackage ../development/python-modules/advantage-air { };
+
+  aemet-opendata = callPackage ../development/python-modules/aemet-opendata { };
+
+  aenum = callPackage ../development/python-modules/aenum { };
+
+  aesara = callPackage ../development/python-modules/aesara { };
+
+  afdko = callPackage ../development/python-modules/afdko { };
+
+  affine = callPackage ../development/python-modules/affine { };
+
+  afsapi = callPackage ../development/python-modules/afsapi { };
+
+  agate = callPackage ../development/python-modules/agate { };
+
+  agate-dbf = callPackage ../development/python-modules/agate-dbf { };
+
+  agate-excel = callPackage ../development/python-modules/agate-excel { };
+
+  agate-sql = callPackage ../development/python-modules/agate-sql { };
+
+  agent-py = callPackage ../development/python-modules/agent-py { };
+
+  aio-geojson-client = callPackage ../development/python-modules/aio-geojson-client { };
+
+  aio-geojson-geonetnz-quakes = callPackage ../development/python-modules/aio-geojson-geonetnz-quakes { };
+
+  aio-geojson-geonetnz-volcano = callPackage ../development/python-modules/aio-geojson-geonetnz-volcano { };
+
+  aio-geojson-nsw-rfs-incidents = callPackage ../development/python-modules/aio-geojson-nsw-rfs-incidents { };
+
+  aio-georss-client = callPackage ../development/python-modules/aio-georss-client { };
+
+  aio-georss-gdacs = callPackage ../development/python-modules/aio-georss-gdacs { };
+
+  aioambient = callPackage ../development/python-modules/aioambient { };
+
+  aioapns = callPackage ../development/python-modules/aioapns { };
+
+  aiocron = callPackage ../development/python-modules/aiocron { };
+
+  ailment = callPackage ../development/python-modules/ailment { };
+
+  aioamqp = callPackage ../development/python-modules/aioamqp { };
+
+  aioaseko = callPackage ../development/python-modules/aioaseko { };
+
+  aioasuswrt = callPackage ../development/python-modules/aioasuswrt { };
+
+  aioazuredevops = callPackage ../development/python-modules/aioazuredevops { };
+
+  aiocache = callPackage ../development/python-modules/aiocache { };
+
+  aiocoap = callPackage ../development/python-modules/aiocoap { };
+
+  aioconsole = callPackage ../development/python-modules/aioconsole { };
+
+  aiocontextvars = callPackage ../development/python-modules/aiocontextvars { };
+
+  aiocurrencylayer = callPackage ../development/python-modules/aiocurrencylayer { };
+
+  aiodiscover = callPackage ../development/python-modules/aiodiscover { };
+
+  aiodns = callPackage ../development/python-modules/aiodns { };
+
+  aioeafm = callPackage ../development/python-modules/aioeafm { };
+
+  aioeagle = callPackage ../development/python-modules/aioeagle { };
+
+  aioemonitor = callPackage ../development/python-modules/aioemonitor { };
+
+  aioesphomeapi = callPackage ../development/python-modules/aioesphomeapi { };
+
+  aioextensions = callPackage ../development/python-modules/aioextensions { };
+
+  aiofiles = callPackage ../development/python-modules/aiofiles { };
+
+  aioflo = callPackage ../development/python-modules/aioflo { };
+
+  aioftp = callPackage ../development/python-modules/aioftp { };
+
+  aioguardian = callPackage ../development/python-modules/aioguardian { };
+
+  aiogithubapi = callPackage ../development/python-modules/aiogithubapi { };
+
+  aioh2 = callPackage ../development/python-modules/aioh2 { };
+
+  aioharmony = callPackage ../development/python-modules/aioharmony { };
+
+  aiohomekit = callPackage ../development/python-modules/aiohomekit { };
+
+  aiohttp = callPackage ../development/python-modules/aiohttp { };
+
+  aiohttp-apispec = callPackage ../development/python-modules/aiohttp-apispec { };
+
+  aiohttp-cors = callPackage ../development/python-modules/aiohttp-cors { };
+
+  aiohttp-jinja2 = callPackage ../development/python-modules/aiohttp-jinja2 { };
+
+  aiohttp-remotes = callPackage ../development/python-modules/aiohttp-remotes { };
+
+  aiohttp-retry = callPackage ../development/python-modules/aiohttp-retry { };
+
+  aiohttp-socks = callPackage ../development/python-modules/aiohttp-socks { };
+
+  aiohttp-swagger = callPackage ../development/python-modules/aiohttp-swagger { };
+
+  aiohttp-wsgi = callPackage ../development/python-modules/aiohttp-wsgi { };
+
+  aioitertools = callPackage ../development/python-modules/aioitertools { };
+
+  aiobotocore = callPackage ../development/python-modules/aiobotocore { };
+
+  aiobroadlink = callPackage ../development/python-modules/aiobroadlink { };
+
+  aiohue = callPackage ../development/python-modules/aiohue { };
+
+  aiohwenergy = callPackage ../development/python-modules/aiohwenergy { };
+
+  aioimaplib = callPackage ../development/python-modules/aioimaplib { };
+
+  aioinflux = callPackage ../development/python-modules/aioinflux { };
+
+  aiojobs = callPackage ../development/python-modules/aiojobs { };
+
+  aiokafka = callPackage ../development/python-modules/aiokafka { };
+
+  aiokef = callPackage ../development/python-modules/aiokef { };
+
+  aiolookin = callPackage ../development/python-modules/aiolookin { };
+
+  aiolifx = callPackage ../development/python-modules/aiolifx { };
+
+  aiolifx-effects = callPackage ../development/python-modules/aiolifx-effects { };
+
+  aiolip = callPackage ../development/python-modules/aiolip { };
+
+  aiolyric = callPackage ../development/python-modules/aiolyric { };
+
+  aiomodernforms = callPackage ../development/python-modules/aiomodernforms { };
+
+  aiomultiprocess = callPackage ../development/python-modules/aiomultiprocess { };
+
+  aiomusiccast = callPackage ../development/python-modules/aiomusiccast { };
+
+  aiomysql = callPackage ../development/python-modules/aiomysql { };
+
+  aionanoleaf = callPackage ../development/python-modules/aionanoleaf { };
+
+  aionotify = callPackage ../development/python-modules/aionotify { };
+
+  aionotion = callPackage ../development/python-modules/aionotion { };
+
+  aiooncue = callPackage ../development/python-modules/aiooncue { };
+
+  aiopg = callPackage ../development/python-modules/aiopg { };
+
+  aioprocessing = callPackage ../development/python-modules/aioprocessing { };
+
+  aiopulse = callPackage ../development/python-modules/aiopulse { };
+
+  aiopvapi = callPackage ../development/python-modules/aiopvapi { };
+
+  aiopvpc = callPackage ../development/python-modules/aiopvpc { };
+
+  aiopyarr = callPackage ../development/python-modules/aiopyarr { };
+
+  aiopylgtv = callPackage ../development/python-modules/aiopylgtv { };
+
+  aiorecollect = callPackage ../development/python-modules/aiorecollect { };
+
+  aioredis = callPackage ../development/python-modules/aioredis { };
+
+  aioresponses = callPackage ../development/python-modules/aioresponses { };
+
+  aioridwell = callPackage ../development/python-modules/aioridwell { };
+
+  aiorpcx = callPackage ../development/python-modules/aiorpcx { };
+
+  aiorun = callPackage ../development/python-modules/aiorun { };
+
+  aiosenseme = callPackage ../development/python-modules/aiosenseme { };
+
+  aiosenz = callPackage ../development/python-modules/aiosenz { };
+
+  aioserial = callPackage ../development/python-modules/aioserial { };
+
+  aioshelly = callPackage ../development/python-modules/aioshelly { };
+
+  aiosignal = callPackage ../development/python-modules/aiosignal { };
+
+  aiosmb = callPackage ../development/python-modules/aiosmb { };
+
+  aiosmtpd = callPackage ../development/python-modules/aiosmtpd { };
+
+  aiosqlite = callPackage ../development/python-modules/aiosqlite { };
+
+  aiosteamist = callPackage ../development/python-modules/aiosteamist { };
+
+  aiostream = callPackage ../development/python-modules/aiostream { };
+
+  aioswitcher = callPackage ../development/python-modules/aioswitcher { };
+
+  aiosyncthing = callPackage ../development/python-modules/aiosyncthing { };
+
+  aiotractive = callPackage ../development/python-modules/aiotractive { };
+
+  aiounifi = callPackage ../development/python-modules/aiounifi { };
+
+  aiounittest = callPackage ../development/python-modules/aiounittest { };
+
+  aiovlc = callPackage ../development/python-modules/aiovlc { };
+
+  aiowatttime = callPackage ../development/python-modules/aiowatttime { };
+
+  aiowebostv = callPackage ../development/python-modules/aiowebostv { };
+
+  aiowinreg = callPackage ../development/python-modules/aiowinreg { };
+
+  aioymaps = callPackage ../development/python-modules/aioymaps { };
+
+  aiozeroconf = callPackage ../development/python-modules/aiozeroconf { };
+
+  airly = callPackage ../development/python-modules/airly { };
+
+  airthings-cloud = callPackage ../development/python-modules/airthings-cloud { };
+
+  airtouch4pyapi = callPackage ../development/python-modules/airtouch4pyapi { };
+
+  ajpy = callPackage ../development/python-modules/ajpy { };
+
+  ajsonrpc = callPackage ../development/python-modules/ajsonrpc { };
+
+  alabaster = callPackage ../development/python-modules/alabaster { };
+
+  aladdin-connect = callPackage ../development/python-modules/aladdin-connect { };
+
+  alarmdecoder = callPackage ../development/python-modules/alarmdecoder { };
+
+  alectryon = callPackage ../development/python-modules/alectryon { };
+
+  alembic = callPackage ../development/python-modules/alembic { };
+
+  algebraic-data-types = callPackage ../development/python-modules/algebraic-data-types { };
+
+  allpairspy = callPackage ../development/python-modules/allpairspy { };
+
+  allure-behave = callPackage ../development/python-modules/allure-behave { };
+
+  allure-python-commons = callPackage ../development/python-modules/allure-python-commons { };
+
+  allure-python-commons-test = callPackage ../development/python-modules/allure-python-commons-test { };
+
+  allure-pytest = callPackage ../development/python-modules/allure-pytest { };
+
+  alpha-vantage = callPackage ../development/python-modules/alpha-vantage { };
+
+  altair = callPackage ../development/python-modules/altair { };
+
+  amazon_kclpy = callPackage ../development/python-modules/amazon_kclpy { };
+
+  ambee = callPackage ../development/python-modules/ambee { };
+
+  amberelectric = callPackage ../development/python-modules/amberelectric { };
+
+  ambiclimate = callPackage ../development/python-modules/ambiclimate { };
+
+  amcrest = callPackage ../development/python-modules/amcrest { };
+
+  amiibo-py = callPackage ../development/python-modules/amiibo-py { };
+
+  amply = callPackage ../development/python-modules/amply { };
+
+  amqp = callPackage ../development/python-modules/amqp { };
+
+  amqplib = callPackage ../development/python-modules/amqplib { };
+
+  amqtt = callPackage ../development/python-modules/amqtt { };
+
+  android-backup = callPackage ../development/python-modules/android-backup { };
+
+  androidtv = callPackage ../development/python-modules/androidtv { };
+
+  androguard = callPackage ../development/python-modules/androguard { };
+
+  angr = callPackage ../development/python-modules/angr { };
+
+  angrcli = callPackage ../development/python-modules/angrcli {
+    inherit (pkgs) coreutils;
+  };
+
+  angrop = callPackage ../development/python-modules/angrop { };
+
+  aniso8601 = callPackage ../development/python-modules/aniso8601 { };
+
+  annexremote = callPackage ../development/python-modules/annexremote { };
+
+  annoy = callPackage ../development/python-modules/annoy { };
+
+  anonip = callPackage ../development/python-modules/anonip { };
+
+  ansi2html = callPackage ../development/python-modules/ansi2html { };
+
+  ansible = callPackage ../development/python-modules/ansible/legacy.nix { };
+
+  ansible-base = callPackage ../development/python-modules/ansible/base.nix { };
+
+  ansible-core = callPackage ../development/python-modules/ansible/core.nix { };
+
+  ansible-kernel = callPackage ../development/python-modules/ansible-kernel { };
+
+  ansible-lint = callPackage ../development/python-modules/ansible-lint { };
+
+  ansible-runner = callPackage ../development/python-modules/ansible-runner { };
+
+  ansi = callPackage ../development/python-modules/ansi { };
+
+  ansicolor = callPackage ../development/python-modules/ansicolor { };
+
+  ansicolors = callPackage ../development/python-modules/ansicolors { };
+
+  ansiconv = callPackage ../development/python-modules/ansiconv { };
+
+  ansimarkup = callPackage ../development/python-modules/ansimarkup { };
+
+  ansiwrap = callPackage ../development/python-modules/ansiwrap { };
+
+  antlr4-python3-runtime = callPackage ../development/python-modules/antlr4-python3-runtime {
+    inherit (pkgs) antlr4;
+  };
+
+  anyascii = callPackage ../development/python-modules/anyascii { };
+
+  anybadge = callPackage ../development/python-modules/anybadge { };
+
+  anyio = callPackage ../development/python-modules/anyio { };
+
+  anytree = callPackage ../development/python-modules/anytree {
+    inherit (pkgs) graphviz;
+  };
+
+  aocd = callPackage ../development/python-modules/aocd { };
+
+  apache-airflow = callPackage ../development/python-modules/apache-airflow { };
+
+  apache-beam = callPackage ../development/python-modules/apache-beam { };
+
+  apcaccess = callPackage ../development/python-modules/apcaccess { };
+
+  apipkg = callPackage ../development/python-modules/apipkg { };
+
+  apispec = callPackage ../development/python-modules/apispec { };
+
+  aplpy = callPackage ../development/python-modules/aplpy { };
+
+  appdirs = callPackage ../development/python-modules/appdirs { };
+
+  appleseed = toPythonModule (pkgs.appleseed.override { python3 = self.python; });
+
+  applicationinsights = callPackage ../development/python-modules/applicationinsights { };
+
+  appnope = callPackage ../development/python-modules/appnope { };
+
+  apprise = callPackage ../development/python-modules/apprise { };
+
+  approvaltests = callPackage ../development/python-modules/approvaltests { };
+
+  apptools = callPackage ../development/python-modules/apptools { };
+
+  appthreat-vulnerability-db = callPackage ../development/python-modules/appthreat-vulnerability-db { };
+
+  aprslib = callPackage ../development/python-modules/aprslib { };
+
+  APScheduler = callPackage ../development/python-modules/APScheduler { };
+
+  apsw = callPackage ../development/python-modules/apsw { };
+
+  apycula = callPackage ../development/python-modules/apycula { };
+
+  aqualogic = callPackage ../development/python-modules/aqualogic { };
+
+  arabic-reshaper = callPackage ../development/python-modules/arabic-reshaper { };
+
+  arcam-fmj = callPackage ../development/python-modules/arcam-fmj { };
+
+  archinfo = callPackage ../development/python-modules/archinfo { };
+
+  area = callPackage ../development/python-modules/area { };
+
+  arelle = callPackage ../development/python-modules/arelle {
+    gui = true;
+  };
+
+  arelle-headless = callPackage ../development/python-modules/arelle {
+    gui = false;
+  };
+
+  aresponses = callPackage ../development/python-modules/aresponses { };
+
+  argcomplete = callPackage ../development/python-modules/argcomplete { };
+
+  argh = callPackage ../development/python-modules/argh { };
+
+  argon2_cffi = callPackage ../development/python-modules/argon2_cffi { };
+
+  argon2-cffi-bindings = callPackage ../development/python-modules/argon2-cffi-bindings { };
+
+  args = callPackage ../development/python-modules/args { };
+
+  aria2p = callPackage ../development/python-modules/aria2p { };
+
+  arrayqueues = callPackage ../development/python-modules/arrayqueues { };
+
+  arrow = callPackage ../development/python-modules/arrow { };
+
+  arviz = callPackage ../development/python-modules/arviz { };
+
+  arxiv2bib = callPackage ../development/python-modules/arxiv2bib { };
+
+  asana = callPackage ../development/python-modules/asana { };
+
+  ascii-magic = callPackage ../development/python-modules/ascii-magic { };
+
+  asciimatics = callPackage ../development/python-modules/asciimatics { };
+
+  asciitree = callPackage ../development/python-modules/asciitree { };
+
+  asdf = callPackage ../development/python-modules/asdf { };
+
+  ase = callPackage ../development/python-modules/ase { };
+
+  asgi-csrf = callPackage ../development/python-modules/asgi-csrf { };
+
+  asgineer = callPackage ../development/python-modules/asgineer { };
+
+  asgiref = callPackage ../development/python-modules/asgiref { };
+
+  asmog = callPackage ../development/python-modules/asmog { };
+
+  asn1 = callPackage ../development/python-modules/asn1 { };
+
+  asn1ate = callPackage ../development/python-modules/asn1ate { };
+
+  asn1crypto = callPackage ../development/python-modules/asn1crypto { };
+
+  aspell-python = callPackage ../development/python-modules/aspell-python { };
+
+  aspy-yaml = callPackage ../development/python-modules/aspy.yaml { };
+
+  assertpy = callPackage ../development/python-modules/assertpy { };
+
+  asterisk-mbox = callPackage ../development/python-modules/asterisk-mbox { };
+
+  asteval = callPackage ../development/python-modules/asteval { };
+
+  astor = callPackage ../development/python-modules/astor { };
+
+  astral = callPackage ../development/python-modules/astral { };
+
+  astroid = callPackage ../development/python-modules/astroid { };
+
+  astropy = callPackage ../development/python-modules/astropy { };
+
+  astropy-healpix = callPackage ../development/python-modules/astropy-healpix { };
+
+  astropy-helpers = callPackage ../development/python-modules/astropy-helpers { };
+
+  astropy-extension-helpers = callPackage ../development/python-modules/astropy-extension-helpers { };
+
+  astroquery = callPackage ../development/python-modules/astroquery { };
+
+  asttokens = callPackage ../development/python-modules/asttokens { };
+
+  astunparse = callPackage ../development/python-modules/astunparse { };
+
+  async_generator = callPackage ../development/python-modules/async_generator { };
+
+  async-dns = callPackage ../development/python-modules/async-dns { };
+
+  async-lru = callPackage ../development/python-modules/async-lru { };
+
+  asyncclick = callPackage ../development/python-modules/asyncclick { };
+
+  asynccmd = callPackage ../development/python-modules/asynccmd { };
+
+  asyncio-dgram = callPackage ../development/python-modules/asyncio-dgram { };
+
+  asyncio-mqtt = callPackage ../development/python-modules/asyncio_mqtt { };
+
+  asyncio-rlock = callPackage ../development/python-modules/asyncio-rlock { };
+
+  asyncmy = callPackage ../development/python-modules/asyncmy { };
+
+  asyncio-throttle = callPackage ../development/python-modules/asyncio-throttle { };
+
+  asyncpg = callPackage ../development/python-modules/asyncpg { };
+
+  asyncsleepiq = callPackage ../development/python-modules/asyncsleepiq { };
+
+  asyncssh = callPackage ../development/python-modules/asyncssh { };
+
+  asyncstdlib = callPackage ../development/python-modules/asyncstdlib { };
+
+  async_stagger = callPackage ../development/python-modules/async_stagger { };
+
+  asynctest = callPackage ../development/python-modules/asynctest { };
+
+  async-timeout = callPackage ../development/python-modules/async_timeout { };
+
+  async-upnp-client = callPackage ../development/python-modules/async-upnp-client { };
+
+  asyncwhois = callPackage ../development/python-modules/asyncwhois { };
+
+  asysocks = callPackage ../development/python-modules/asysocks { };
+
+  atenpdu = callPackage ../development/python-modules/atenpdu { };
+
+  atlassian-python-api = callPackage ../development/python-modules/atlassian-python-api { };
+
+  atom = callPackage ../development/python-modules/atom { };
+
+  atomiclong = callPackage ../development/python-modules/atomiclong { };
+
+  atomicwrites = callPackage ../development/python-modules/atomicwrites { };
+
+  atomman = callPackage ../development/python-modules/atomman { };
+
+  atpublic = callPackage ../development/python-modules/atpublic { };
+
+  atsim_potentials = callPackage ../development/python-modules/atsim_potentials { };
+
+  attrdict = callPackage ../development/python-modules/attrdict { };
+
+  attrs = callPackage ../development/python-modules/attrs { };
+
+  aubio = callPackage ../development/python-modules/aubio { };
+
+  audio-metadata = callPackage ../development/python-modules/audio-metadata { };
+
+  audioread = callPackage ../development/python-modules/audioread { };
+
+  audiotools = callPackage ../development/python-modules/audiotools {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AudioToolbox AudioUnit CoreServices;
+  };
+
+  augeas = callPackage ../development/python-modules/augeas {
+    inherit (pkgs) augeas;
+  };
+
+  augmax = callPackage ../development/python-modules/augmax { };
+
+  auroranoaa = callPackage ../development/python-modules/auroranoaa { };
+
+  aurorapy = callPackage ../development/python-modules/aurorapy { };
+
+  autarco = callPackage ../development/python-modules/autarco { };
+
+  auth0-python = callPackage ../development/python-modules/auth0-python { };
+
+  authcaptureproxy = callPackage ../development/python-modules/authcaptureproxy { };
+
+  authheaders = callPackage ../development/python-modules/authheaders { };
+
+  authlib = callPackage ../development/python-modules/authlib { };
+
+  authres = callPackage ../development/python-modules/authres { };
+
+  autobahn = callPackage ../development/python-modules/autobahn { };
+
+  autograd = callPackage ../development/python-modules/autograd { };
+
+  autoit-ripper = callPackage ../development/python-modules/autoit-ripper { };
+
+  autologging = callPackage ../development/python-modules/autologging { };
+
+  automat = callPackage ../development/python-modules/automat { };
+
+  automate-home = callPackage ../development/python-modules/automate-home { };
+
+  autopage = callPackage ../development/python-modules/autopage { };
+
+  autopep8 = callPackage ../development/python-modules/autopep8 { };
+
+  avahi = toPythonModule (pkgs.avahi.override {
+    inherit python;
+    withPython = true;
+  });
+
+  av = callPackage ../development/python-modules/av { };
+
+  avea = callPackage ../development/python-modules/avea { };
+
+  avion = callPackage ../development/python-modules/avion { };
+
+  avro3k = callPackage ../development/python-modules/avro3k { };
+
+  avro = callPackage ../development/python-modules/avro { };
+
+  avro-python3 = callPackage ../development/python-modules/avro-python3 { };
+
+  awesome-slugify = callPackage ../development/python-modules/awesome-slugify { };
+
+  awesomeversion = callPackage ../development/python-modules/awesomeversion { };
+
+  awkward0 = callPackage ../development/python-modules/awkward0 { };
+  awkward = callPackage ../development/python-modules/awkward { };
+
+  aws-adfs = callPackage ../development/python-modules/aws-adfs { };
+
+  aws-lambda-builders = callPackage ../development/python-modules/aws-lambda-builders { };
+
+  aws-sam-translator = callPackage ../development/python-modules/aws-sam-translator { };
+
+  aws-xray-sdk = callPackage ../development/python-modules/aws-xray-sdk { };
+
+  awscrt = callPackage ../development/python-modules/awscrt {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  awsiotpythonsdk = callPackage ../development/python-modules/awsiotpythonsdk { };
+
+  awslambdaric = callPackage ../development/python-modules/awslambdaric { };
+
+  axis = callPackage ../development/python-modules/axis { };
+
+  azure-appconfiguration = callPackage ../development/python-modules/azure-appconfiguration { };
+
+  azure-applicationinsights = callPackage ../development/python-modules/azure-applicationinsights { };
+
+  azure-batch = callPackage ../development/python-modules/azure-batch { };
+
+  azure-common = callPackage ../development/python-modules/azure-common { };
+
+  azure-core = callPackage ../development/python-modules/azure-core { };
+
+  azure-cosmos = callPackage ../development/python-modules/azure-cosmos { };
+
+  azure-cosmosdb-nspkg = callPackage ../development/python-modules/azure-cosmosdb-nspkg { };
+
+  azure-cosmosdb-table = callPackage ../development/python-modules/azure-cosmosdb-table { };
+
+  azure-datalake-store = callPackage ../development/python-modules/azure-datalake-store { };
+
+  azure-eventgrid = callPackage ../development/python-modules/azure-eventgrid { };
+
+  azure-eventhub = callPackage ../development/python-modules/azure-eventhub { };
+
+  azure-functions-devops-build = callPackage ../development/python-modules/azure-functions-devops-build { };
+
+  azure-graphrbac = callPackage ../development/python-modules/azure-graphrbac { };
+
+  azure-identity = callPackage ../development/python-modules/azure-identity { };
+
+  azure-keyvault = callPackage ../development/python-modules/azure-keyvault { };
+
+  azure-keyvault-administration = callPackage ../development/python-modules/azure-keyvault-administration { };
+
+  azure-keyvault-certificates = callPackage ../development/python-modules/azure-keyvault-certificates { };
+
+  azure-keyvault-keys = callPackage ../development/python-modules/azure-keyvault-keys { };
+
+  azure-keyvault-nspkg = callPackage ../development/python-modules/azure-keyvault-nspkg { };
+
+  azure-keyvault-secrets = callPackage ../development/python-modules/azure-keyvault-secrets { };
+
+  azure-loganalytics = callPackage ../development/python-modules/azure-loganalytics { };
+
+  azure-mgmt-advisor = callPackage ../development/python-modules/azure-mgmt-advisor { };
+
+  azure-mgmt-apimanagement = callPackage ../development/python-modules/azure-mgmt-apimanagement { };
+
+  azure-mgmt-appconfiguration = callPackage ../development/python-modules/azure-mgmt-appconfiguration { };
+
+  azure-mgmt-applicationinsights = callPackage ../development/python-modules/azure-mgmt-applicationinsights { };
+
+  azure-mgmt-authorization = callPackage ../development/python-modules/azure-mgmt-authorization { };
+
+  azure-mgmt-batchai = callPackage ../development/python-modules/azure-mgmt-batchai { };
+
+  azure-mgmt-batch = callPackage ../development/python-modules/azure-mgmt-batch { };
+
+  azure-mgmt-billing = callPackage ../development/python-modules/azure-mgmt-billing { };
+
+  azure-mgmt-botservice = callPackage ../development/python-modules/azure-mgmt-botservice { };
+
+  azure-mgmt-cdn = callPackage ../development/python-modules/azure-mgmt-cdn { };
+
+  azure-mgmt-cognitiveservices = callPackage ../development/python-modules/azure-mgmt-cognitiveservices { };
+
+  azure-mgmt-commerce = callPackage ../development/python-modules/azure-mgmt-commerce { };
+
+  azure-mgmt-common = callPackage ../development/python-modules/azure-mgmt-common { };
+
+  azure-mgmt-compute = callPackage ../development/python-modules/azure-mgmt-compute { };
+
+  azure-mgmt-consumption = callPackage ../development/python-modules/azure-mgmt-consumption { };
+
+  azure-mgmt-containerinstance = callPackage ../development/python-modules/azure-mgmt-containerinstance { };
+
+  azure-mgmt-containerregistry = callPackage ../development/python-modules/azure-mgmt-containerregistry { };
+
+  azure-mgmt-containerservice = callPackage ../development/python-modules/azure-mgmt-containerservice { };
+
+  azure-mgmt-core = callPackage ../development/python-modules/azure-mgmt-core { };
+
+  azure-mgmt-cosmosdb = callPackage ../development/python-modules/azure-mgmt-cosmosdb { };
+
+  azure-mgmt-databoxedge = callPackage ../development/python-modules/azure-mgmt-databoxedge { };
+
+  azure-mgmt-datafactory = callPackage ../development/python-modules/azure-mgmt-datafactory { };
+
+  azure-mgmt-datalake-analytics = callPackage ../development/python-modules/azure-mgmt-datalake-analytics { };
+
+  azure-mgmt-datalake-nspkg = callPackage ../development/python-modules/azure-mgmt-datalake-nspkg { };
+
+  azure-mgmt-datalake-store = callPackage ../development/python-modules/azure-mgmt-datalake-store { };
+
+  azure-mgmt-datamigration = callPackage ../development/python-modules/azure-mgmt-datamigration { };
+
+  azure-mgmt-deploymentmanager = callPackage ../development/python-modules/azure-mgmt-deploymentmanager { };
+
+  azure-mgmt-devspaces = callPackage ../development/python-modules/azure-mgmt-devspaces { };
+
+  azure-mgmt-devtestlabs = callPackage ../development/python-modules/azure-mgmt-devtestlabs { };
+
+  azure-mgmt-dns = callPackage ../development/python-modules/azure-mgmt-dns { };
+
+  azure-mgmt-eventgrid = callPackage ../development/python-modules/azure-mgmt-eventgrid { };
+
+  azure-mgmt-eventhub = callPackage ../development/python-modules/azure-mgmt-eventhub { };
+
+  azure-mgmt-extendedlocation = callPackage ../development/python-modules/azure-mgmt-extendedlocation { };
+
+  azure-mgmt-hanaonazure = callPackage ../development/python-modules/azure-mgmt-hanaonazure { };
+
+  azure-mgmt-hdinsight = callPackage ../development/python-modules/azure-mgmt-hdinsight { };
+
+  azure-mgmt-imagebuilder = callPackage ../development/python-modules/azure-mgmt-imagebuilder { };
+
+  azure-mgmt-iotcentral = callPackage ../development/python-modules/azure-mgmt-iotcentral { };
+
+  azure-mgmt-iothub = callPackage ../development/python-modules/azure-mgmt-iothub { };
+
+  azure-mgmt-iothubprovisioningservices = callPackage ../development/python-modules/azure-mgmt-iothubprovisioningservices { };
+
+  azure-mgmt-keyvault = callPackage ../development/python-modules/azure-mgmt-keyvault { };
+
+  azure-mgmt-kusto = callPackage ../development/python-modules/azure-mgmt-kusto { };
+
+  azure-mgmt-loganalytics = callPackage ../development/python-modules/azure-mgmt-loganalytics { };
+
+  azure-mgmt-logic = callPackage ../development/python-modules/azure-mgmt-logic { };
+
+  azure-mgmt-machinelearningcompute = callPackage ../development/python-modules/azure-mgmt-machinelearningcompute { };
+
+  azure-mgmt-managedservices = callPackage ../development/python-modules/azure-mgmt-managedservices { };
+
+  azure-mgmt-managementgroups = callPackage ../development/python-modules/azure-mgmt-managementgroups { };
+
+  azure-mgmt-managementpartner = callPackage ../development/python-modules/azure-mgmt-managementpartner { };
+
+  azure-mgmt-maps = callPackage ../development/python-modules/azure-mgmt-maps { };
+
+  azure-mgmt-marketplaceordering = callPackage ../development/python-modules/azure-mgmt-marketplaceordering { };
+
+  azure-mgmt-media = callPackage ../development/python-modules/azure-mgmt-media { };
+
+  azure-mgmt-monitor = callPackage ../development/python-modules/azure-mgmt-monitor { };
+
+  azure-mgmt-msi = callPackage ../development/python-modules/azure-mgmt-msi { };
+
+  azure-mgmt-netapp = callPackage ../development/python-modules/azure-mgmt-netapp { };
+
+  azure-mgmt-network = callPackage ../development/python-modules/azure-mgmt-network { };
+
+  azure-mgmt-notificationhubs = callPackage ../development/python-modules/azure-mgmt-notificationhubs { };
+
+  azure-mgmt-nspkg = callPackage ../development/python-modules/azure-mgmt-nspkg { };
+
+  azure-mgmt-policyinsights = callPackage ../development/python-modules/azure-mgmt-policyinsights { };
+
+  azure-mgmt-powerbiembedded = callPackage ../development/python-modules/azure-mgmt-powerbiembedded { };
+
+  azure-mgmt-privatedns = callPackage ../development/python-modules/azure-mgmt-privatedns { };
+
+  azure-mgmt-rdbms = callPackage ../development/python-modules/azure-mgmt-rdbms { };
+
+  azure-mgmt-recoveryservicesbackup = callPackage ../development/python-modules/azure-mgmt-recoveryservicesbackup { };
+
+  azure-mgmt-recoveryservices = callPackage ../development/python-modules/azure-mgmt-recoveryservices { };
+
+  azure-mgmt-redhatopenshift = callPackage ../development/python-modules/azure-mgmt-redhatopenshift { };
+
+  azure-mgmt-redis = callPackage ../development/python-modules/azure-mgmt-redis { };
+
+  azure-mgmt-relay = callPackage ../development/python-modules/azure-mgmt-relay { };
+
+  azure-mgmt-reservations = callPackage ../development/python-modules/azure-mgmt-reservations { };
+
+  azure-mgmt-resource = callPackage ../development/python-modules/azure-mgmt-resource { };
+
+  azure-mgmt-scheduler = callPackage ../development/python-modules/azure-mgmt-scheduler { };
+
+  azure-mgmt-search = callPackage ../development/python-modules/azure-mgmt-search { };
+
+  azure-mgmt-security = callPackage ../development/python-modules/azure-mgmt-security { };
+
+  azure-mgmt-servicebus = callPackage ../development/python-modules/azure-mgmt-servicebus { };
+
+  azure-mgmt-servicefabric = callPackage ../development/python-modules/azure-mgmt-servicefabric { };
+
+  azure-mgmt-servicefabricmanagedclusters = callPackage ../development/python-modules/azure-mgmt-servicefabricmanagedclusters { };
+
+  azure-mgmt-servicelinker = callPackage ../development/python-modules/azure-mgmt-servicelinker { };
+
+  azure-mgmt-signalr = callPackage ../development/python-modules/azure-mgmt-signalr { };
+
+  azure-mgmt-sql = callPackage ../development/python-modules/azure-mgmt-sql { };
+
+  azure-mgmt-sqlvirtualmachine = callPackage ../development/python-modules/azure-mgmt-sqlvirtualmachine { };
+
+  azure-mgmt-storage = callPackage ../development/python-modules/azure-mgmt-storage { };
+
+  azure-mgmt-subscription = callPackage ../development/python-modules/azure-mgmt-subscription { };
+
+  azure-mgmt-synapse = callPackage ../development/python-modules/azure-mgmt-synapse { };
+
+  azure-mgmt-trafficmanager = callPackage ../development/python-modules/azure-mgmt-trafficmanager { };
+
+  azure-mgmt-web = callPackage ../development/python-modules/azure-mgmt-web { };
+
+  azure-multiapi-storage = callPackage ../development/python-modules/azure-multiapi-storage { };
+
+  azure-nspkg = callPackage ../development/python-modules/azure-nspkg { };
+
+  azure-servicebus = callPackage ../development/python-modules/azure-servicebus { };
+
+  azure-servicefabric = callPackage ../development/python-modules/azure-servicefabric { };
+
+  azure-servicemanagement-legacy = callPackage ../development/python-modules/azure-servicemanagement-legacy { };
+
+  azure-storage-blob = callPackage ../development/python-modules/azure-storage-blob { };
+
+  azure-storage = callPackage ../development/python-modules/azure-storage { };
+
+  azure-storage-common = callPackage ../development/python-modules/azure-storage-common { };
+
+  azure-storage-file = callPackage ../development/python-modules/azure-storage-file { };
+
+  azure-storage-file-share = callPackage ../development/python-modules/azure-storage-file-share { };
+
+  azure-storage-nspkg = callPackage ../development/python-modules/azure-storage-nspkg { };
+
+  azure-storage-queue = callPackage ../development/python-modules/azure-storage-queue { };
+
+  azure-synapse-accesscontrol = callPackage ../development/python-modules/azure-synapse-accesscontrol { };
+
+  azure-synapse-artifacts = callPackage ../development/python-modules/azure-synapse-artifacts { };
+
+  azure-synapse-managedprivateendpoints = callPackage ../development/python-modules/azure-synapse-managedprivateendpoints { };
+
+  azure-synapse-spark = callPackage ../development/python-modules/azure-synapse-spark { };
+
+  b2sdk = callPackage ../development/python-modules/b2sdk { };
+
+  Babel = callPackage ../development/python-modules/Babel { };
+
+  babelfish = callPackage ../development/python-modules/babelfish { };
+
+  babelgladeextractor = callPackage ../development/python-modules/babelgladeextractor { };
+
+  backcall = callPackage ../development/python-modules/backcall { };
+
+  backoff = callPackage ../development/python-modules/backoff { };
+
+  backports_abc = callPackage ../development/python-modules/backports_abc { };
+
+  backports_csv = callPackage ../development/python-modules/backports_csv { };
+
+  backports-datetime-fromisoformat = callPackage ../development/python-modules/backports-datetime-fromisoformat { };
+
+  backports-entry-points-selectable = callPackage ../development/python-modules/backports-entry-points-selectable { };
+
+  backports_functools_lru_cache = callPackage ../development/python-modules/backports_functools_lru_cache { };
+
+  backports_shutil_get_terminal_size = callPackage ../development/python-modules/backports_shutil_get_terminal_size { };
+
+  backports-shutil-which = callPackage ../development/python-modules/backports-shutil-which { };
+
+  backports_ssl_match_hostname = callPackage ../development/python-modules/backports_ssl_match_hostname { };
+
+  backports_tempfile = callPackage ../development/python-modules/backports_tempfile { };
+
+  backports_unittest-mock = callPackage ../development/python-modules/backports_unittest-mock { };
+
+  backports_weakref = callPackage ../development/python-modules/backports_weakref { };
+
+  backports-zoneinfo = callPackage ../development/python-modules/backports-zoneinfo { };
+
+  bacpypes = callPackage ../development/python-modules/bacpypes { };
+
+  bagit = callPackage ../development/python-modules/bagit { };
+
+  banal = callPackage ../development/python-modules/banal { };
+
+  bandit = callPackage ../development/python-modules/bandit { };
+
+  bap = callPackage ../development/python-modules/bap {
+    inherit (pkgs.ocaml-ng.ocamlPackages) bap;
+  };
+
+  baron = callPackage ../development/python-modules/baron { };
+
+  base36 = callPackage ../development/python-modules/base36 { };
+
+  base58 = callPackage ../development/python-modules/base58 { };
+
+  base58check = callPackage ../development/python-modules/base58check { };
+
+  baseline = callPackage ../development/python-modules/baseline { };
+
+  baselines = callPackage ../development/python-modules/baselines { };
+
+  basemap = callPackage ../development/python-modules/basemap { };
+
+  bash_kernel = callPackage ../development/python-modules/bash_kernel { };
+
+  bashlex = callPackage ../development/python-modules/bashlex { };
+
+  basiciw = callPackage ../development/python-modules/basiciw { };
+
+  batchgenerators = callPackage ../development/python-modules/batchgenerators { };
+
+  batchspawner = callPackage ../development/python-modules/batchspawner { };
+
+  batinfo = callPackage ../development/python-modules/batinfo { };
+
+  bayesian-optimization = callPackage ../development/python-modules/bayesian-optimization { };
+
+  bayespy = callPackage ../development/python-modules/bayespy { };
+
+  bbox = callPackage ../development/python-modules/bbox { };
+
+  bc-python-hcl2 = callPackage ../development/python-modules/bc-python-hcl2 { };
+
+  bcdoc = callPackage ../development/python-modules/bcdoc { };
+
+  bcrypt = callPackage ../development/python-modules/bcrypt { };
+
+  beaker = callPackage ../development/python-modules/beaker { };
+
+  beancount = callPackage ../development/python-modules/beancount { };
+
+  beancount_docverif = callPackage ../development/python-modules/beancount_docverif { };
+
+  beanstalkc = callPackage ../development/python-modules/beanstalkc { };
+
+  beartype = callPackage ../development/python-modules/beartype { };
+
+  beautifulsoup4 = callPackage ../development/python-modules/beautifulsoup4 { };
+
+  beautifultable = callPackage ../development/python-modules/beautifultable { };
+
+  bedup = callPackage ../development/python-modules/bedup { };
+
+  behave = callPackage ../development/python-modules/behave { };
+
+  bellows = callPackage ../development/python-modules/bellows { };
+
+  beniget = callPackage ../development/python-modules/beniget { };
+
+  bespon = callPackage ../development/python-modules/bespon { };
+
+  betacode = callPackage ../development/python-modules/betacode { };
+
+  betamax = callPackage ../development/python-modules/betamax { };
+
+  betamax-matchers = callPackage ../development/python-modules/betamax-matchers { };
+
+  betamax-serializers = callPackage ../development/python-modules/betamax-serializers { };
+
+  bibtexparser = callPackage ../development/python-modules/bibtexparser { };
+
+  bidict = callPackage ../development/python-modules/bidict { };
+
+  bids-validator = callPackage ../development/python-modules/bids-validator { };
+
+  billiard = callPackage ../development/python-modules/billiard { };
+
+  bimmer-connected = callPackage ../development/python-modules/bimmer-connected { };
+
+  binaryornot = callPackage ../development/python-modules/binaryornot { };
+
+  binho-host-adapter = callPackage ../development/python-modules/binho-host-adapter { };
+
+  binwalk = callPackage ../development/python-modules/binwalk { };
+
+  binwalk-full = self.binwalk.override { visualizationSupport = true; };
+
+  biopython = callPackage ../development/python-modules/biopython { };
+
+  biplist = callPackage ../development/python-modules/biplist { };
+
+  bip_utils = callPackage ../development/python-modules/bip_utils { };
+
+  bitarray = callPackage ../development/python-modules/bitarray { };
+
+  bitbox02 = callPackage ../development/python-modules/bitbox02 { };
+
+  bitcoinlib = callPackage ../development/python-modules/bitcoinlib { };
+
+  bitcoin-price-api = callPackage ../development/python-modules/bitcoin-price-api { };
+
+  bitcoin-utils-fork-minimal = callPackage ../development/python-modules/bitcoin-utils-fork-minimal { };
+
+  bitcoinrpc = callPackage ../development/python-modules/bitcoinrpc { };
+
+  bitlist = callPackage ../development/python-modules/bitlist { };
+
+  bitmath = callPackage ../development/python-modules/bitmath { };
+
+  bitstring = callPackage ../development/python-modules/bitstring { };
+
+  bitstruct = callPackage ../development/python-modules/bitstruct { };
+
+  bitvavo-aio = callPackage ../development/python-modules/bitvavo-aio { };
+
+  bizkaibus = callPackage ../development/python-modules/bizkaibus { };
+
+  bjoern = callPackage ../development/python-modules/bjoern { };
+
+  bkcharts = callPackage ../development/python-modules/bkcharts { };
+
+  black = callPackage ../development/python-modules/black { };
+
+  black-macchiato = callPackage ../development/python-modules/black-macchiato { };
+
+  bleach = callPackage ../development/python-modules/bleach { };
+
+  bleak = callPackage ../development/python-modules/bleak { };
+
+  blebox-uniapi = callPackage ../development/python-modules/blebox-uniapi { };
+
+  blessed = callPackage ../development/python-modules/blessed { };
+
+  blessings = callPackage ../development/python-modules/blessings { };
+
+  blinker = callPackage ../development/python-modules/blinker { };
+
+  blinkpy = callPackage ../development/python-modules/blinkpy { };
+
+  BlinkStick = callPackage ../development/python-modules/blinkstick { };
+
+  blis = callPackage ../development/python-modules/blis { };
+
+  blockchain = callPackage ../development/python-modules/blockchain { };
+
+  blockdiag = callPackage ../development/python-modules/blockdiag { };
+
+  block-io = callPackage ../development/python-modules/block-io { };
+
+  blocksat-cli = callPackage ../development/python-modules/blocksat-cli { };
+
+  blspy = callPackage ../development/python-modules/blspy { };
+
+  bluepy = callPackage ../development/python-modules/bluepy { };
+
+  bluepy-devices = callPackage ../development/python-modules/bluepy-devices { };
+
+  blurhash = callPackage ../development/python-modules/blurhash { };
+
+  bme280spi = callPackage ../development/python-modules/bme280spi { };
+
+  bme680 = callPackage ../development/python-modules/bme680 { };
+
+  bokeh = callPackage ../development/python-modules/bokeh { };
+
+  boltons = callPackage ../development/python-modules/boltons { };
+
+  boltztrap2 = callPackage ../development/python-modules/boltztrap2 { };
+
+  bond-api = callPackage ../development/python-modules/bond-api { };
+
+  booleanoperations = callPackage ../development/python-modules/booleanoperations { };
+
+  boolean-py = callPackage ../development/python-modules/boolean-py { };
+
+  # Build boost for this specific Python version
+  # TODO: use separate output for libboost_python.so
+  boost = toPythonModule (pkgs.boost.override {
+    inherit (self) python numpy;
+    enablePython = true;
+  });
+
+  boost169 = toPythonModule (pkgs.boost169.override {
+    inherit (self) python numpy;
+    enablePython = true;
+  });
+
+  boschshcpy = callPackage ../development/python-modules/boschshcpy { };
+
+  boost-histogram = callPackage ../development/python-modules/boost-histogram {
+    inherit (pkgs) boost;
+  };
+
+  boto3 = callPackage ../development/python-modules/boto3 { };
+
+  boto = callPackage ../development/python-modules/boto { };
+
+  botocore = callPackage ../development/python-modules/botocore { };
+
+  bottle = callPackage ../development/python-modules/bottle { };
+
+  bottleneck = callPackage ../development/python-modules/bottleneck { };
+
+  boxx = callPackage ../development/python-modules/boxx { };
+
+  bpycv = callPackage ../development/python-modules/bpycv {};
+
+  bpython = callPackage ../development/python-modules/bpython { };
+
+  braceexpand = callPackage ../development/python-modules/braceexpand { };
+
+  bracex = callPackage ../development/python-modules/bracex { };
+
+  braintree = callPackage ../development/python-modules/braintree { };
+
+  branca = callPackage ../development/python-modules/branca { };
+
+  bravado-core = callPackage ../development/python-modules/bravado-core { };
+
+  bravia-tv = callPackage ../development/python-modules/bravia-tv { };
+
+  breathe = callPackage ../development/python-modules/breathe { };
+
+  breezy = callPackage ../development/python-modules/breezy { };
+
+  brelpy = callPackage ../development/python-modules/brelpy { };
+
+  broadlink = callPackage ../development/python-modules/broadlink { };
+
+  brother = callPackage ../development/python-modules/brother { };
+
+  brother-ql = callPackage ../development/python-modules/brother-ql { };
+
+  brotli = callPackage ../development/python-modules/brotli { };
+
+  brotlicffi = callPackage ../development/python-modules/brotlicffi {
+    inherit (pkgs) brotli;
+  };
+
+  brotlipy = callPackage ../development/python-modules/brotlipy { };
+
+  brottsplatskartan = callPackage ../development/python-modules/brottsplatskartan { };
+
+  browser-cookie3 = callPackage ../development/python-modules/browser-cookie3 { };
+
+  bsddb3 = callPackage ../development/python-modules/bsddb3 { };
+
+  bsdiff4 = callPackage ../development/python-modules/bsdiff4 { };
+
+  bsblan = callPackage ../development/python-modules/bsblan { };
+
+  bson = callPackage ../development/python-modules/bson { };
+
+  btchip = callPackage ../development/python-modules/btchip { };
+
+  bt-proximity = callPackage ../development/python-modules/bt-proximity { };
+
+  BTrees = callPackage ../development/python-modules/btrees { };
+
+  btrfs = callPackage ../development/python-modules/btrfs { };
+
+  bugsnag = callPackage ../development/python-modules/bugsnag { };
+
+  bugwarrior = callPackage ../development/python-modules/bugwarrior { };
+
+  bugz = callPackage ../development/python-modules/bugz { };
+
+  bugzilla = callPackage ../development/python-modules/bugzilla { };
+
+  buienradar = callPackage ../development/python-modules/buienradar { };
+
+  buildbot = callPackage ../development/python-modules/buildbot { };
+
+  buildbot-ui = self.buildbot.withPlugins (with self.buildbot-plugins; [ www ]);
+
+  buildbot-full = self.buildbot.withPlugins (with self.buildbot-plugins; [ www console-view waterfall-view grid-view wsgi-dashboards ]);
+
+  buildbot-pkg = callPackage ../development/python-modules/buildbot/pkg.nix { };
+
+  buildbot-plugins = pkgs.recurseIntoAttrs (callPackage ../development/python-modules/buildbot/plugins.nix { });
+
+  buildbot-worker = callPackage ../development/python-modules/buildbot/worker.nix { };
+
+  build = callPackage ../development/python-modules/build { };
+
+  buildcatrust = callPackage ../development/python-modules/buildcatrust { };
+
+  bumps = callPackage ../development/python-modules/bumps { };
+
+  bunch = callPackage ../development/python-modules/bunch { };
+
+  bx-python = callPackage ../development/python-modules/bx-python { };
+
+  bwapy = callPackage ../development/python-modules/bwapy { };
+
+  bytecode = callPackage ../development/python-modules/bytecode { };
+
+  bz2file = callPackage ../development/python-modules/bz2file { };
+
+  cachecontrol = callPackage ../development/python-modules/cachecontrol { };
+
+  cached-property = callPackage ../development/python-modules/cached-property { };
+
+  cachelib = callPackage ../development/python-modules/cachelib { };
+
+  cachetools = callPackage ../development/python-modules/cachetools { };
+
+  cachey = callPackage ../development/python-modules/cachey { };
+
+  cachy = callPackage ../development/python-modules/cachy { };
+
+  cadquery = callPackage ../development/python-modules/cadquery {
+    inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  caffe = toPythonModule (pkgs.caffe.override {
+    pythonSupport = true;
+    inherit (self) python numpy boost;
+  });
+
+  cairocffi = callPackage ../development/python-modules/cairocffi { };
+
+  cairosvg = callPackage ../development/python-modules/cairosvg { };
+
+  caldav = callPackage ../development/python-modules/caldav { };
+
+  calmjs-parse = callPackage ../development/python-modules/calmjs-parse { };
+
+  can = callPackage ../development/python-modules/can { };
+
+  canmatrix = callPackage ../development/python-modules/canmatrix { };
+
+  canonicaljson = callPackage ../development/python-modules/canonicaljson { };
+
+  canopen = callPackage ../development/python-modules/canopen { };
+
+  capstone = callPackage ../development/python-modules/capstone {
+    inherit (pkgs) capstone;
+  };
+
+  capturer = callPackage ../development/python-modules/capturer { };
+
+  carbon = callPackage ../development/python-modules/carbon { };
+
+  cart = callPackage ../development/python-modules/cart { };
+
+  cartopy = callPackage ../development/python-modules/cartopy { };
+
+  casa-formats-io = callPackage ../development/python-modules/casa-formats-io { };
+
+  casbin = callPackage ../development/python-modules/casbin { };
+
+  case = callPackage ../development/python-modules/case { };
+
+  cassandra-driver = callPackage ../development/python-modules/cassandra-driver { };
+
+  castepxbin = callPackage ../development/python-modules/castepxbin { };
+
+  casttube = callPackage ../development/python-modules/casttube { };
+
+  catalogue = callPackage ../development/python-modules/catalogue { };
+
+  catboost = callPackage ../development/python-modules/catboost { };
+
+  cattrs = callPackage ../development/python-modules/cattrs { };
+
+  cbeams = callPackage ../misc/cbeams { };
+
+  cbor2 = callPackage ../development/python-modules/cbor2 { };
+
+  cbor = callPackage ../development/python-modules/cbor { };
+
+  cccolutils = callPackage ../development/python-modules/cccolutils { };
+
+  cchardet = callPackage ../development/python-modules/cchardet { };
+
+  cdcs = callPackage ../development/python-modules/cdcs { };
+
+  celery = callPackage ../development/python-modules/celery { };
+
+  cement = callPackage ../development/python-modules/cement { };
+
+  censys = callPackage ../development/python-modules/censys { };
+
+  connect-box = callPackage ../development/python-modules/connect_box { };
+
+  connection-pool = callPackage ../development/python-modules/connection-pool { };
+
+  coqpit = callPackage ../development/python-modules/coqpit { };
+
+  coqui-trainer = callPackage ../development/python-modules/coqui-trainer {};
+
+  cepa = callPackage ../development/python-modules/cepa { };
+
+  cerberus = callPackage ../development/python-modules/cerberus { };
+
+  cert-chain-resolver = callPackage ../development/python-modules/cert-chain-resolver { };
+
+  certauth = callPackage ../development/python-modules/certauth { };
+
+  certbot = callPackage ../development/python-modules/certbot { };
+
+  certbot-dns-cloudflare = callPackage ../development/python-modules/certbot-dns-cloudflare { };
+
+  certbot-dns-rfc2136 = callPackage ../development/python-modules/certbot-dns-rfc2136 { };
+
+  certbot-dns-google = callPackage ../development/python-modules/certbot-dns-google { };
+
+  certbot-dns-route53 = callPackage ../development/python-modules/certbot-dns-route53 { };
+
+  certifi = callPackage ../development/python-modules/certifi { };
+
+  certipy = callPackage ../development/python-modules/certipy { };
+
+  certvalidator = callPackage ../development/python-modules/certvalidator { };
+
+  cffi = callPackage ../development/python-modules/cffi { };
+
+  cffsubr = callPackage ../development/python-modules/cffsubr { };
+
+  cfgv = callPackage ../development/python-modules/cfgv { };
+
+  cfn-flip = callPackage ../development/python-modules/cfn-flip { };
+
+  cfn-lint = callPackage ../development/python-modules/cfn-lint { };
+
+  cftime = callPackage ../development/python-modules/cftime { };
+
+  cgen = callPackage ../development/python-modules/cgen { };
+
+  cgroup-utils = callPackage ../development/python-modules/cgroup-utils { };
+
+  chai = callPackage ../development/python-modules/chai { };
+
+  chainer = callPackage ../development/python-modules/chainer {
+    cudaSupport = pkgs.config.cudaSupport or false;
+  };
+
+  chainmap = callPackage ../development/python-modules/chainmap { };
+
+  chalice = callPackage ../development/python-modules/chalice { };
+
+  chameleon = callPackage ../development/python-modules/chameleon { };
+
+  channels = callPackage ../development/python-modules/channels { };
+
+  channels-redis = callPackage ../development/python-modules/channels-redis { };
+
+  characteristic = callPackage ../development/python-modules/characteristic { };
+
+  chardet = callPackage ../development/python-modules/chardet { };
+
+  charset-normalizer = callPackage ../development/python-modules/charset-normalizer { };
+
+  chart-studio = callPackage ../development/python-modules/chart-studio { };
+
+  check-manifest = callPackage ../development/python-modules/check-manifest { };
+
+  cheetah3 = callPackage ../development/python-modules/cheetah3 { };
+
+  cheroot = callPackage ../development/python-modules/cheroot { };
+
+  cherrypy = callPackage ../development/python-modules/cherrypy { };
+
+  chess = callPackage ../development/python-modules/chess { };
+
+  chevron = callPackage ../development/python-modules/chevron { };
+
+  chex = callPackage ../development/python-modules/chex { };
+
+  chiabip158 = callPackage ../development/python-modules/chiabip158 { };
+
+  chiapos = callPackage ../development/python-modules/chiapos { };
+
+  chiavdf = callPackage ../development/python-modules/chiavdf { };
+
+  chirpstack-api = callPackage ../development/python-modules/chirpstack-api { };
+
+  chispa = callPackage ../development/python-modules/chispa { };
+
+  chromaprint = callPackage ../development/python-modules/chromaprint { };
+
+  ci-info = callPackage ../development/python-modules/ci-info { };
+
+  ci-py = callPackage ../development/python-modules/ci-py { };
+
+  circuit-webhook = callPackage ../development/python-modules/circuit-webhook { };
+
+  circuitbreaker = callPackage ../development/python-modules/circuitbreaker { };
+
+  cirq = callPackage ../development/python-modules/cirq { };
+
+  cirq-aqt = callPackage ../development/python-modules/cirq-aqt { };
+
+  cirq-core = callPackage ../development/python-modules/cirq-core { };
+
+  cirq-ionq = callPackage ../development/python-modules/cirq-ionq { };
+
+  cirq-google = callPackage ../development/python-modules/cirq-google { };
+
+  cirq-rigetti = callPackage ../development/python-modules/cirq-rigetti { };
+
+  cirq-pasqal = callPackage ../development/python-modules/cirq-pasqal { };
+
+  cirq-web = callPackage ../development/python-modules/cirq-web { };
+
+  ciscoconfparse = callPackage ../development/python-modules/ciscoconfparse { };
+
+  ciscomobilityexpress = callPackage ../development/python-modules/ciscomobilityexpress { };
+
+  ciso8601 = callPackage ../development/python-modules/ciso8601 { };
+
+  citeproc-py = callPackage ../development/python-modules/citeproc-py { };
+
+  cjkwrap = callPackage ../development/python-modules/cjkwrap { };
+
+  ckcc-protocol = callPackage ../development/python-modules/ckcc-protocol { };
+
+  claripy = callPackage ../development/python-modules/claripy { };
+
+  cld2-cffi = callPackage ../development/python-modules/cld2-cffi { };
+
+  cle = callPackage ../development/python-modules/cle { };
+
+  cleo = callPackage ../development/python-modules/cleo { };
+
+  clevercsv = callPackage ../development/python-modules/clevercsv { };
+
+  clf = callPackage ../development/python-modules/clf { };
+
+  cock = callPackage ../development/python-modules/cock { };
+
+  click = callPackage ../development/python-modules/click { };
+
+  clickclick = callPackage ../development/python-modules/clickclick { };
+
+  click-completion = callPackage ../development/python-modules/click-completion { };
+
+  click-configfile = callPackage ../development/python-modules/click-configfile { };
+
+  click-datetime = callPackage ../development/python-modules/click-datetime { };
+
+  click-default-group = callPackage ../development/python-modules/click-default-group { };
+
+  click-didyoumean = callPackage ../development/python-modules/click-didyoumean { };
+
+  click-help-colors = callPackage ../development/python-modules/click-help-colors { };
+
+  click-log = callPackage ../development/python-modules/click-log { };
+
+  click-option-group = callPackage ../development/python-modules/click-option-group { };
+
+  click-plugins = callPackage ../development/python-modules/click-plugins { };
+
+  click-spinner = callPackage ../development/python-modules/click-spinner { };
+
+  click-repl = callPackage ../development/python-modules/click-repl { };
+
+  click-threading = callPackage ../development/python-modules/click-threading { };
+
+  clickgen = callPackage ../development/python-modules/clickgen { };
+
+  clickhouse-cityhash = callPackage ../development/python-modules/clickhouse-cityhash { };
+
+  clickhouse-cli = callPackage ../development/python-modules/clickhouse-cli { };
+
+  clickhouse-driver = callPackage ../development/python-modules/clickhouse-driver { };
+
+  cliff = callPackage ../development/python-modules/cliff { };
+
+  clifford = callPackage ../development/python-modules/clifford { };
+
+  cligj = callPackage ../development/python-modules/cligj { };
+
+  cli-helpers = callPackage ../development/python-modules/cli-helpers { };
+
+  clikit = callPackage ../development/python-modules/clikit { };
+
+  clint = callPackage ../development/python-modules/clint { };
+
+  clintermission = callPackage ../development/python-modules/clintermission { };
+
+  clize = callPackage ../development/python-modules/clize { };
+
+  clldutils = callPackage ../development/python-modules/clldutils { };
+
+  cloudflare = callPackage ../development/python-modules/cloudflare { };
+
+  cloudpickle = callPackage ../development/python-modules/cloudpickle { };
+
+  cloudscraper = callPackage ../development/python-modules/cloudscraper { };
+
+  cloudsmith-api = callPackage ../development/python-modules/cloudsmith-api { };
+
+  cloudsplaining = callPackage ../development/python-modules/cloudsplaining { };
+
+  clustershell = callPackage ../development/python-modules/clustershell { };
+
+  clvm = callPackage ../development/python-modules/clvm { };
+
+  clvm-rs = callPackage ../development/python-modules/clvm-rs { };
+
+  clvm-tools = callPackage ../development/python-modules/clvm-tools { };
+
+  cma = callPackage ../development/python-modules/cma { };
+
+  cmarkgfm = callPackage ../development/python-modules/cmarkgfm { };
+
+  cmd2 = callPackage ../development/python-modules/cmd2 { };
+
+  cmdline = callPackage ../development/python-modules/cmdline { };
+
+  cmigemo = callPackage ../development/python-modules/cmigemo {
+    inherit (pkgs) cmigemo;
+  };
+
+  cmsis-svd = callPackage ../development/python-modules/cmsis-svd { };
+
+  cntk = callPackage ../development/python-modules/cntk { };
+
+  cnvkit = callPackage ../development/python-modules/cnvkit { };
+
+  co2signal = callPackage ../development/python-modules/co2signal { };
+
+  coapthon3 = callPackage ../development/python-modules/coapthon3 { };
+
+  coconut = callPackage ../development/python-modules/coconut { };
+
+  cocotb = callPackage ../development/python-modules/cocotb { };
+
+  cocotb-bus = callPackage ../development/python-modules/cocotb-bus { };
+
+  codecov = callPackage ../development/python-modules/codecov { };
+
+  codespell = callPackage ../development/python-modules/codespell { };
+
+  cogapp = callPackage ../development/python-modules/cogapp { };
+
+  ColanderAlchemy = callPackage ../development/python-modules/colanderalchemy { };
+
+  colander = callPackage ../development/python-modules/colander { };
+
+  collections-extended = callPackage ../development/python-modules/collections-extended { };
+
+  colorama = callPackage ../development/python-modules/colorama { };
+
+  colorcet = callPackage ../development/python-modules/colorcet { };
+
+  colorclass = callPackage ../development/python-modules/colorclass { };
+
+  colored = callPackage ../development/python-modules/colored { };
+
+  colored-traceback = callPackage ../development/python-modules/colored-traceback { };
+
+  coloredlogs = callPackage ../development/python-modules/coloredlogs { };
+
+  colorful = callPackage ../development/python-modules/colorful { };
+
+  colorlog = callPackage ../development/python-modules/colorlog { };
+
+  colorlover = callPackage ../development/python-modules/colorlover { };
+
+  colormath = callPackage ../development/python-modules/colormath { };
+
+  colorspacious = callPackage ../development/python-modules/colorspacious { };
+
+  colorthief = callPackage ../development/python-modules/colorthief { };
+
+  colour = callPackage ../development/python-modules/colour { };
+
+  cometblue-lite = callPackage ../development/python-modules/cometblue-lite { };
+
+  commandparse = callPackage ../development/python-modules/commandparse { };
+
+  commentjson = callPackage ../development/python-modules/commentjson { };
+
+  commoncode = callPackage ../development/python-modules/commoncode { };
+
+  CommonMark = callPackage ../development/python-modules/commonmark { };
+
+  compiledb = callPackage ../development/python-modules/compiledb { };
+
+  compreffor = callPackage ../development/python-modules/compreffor { };
+
+  concurrent-log-handler = callPackage ../development/python-modules/concurrent-log-handler { };
+
+  conda = callPackage ../development/python-modules/conda { };
+
+  configargparse = callPackage ../development/python-modules/configargparse { };
+
+  configobj = callPackage ../development/python-modules/configobj { };
+
+  configparser = callPackage ../development/python-modules/configparser { };
+
+  configshell = callPackage ../development/python-modules/configshell { };
+
+  confluent-kafka = callPackage ../development/python-modules/confluent-kafka { };
+
+  confuse = callPackage ../development/python-modules/confuse { };
+
+  confight = callPackage ../development/python-modules/confight { };
+
+  connexion = callPackage ../development/python-modules/connexion { };
+
+  cons = callPackage ../development/python-modules/cons { };
+
+  consonance = callPackage ../development/python-modules/consonance { };
+
+  constantly = callPackage ../development/python-modules/constantly { };
+
+  construct = callPackage ../development/python-modules/construct { };
+
+  consul = callPackage ../development/python-modules/consul { };
+
+  contexter = callPackage ../development/python-modules/contexter { };
+
+  contextlib2 = callPackage ../development/python-modules/contextlib2 { };
+
+  contextvars = callPackage ../development/python-modules/contextvars { };
+
+  convertdate = callPackage ../development/python-modules/convertdate { };
+
+  cookiecutter = callPackage ../development/python-modules/cookiecutter { };
+
+  cookies = callPackage ../development/python-modules/cookies { };
+
+  coordinates = callPackage ../development/python-modules/coordinates { };
+
+  coreapi = callPackage ../development/python-modules/coreapi { };
+
+  coreschema = callPackage ../development/python-modules/coreschema { };
+
+  cornice = callPackage ../development/python-modules/cornice { };
+
+  coronavirus = callPackage ../development/python-modules/coronavirus { };
+
+  corsair-scan = callPackage ../development/python-modules/corsair-scan { };
+
+  cot = callPackage ../development/python-modules/cot { };
+
+  covCore = callPackage ../development/python-modules/cov-core { };
+
+  coverage = callPackage ../development/python-modules/coverage { };
+
+  coveralls = callPackage ../development/python-modules/coveralls { };
+
+  cppe = callPackage ../development/python-modules/cppe {
+    cppe = pkgs.cppe;
+  };
+
+  cppheaderparser = callPackage ../development/python-modules/cppheaderparser { };
+
+  cppy = callPackage ../development/python-modules/cppy { };
+
+  cpyparsing = callPackage ../development/python-modules/cpyparsing { };
+
+  cram = callPackage ../development/python-modules/cram { };
+
+  cramjam = callPackage ../development/python-modules/cramjam { };
+
+  crashtest = callPackage ../development/python-modules/crashtest { };
+
+  crate = callPackage ../development/python-modules/crate { };
+
+  crayons = callPackage ../development/python-modules/crayons { };
+
+  crc16 = callPackage ../development/python-modules/crc16 { };
+
+  crc32c = callPackage ../development/python-modules/crc32c { };
+
+  crccheck = callPackage ../development/python-modules/crccheck { };
+
+  crcmod = callPackage ../development/python-modules/crcmod { };
+
+  credstash = callPackage ../development/python-modules/credstash { };
+
+  criticality-score = callPackage ../development/python-modules/criticality-score { };
+
+  croniter = callPackage ../development/python-modules/croniter { };
+
+  crownstone-cloud = callPackage ../development/python-modules/crownstone-cloud { };
+
+  crownstone-core = callPackage ../development/python-modules/crownstone-core { };
+
+  crownstone-sse = callPackage ../development/python-modules/crownstone-sse { };
+
+  crownstone-uart = callPackage ../development/python-modules/crownstone-uart { };
+
+  cryptacular = callPackage ../development/python-modules/cryptacular { };
+
+  cryptography = callPackage ../development/python-modules/cryptography {
+    inherit (pkgs.darwin) libiconv;
+  };
+
+  cryptography_vectors = callPackage ../development/python-modules/cryptography/vectors.nix { };
+
+  crytic-compile = callPackage ../development/python-modules/crytic-compile { };
+
+  csrmesh  = callPackage ../development/python-modules/csrmesh { };
+
+  csscompressor = callPackage ../development/python-modules/csscompressor { };
+
+  cssmin = callPackage ../development/python-modules/cssmin { };
+
+  css-html-js-minify = callPackage ../development/python-modules/css-html-js-minify { };
+
+  css-parser = callPackage ../development/python-modules/css-parser { };
+
+  cssselect2 = callPackage ../development/python-modules/cssselect2 { };
+
+  cssselect = callPackage ../development/python-modules/cssselect { };
+
+  cssutils = callPackage ../development/python-modules/cssutils { };
+
+  csvw = callPackage ../development/python-modules/csvw { };
+
+  cucumber-tag-expressions = callPackage ../development/python-modules/cucumber-tag-expressions { };
+
+  cufflinks = callPackage ../development/python-modules/cufflinks { };
+
+  cupy = callPackage ../development/python-modules/cupy {
+    cudatoolkit = pkgs.cudatoolkit_11;
+    cudnn = pkgs.cudnn_8_1_cudatoolkit_11;
+    nccl = pkgs.nccl_cudatoolkit_11;
+    cutensor = pkgs.cutensor_cudatoolkit_11;
+  };
+
+  curio = callPackage ../development/python-modules/curio { };
+
+  curtsies = callPackage ../development/python-modules/curtsies { };
+
+  curve25519-donna = callPackage ../development/python-modules/curve25519-donna { };
+
+  cvxopt = callPackage ../development/python-modules/cvxopt { };
+
+  cvxpy = callPackage ../development/python-modules/cvxpy { };
+
+  cwcwidth = callPackage ../development/python-modules/cwcwidth { };
+
+  cx_Freeze = callPackage ../development/python-modules/cx_freeze { };
+
+  cx_oracle = callPackage ../development/python-modules/cx_oracle { };
+
+  cxxfilt = callPackage ../development/python-modules/cxxfilt { };
+
+  cycler = callPackage ../development/python-modules/cycler { };
+
+  cyclonedx-python-lib = callPackage ../development/python-modules/cyclonedx-python-lib { };
+
+  cymem = callPackage ../development/python-modules/cymem { };
+
+  cypari2 = callPackage ../development/python-modules/cypari2 { };
+
+  cysignals = callPackage ../development/python-modules/cysignals { };
+
+  cython = callPackage ../development/python-modules/Cython { };
+
+  cytoolz = callPackage ../development/python-modules/cytoolz { };
+
+  d2to1 = callPackage ../development/python-modules/d2to1 { };
+
+  dacite = callPackage ../development/python-modules/dacite { };
+
+  daemonize = callPackage ../development/python-modules/daemonize { };
+
+  daemonocle = callPackage ../development/python-modules/daemonocle { };
+
+  daphne = callPackage ../development/python-modules/daphne { };
+
+  dasbus = callPackage ../development/python-modules/dasbus { };
+
+  dash = callPackage ../development/python-modules/dash { };
+
+  dash-core-components = callPackage ../development/python-modules/dash-core-components { };
+
+  dash-html-components = callPackage ../development/python-modules/dash-html-components { };
+
+  dash-renderer = callPackage ../development/python-modules/dash-renderer { };
+
+  dash-table = callPackage ../development/python-modules/dash-table { };
+
+  dask = callPackage ../development/python-modules/dask { };
+
+  dask-gateway = callPackage ../development/python-modules/dask-gateway { };
+
+  dask-gateway-server = callPackage ../development/python-modules/dask-gateway-server { };
+
+  dask-glm = callPackage ../development/python-modules/dask-glm { };
+
+  dask-image = callPackage ../development/python-modules/dask-image { };
+
+  dask-jobqueue = callPackage ../development/python-modules/dask-jobqueue { };
+
+  dask-ml = callPackage ../development/python-modules/dask-ml { };
+
+  dask-mpi = callPackage ../development/python-modules/dask-mpi { };
+
+  dask-xgboost = callPackage ../development/python-modules/dask-xgboost { };
+
+  databases = callPackage ../development/python-modules/databases { };
+
+  databricks-cli = callPackage ../development/python-modules/databricks-cli { };
+
+  databricks-connect = callPackage ../development/python-modules/databricks-connect { };
+
+  dataclasses = callPackage ../development/python-modules/dataclasses { };
+
+  dataclasses-json = callPackage ../development/python-modules/dataclasses-json { };
+
+  datadiff = callPackage ../development/python-modules/datadiff { };
+
+  datadog = callPackage ../development/python-modules/datadog { };
+
+  datafusion = callPackage ../development/python-modules/datafusion { };
+
+  datamodeldict = callPackage ../development/python-modules/datamodeldict { };
+
+  dataset = callPackage ../development/python-modules/dataset { };
+
+  datasets = callPackage ../development/python-modules/datasets { };
+
+  datasette = callPackage ../development/python-modules/datasette { };
+
+  datasette-template-sql = callPackage ../development/python-modules/datasette-template-sql { };
+
+  datashader = callPackage ../development/python-modules/datashader { };
+
+  datashape = callPackage ../development/python-modules/datashape { };
+
+  datatable = callPackage ../development/python-modules/datatable { };
+
+  dateparser = callPackage ../development/python-modules/dateparser { };
+
+  dateutils = callPackage ../development/python-modules/dateutils { };
+
+  datrie = callPackage ../development/python-modules/datrie { };
+
+  dawg-python = callPackage ../development/python-modules/dawg-python { };
+
+  dbf = callPackage ../development/python-modules/dbf { };
+
+  dbfread = callPackage ../development/python-modules/dbfread { };
+
+  dbus-next = callPackage ../development/python-modules/dbus-next { };
+
+  dbus-python = callPackage ../development/python-modules/dbus {
+    inherit (pkgs) dbus;
+  };
+
+  dbutils = callPackage ../development/python-modules/dbutils { };
+
+  dcmstack = callPackage ../development/python-modules/dcmstack { };
+
+  ddt = callPackage ../development/python-modules/ddt { };
+
+  deap = callPackage ../development/python-modules/deap { };
+
+  debian = callPackage ../development/python-modules/debian { };
+
+  debian-inspector = callPackage ../development/python-modules/debian-inspector { };
+
+  debtcollector = callPackage ../development/python-modules/debtcollector { };
+
+  debts = callPackage ../development/python-modules/debts { };
+
+  debugpy = callPackage ../development/python-modules/debugpy { };
+
+  decli = callPackage ../development/python-modules/decli { };
+
+  decorator = callPackage ../development/python-modules/decorator { };
+
+  decopatch = callPackage ../development/python-modules/decopatch { };
+
+  deemix = callPackage ../development/python-modules/deemix { };
+
+  deep_merge = callPackage ../development/python-modules/deep_merge { };
+
+  deepdiff = callPackage ../development/python-modules/deepdiff { };
+
+  deepdish = callPackage ../development/python-modules/deepdish { };
+
+  deepmerge = callPackage ../development/python-modules/deepmerge { };
+
+  deeptoolsintervals = callPackage ../development/python-modules/deeptoolsintervals { };
+
+  deep-translator = callPackage ../development/python-modules/deep-translator { };
+
+  deezer-py = callPackage ../development/python-modules/deezer-py { };
+
+  deezer-python = callPackage ../development/python-modules/deezer-python { };
+
+  defcon = callPackage ../development/python-modules/defcon { };
+
+  deform = callPackage ../development/python-modules/deform { };
+
+  defusedxml = callPackage ../development/python-modules/defusedxml { };
+
+  delegator-py = callPackage ../development/python-modules/delegator-py { };
+
+  delorean = callPackage ../development/python-modules/delorean { };
+
+  deltachat = callPackage ../development/python-modules/deltachat { };
+
+  deluge-client = callPackage ../development/python-modules/deluge-client { };
+
+  demjson3 = callPackage ../development/python-modules/demjson3 { };
+
+  dendropy = callPackage ../development/python-modules/dendropy { };
+
+  denonavr = callPackage ../development/python-modules/denonavr { };
+
+  dependency-injector = callPackage ../development/python-modules/dependency-injector { };
+
+  deprecated = callPackage ../development/python-modules/deprecated { };
+
+  deprecation = callPackage ../development/python-modules/deprecation { };
+
+  derpconf = callPackage ../development/python-modules/derpconf { };
+
+  descartes = callPackage ../development/python-modules/descartes { };
+
+  desktop-notifier = callPackage ../development/python-modules/desktop-notifier { };
+
+  detect-secrets = callPackage ../development/python-modules/detect-secrets { };
+
+  devolo-home-control-api = callPackage ../development/python-modules/devolo-home-control-api { };
+
+  devolo-plc-api = callPackage ../development/python-modules/devolo-plc-api { };
+
+  devpi-common = callPackage ../development/python-modules/devpi-common { };
+
+  devtools = callPackage ../development/python-modules/devtools { };
+
+  diagrams = callPackage ../development/python-modules/diagrams { };
+
+  diceware = callPackage ../development/python-modules/diceware { };
+
+  dicom2nifti = callPackage ../development/python-modules/dicom2nifti { };
+
+  dict2xml = callPackage ../development/python-modules/dict2xml { };
+
+  dictdiffer = callPackage ../development/python-modules/dictdiffer { };
+
+  dictionaries = callPackage ../development/python-modules/dictionaries { };
+
+  dictpath = callPackage ../development/python-modules/dictpath { };
+
+  dicttoxml = callPackage ../development/python-modules/dicttoxml { };
+
+  diff-cover = callPackage ../development/python-modules/diff-cover { };
+
+  diff-match-patch = callPackage ../development/python-modules/diff-match-patch { };
+
+  digital-ocean = callPackage ../development/python-modules/digitalocean { };
+
+  digi-xbee = callPackage ../development/python-modules/digi-xbee { };
+
+  dill = callPackage ../development/python-modules/dill { };
+
+  dingz = callPackage ../development/python-modules/dingz { };
+
+  diofant = callPackage ../development/python-modules/diofant { };
+
+  dipy = callPackage ../development/python-modules/dipy { };
+
+  directv = callPackage ../development/python-modules/directv { };
+
+  discid = callPackage ../development/python-modules/discid { };
+
+  discogs-client = callPackage ../development/python-modules/discogs-client { };
+
+  discordpy = callPackage ../development/python-modules/discordpy { };
+
+  discovery30303 = callPackage ../development/python-modules/discovery30303 { };
+
+  diskcache = callPackage ../development/python-modules/diskcache { };
+
+  dissononce = callPackage ../development/python-modules/dissononce { };
+
+  distlib = callPackage ../development/python-modules/distlib { };
+
+  distorm3 = callPackage ../development/python-modules/distorm3 { };
+
+  distributed = callPackage ../development/python-modules/distributed { };
+
+  distro = callPackage ../development/python-modules/distro { };
+
+  distutils_extra = callPackage ../development/python-modules/distutils_extra { };
+
+  django = self.django_2;
+
+  # Current LTS
+  django_2 = callPackage ../development/python-modules/django/2.nix { };
+  django_3 = callPackage ../development/python-modules/django/3.nix { };
+
+  # Current latest
+  django_4 = callPackage ../development/python-modules/django/4.nix { };
+
+  django-allauth = callPackage ../development/python-modules/django-allauth { };
+
+  django-anymail = callPackage ../development/python-modules/django-anymail { };
+
+  django_appconf = callPackage ../development/python-modules/django_appconf { };
+
+  django-auth-ldap = callPackage ../development/python-modules/django-auth-ldap { };
+
+  django-cache-url = callPackage ../development/python-modules/django-cache-url { };
+
+  django-cacheops = callPackage ../development/python-modules/django-cacheops { };
+
+  django_classytags = callPackage ../development/python-modules/django_classytags { };
+
+  django-cleanup = callPackage ../development/python-modules/django-cleanup { };
+
+  django_colorful = callPackage ../development/python-modules/django_colorful { };
+
+  django_compat = callPackage ../development/python-modules/django-compat { };
+
+  django_compressor = callPackage ../development/python-modules/django_compressor { };
+
+  django-configurations = callPackage ../development/python-modules/django-configurations { };
+
+  django_contrib_comments = callPackage ../development/python-modules/django_contrib_comments { };
+
+  django-cors-headers = callPackage ../development/python-modules/django-cors-headers { };
+
+  django-csp = callPackage ../development/python-modules/django-csp { };
+
+  django-debug-toolbar = callPackage ../development/python-modules/django-debug-toolbar { };
+
+  django-discover-runner = callPackage ../development/python-modules/django-discover-runner { };
+
+  django-dynamic-preferences = callPackage ../development/python-modules/django-dynamic-preferences { };
+
+  django-environ = callPackage ../development/python-modules/django_environ { };
+
+  django-extensions = callPackage ../development/python-modules/django-extensions { };
+
+  django-filter = callPackage ../development/python-modules/django-filter { };
+
+  django-formtools = callPackage ../development/python-modules/django-formtools { };
+
+  django-graphiql-debug-toolbar = callPackage ../development/python-modules/django-graphiql-debug-toolbar { };
+
+  django-gravatar2 = callPackage ../development/python-modules/django-gravatar2 { };
+
+  django_guardian = callPackage ../development/python-modules/django_guardian { };
+
+  django-haystack = callPackage ../development/python-modules/django-haystack { };
+
+  django_hijack_admin = callPackage ../development/python-modules/django-hijack-admin { };
+
+  django_hijack = callPackage ../development/python-modules/django-hijack { };
+  # This package may need an older version of Django. Override the package set and set e.g. `django = super.django_1_9`. See the Nixpkgs manual for examples on how to override the package set.
+
+  django-ipware = callPackage ../development/python-modules/django-ipware { };
+
+  django-jinja = callPackage ../development/python-modules/django-jinja2 { };
+
+  django-js-asset = callPackage ../development/python-modules/django-js-asset { };
+
+  django-logentry-admin = callPackage ../development/python-modules/django-logentry-admin { };
+
+  django-mailman3 = callPackage ../development/python-modules/django-mailman3 { };
+
+  django_modelcluster = callPackage ../development/python-modules/django_modelcluster { };
+
+  django-multiselectfield = callPackage ../development/python-modules/django-multiselectfield { };
+
+  django-maintenance-mode = callPackage ../development/python-modules/django-maintenance-mode { };
+
+  django-mptt = callPackage ../development/python-modules/django-mptt { };
+
+  django_nose = callPackage ../development/python-modules/django_nose { };
+
+  django-oauth-toolkit = callPackage ../development/python-modules/django-oauth-toolkit { };
+
+  django-paintstore = callPackage ../development/python-modules/django-paintstore { };
+
+  django-pglocks = callPackage ../development/python-modules/django-pglocks { };
+
+  django-picklefield = callPackage ../development/python-modules/django-picklefield { };
+
+  django_polymorphic = callPackage ../development/python-modules/django-polymorphic { };
+
+  django-postgresql-netfields = callPackage ../development/python-modules/django-postgresql-netfields { };
+
+  django-prometheus = callPackage ../development/python-modules/django-prometheus { };
+
+  django-q = callPackage ../development/python-modules/django-q { };
+
+  djangoql = callPackage ../development/python-modules/djangoql { };
+
+  django-ranged-response = callPackage ../development/python-modules/django-ranged-response { };
+
+  django-raster = callPackage ../development/python-modules/django-raster { };
+
+  django-redis = callPackage ../development/python-modules/django-redis { };
+
+  django-rest-auth = callPackage ../development/python-modules/django-rest-auth { };
+
+  django-rq = callPackage ../development/python-modules/django-rq { };
+
+  djangorestframework = callPackage ../development/python-modules/djangorestframework { };
+
+  djangorestframework-simplejwt = callPackage ../development/python-modules/djangorestframework-simplejwt { };
+
+  django_reversion = callPackage ../development/python-modules/django_reversion { };
+
+  django-sampledatahelper = callPackage ../development/python-modules/django-sampledatahelper { };
+
+  django-sesame = callPackage ../development/python-modules/django-sesame { };
+
+  django_silk = callPackage ../development/python-modules/django_silk { };
+
+  django-simple-captcha = callPackage ../development/python-modules/django-simple-captcha { };
+
+  django-sites = callPackage ../development/python-modules/django-sites { };
+
+  django-sr = callPackage ../development/python-modules/django-sr { };
+
+  django-statici18n = callPackage ../development/python-modules/django-statici18n { };
+
+  django-storages = callPackage ../development/python-modules/django-storages { };
+
+  django-tables2 = callPackage ../development/python-modules/django-tables2 { };
+
+  django_tagging = callPackage ../development/python-modules/django_tagging { };
+
+  django-taggit = callPackage ../development/python-modules/django-taggit { };
+
+  django-timezone-field = callPackage ../development/python-modules/django-timezone-field { };
+
+  django_treebeard = callPackage ../development/python-modules/django_treebeard { };
+
+  django-versatileimagefield = callPackage ../development/python-modules/django-versatileimagefield { };
+
+  django-webpack-loader = callPackage ../development/python-modules/django-webpack-loader { };
+
+  django-widget-tweaks = callPackage ../development/python-modules/django-widget-tweaks { };
+
+  dj-database-url = callPackage ../development/python-modules/dj-database-url { };
+
+  dj-email-url = callPackage ../development/python-modules/dj-email-url { };
+
+  djmail = callPackage ../development/python-modules/djmail { };
+
+  dj-search-url = callPackage ../development/python-modules/dj-search-url { };
+
+  dkimpy = callPackage ../development/python-modules/dkimpy { };
+
+  dlib = callPackage ../development/python-modules/dlib {
+    inherit (pkgs) dlib;
+  };
+
+  dlx = callPackage ../development/python-modules/dlx { };
+
+  dmenu-python = callPackage ../development/python-modules/dmenu { };
+
+  dm-haiku = callPackage ../development/python-modules/dm-haiku { };
+
+  dm-sonnet = callPackage ../development/python-modules/dm-sonnet { };
+
+  dm-tree = callPackage ../development/python-modules/dm-tree { };
+
+  dnachisel = callPackage ../development/python-modules/dnachisel { };
+
+  dnslib = callPackage ../development/python-modules/dnslib { };
+
+  dnspython = callPackage ../development/python-modules/dnspython { };
+
+  dnspythonchia = callPackage ../development/python-modules/dnspythonchia { };
+
+  doc8 = callPackage ../development/python-modules/doc8 { };
+
+  docker = callPackage ../development/python-modules/docker { };
+
+  dockerfile-parse = callPackage ../development/python-modules/dockerfile-parse { };
+
+  dockerpty = callPackage ../development/python-modules/dockerpty { };
+
+  docker_pycreds = callPackage ../development/python-modules/docker-pycreds { };
+
+  docker-py = callPackage ../development/python-modules/docker-py { };
+
+  dockerspawner = callPackage ../development/python-modules/dockerspawner { };
+
+  docloud = callPackage ../development/python-modules/docloud { };
+
+  docstring-to-markdown = callPackage ../development/python-modules/docstring-to-markdown { };
+
+  docstring-parser = callPackage ../development/python-modules/docstring-parser { };
+
+  docopt = callPackage ../development/python-modules/docopt { };
+
+  docopt-ng = callPackage ../development/python-modules/docopt-ng { };
+
+  docplex = callPackage ../development/python-modules/docplex { };
+
+  docrep = callPackage ../development/python-modules/docrep { };
+
+  doctest-ignore-unicode = callPackage ../development/python-modules/doctest-ignore-unicode { };
+
+  docutils = callPackage ../development/python-modules/docutils { };
+
+  docx2python = callPackage ../development/python-modules/docx2python { };
+
+  dodgy = callPackage ../development/python-modules/dodgy { };
+
+  dogpile-cache = callPackage ../development/python-modules/dogpile-cache { };
+
+  dogtail = callPackage ../development/python-modules/dogtail { };
+
+  doit = callPackage ../development/python-modules/doit { };
+
+  dominate = callPackage ../development/python-modules/dominate { };
+
+  doorbirdpy = callPackage ../development/python-modules/doorbirdpy { };
+
+  dopy = callPackage ../development/python-modules/dopy { };
+
+  dotty-dict = callPackage ../development/python-modules/dotty-dict { };
+
+  dot2tex = callPackage ../development/python-modules/dot2tex {
+    inherit (pkgs) graphviz;
+  };
+
+  dotmap = callPackage ../development/python-modules/dotmap { };
+
+  downloader-cli = callPackage ../development/python-modules/downloader-cli { };
+
+  dparse = callPackage ../development/python-modules/dparse { };
+
+  dpath = callPackage ../development/python-modules/dpath { };
+
+  dpkt = callPackage ../development/python-modules/dpkt { };
+
+  dragonfly = callPackage ../development/python-modules/dragonfly { };
+
+  drf-jwt = callPackage ../development/python-modules/drf-jwt { };
+
+  drf-nested-routers = callPackage ../development/python-modules/drf-nested-routers { };
+
+  drf-yasg = callPackage ../development/python-modules/drf-yasg { };
+
+  drivelib = callPackage ../development/python-modules/drivelib { };
+
+  drms = callPackage ../development/python-modules/drms { };
+
+  dropbox = callPackage ../development/python-modules/dropbox { };
+
+  ds-store = callPackage ../development/python-modules/ds-store { };
+
+  ds4drv = callPackage ../development/python-modules/ds4drv { };
+
+  dsinternals = callPackage ../development/python-modules/dsinternals { };
+
+  dsmr-parser = callPackage ../development/python-modules/dsmr-parser { };
+
+  dtlssocket = callPackage ../development/python-modules/dtlssocket { };
+
+  duckdb = callPackage ../development/python-modules/duckdb {
+    inherit (pkgs) duckdb;
+  };
+
+  duecredit = callPackage ../development/python-modules/duecredit { };
+
+  duet = callPackage ../development/python-modules/duet { };
+
+  dufte = callPackage ../development/python-modules/dufte { };
+
+  dugong = callPackage ../development/python-modules/dugong { };
+
+  dulwich = callPackage ../development/python-modules/dulwich { };
+
+  dungeon-eos = callPackage ../development/python-modules/dungeon-eos { };
+
+  dwdwfsapi = callPackage ../development/python-modules/dwdwfsapi { };
+
+  dyn = callPackage ../development/python-modules/dyn { };
+
+  dynalite-devices = callPackage ../development/python-modules/dynalite-devices { };
+
+  dynd = callPackage ../development/python-modules/dynd { };
+
+  easydict = callPackage ../development/python-modules/easydict { };
+
+  easygui = callPackage ../development/python-modules/easygui { };
+
+  EasyProcess = callPackage ../development/python-modules/easyprocess { };
+
+  easysnmp = callPackage ../development/python-modules/easysnmp { };
+
+  easy-thumbnails = callPackage ../development/python-modules/easy-thumbnails { };
+
+  easywatch = callPackage ../development/python-modules/easywatch { };
+
+  ebaysdk = callPackage ../development/python-modules/ebaysdk { };
+
+  ec2instanceconnectcli = callPackage ../tools/virtualization/ec2instanceconnectcli { };
+
+  eccodes = toPythonModule (pkgs.eccodes.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  ecdsa = callPackage ../development/python-modules/ecdsa { };
+
+  ecoaliface = callPackage ../development/python-modules/ecoaliface { };
+
+  ecos = callPackage ../development/python-modules/ecos { };
+
+  ecpy = callPackage ../development/python-modules/ecpy { };
+
+  ecs-logging =  callPackage ../development/python-modules/ecs-logging { };
+
+  ed25519 = callPackage ../development/python-modules/ed25519 { };
+
+  editables = callPackage ../development/python-modules/editables { };
+
+  editdistance = callPackage ../development/python-modules/editdistance { };
+
+  editdistance-s = callPackage ../development/python-modules/editdistance-s { };
+
+  editorconfig = callPackage ../development/python-modules/editorconfig { };
+
+  edward = callPackage ../development/python-modules/edward { };
+
+  effect = callPackage ../development/python-modules/effect { };
+
+  eggdeps = callPackage ../development/python-modules/eggdeps { };
+
+  einops = callPackage ../development/python-modules/einops { };
+
+  eiswarnung = callPackage ../development/python-modules/eiswarnung { };
+
+  elgato = callPackage ../development/python-modules/elgato { };
+
+  elkm1-lib = callPackage ../development/python-modules/elkm1-lib { };
+
+  elastic-apm = callPackage ../development/python-modules/elastic-apm { };
+
+  elasticsearch = callPackage ../development/python-modules/elasticsearch { };
+
+  elasticsearch-dsl = callPackage ../development/python-modules/elasticsearch-dsl { };
+
+  elasticsearchdsl = self.elasticsearch-dsl;
+
+  elegy = callPackage ../development/python-modules/elegy { };
+
+  elementpath = callPackage ../development/python-modules/elementpath { };
+
+  elevate = callPackage ../development/python-modules/elevate { };
+
+  eliot = callPackage ../development/python-modules/eliot { };
+
+  eliqonline = callPackage ../development/python-modules/eliqonline { };
+
+  elmax = callPackage ../development/python-modules/elmax { };
+
+  elmax-api = callPackage ../development/python-modules/elmax-api { };
+
+  emailthreads = callPackage ../development/python-modules/emailthreads { };
+
+  email_validator = callPackage ../development/python-modules/email-validator { };
+
+  embrace = callPackage ../development/python-modules/embrace { };
+
+  emcee = callPackage ../development/python-modules/emcee { };
+
+  emv = callPackage ../development/python-modules/emv { };
+
+  emoji = callPackage ../development/python-modules/emoji { };
+
+  empty-files = callPackage ../development/python-modules/empty-files { };
+
+  empy = callPackage ../development/python-modules/empy { };
+
+  emulated-roku = callPackage ../development/python-modules/emulated-roku { };
+
+  enaml = callPackage ../development/python-modules/enaml { };
+
+  enamlx = callPackage ../development/python-modules/enamlx { };
+
+  enlighten = callPackage ../development/python-modules/enlighten { };
+
+  enocean = callPackage ../development/python-modules/enocean { };
+
+  enrich = callPackage ../development/python-modules/enrich { };
+
+  entrance = callPackage ../development/python-modules/entrance {
+    routerFeatures = false;
+  };
+
+  entrance-with-router-features = callPackage ../development/python-modules/entrance {
+    routerFeatures = true;
+  };
+
+  entry-points-txt = callPackage ../development/python-modules/entry-points-txt { };
+
+  entrypoint2 = callPackage ../development/python-modules/entrypoint2 { };
+
+  entrypoints = callPackage ../development/python-modules/entrypoints { };
+
+  enturclient = callPackage ../development/python-modules/enturclient { };
+
+  enum34 = callPackage ../development/python-modules/enum34 { };
+
+  enum-compat = callPackage ../development/python-modules/enum-compat { };
+
+  env-canada = callPackage ../development/python-modules/env-canada { };
+
+  environmental-override = callPackage ../development/python-modules/environmental-override { };
+
+  environs = callPackage ../development/python-modules/environs { };
+
+  envisage = callPackage ../development/python-modules/envisage { };
+
+  envs = callPackage ../development/python-modules/envs { };
+
+  envoy-reader = callPackage ../development/python-modules/envoy-reader { };
+
+  envoy-utils = callPackage ../development/python-modules/envoy-utils { };
+
+  enzyme = callPackage ../development/python-modules/enzyme { };
+
+  epc = callPackage ../development/python-modules/epc { };
+
+  ephem = callPackage ../development/python-modules/ephem { };
+
+  epson-projector = callPackage ../development/python-modules/epson-projector { };
+
+  eradicate = callPackage ../development/python-modules/eradicate { };
+
+  esprima = callPackage ../development/python-modules/esprima { };
+
+  escapism = callPackage ../development/python-modules/escapism { };
+
+  etcd = callPackage ../development/python-modules/etcd { };
+
+  etelemetry = callPackage ../development/python-modules/etelemetry { };
+
+  etebase = callPackage ../development/python-modules/etebase {
+    inherit (pkgs.darwin.apple_sdk.frameworks) Security;
+  };
+
+  etebase-server = callPackage ../servers/etebase { };
+
+  eternalegypt = callPackage ../development/python-modules/eternalegypt { };
+
+  etesync = callPackage ../development/python-modules/etesync { };
+
+  eth-hash = callPackage ../development/python-modules/eth-hash { };
+
+  eth-typing = callPackage ../development/python-modules/eth-typing { };
+
+  eth-utils = callPackage ../development/python-modules/eth-utils { };
+
+  etuples = callPackage ../development/python-modules/etuples { };
+
+  et_xmlfile = callPackage ../development/python-modules/et_xmlfile { };
+
+  ev3dev2 = callPackage ../development/python-modules/ev3dev2 { };
+
+  evdev = callPackage ../development/python-modules/evdev { };
+
+  eve = callPackage ../development/python-modules/eve { };
+
+  eventlet = callPackage ../development/python-modules/eventlet { };
+
+  events = callPackage ../development/python-modules/events { };
+
+  evernote = callPackage ../development/python-modules/evernote { };
+
+  evohome-async = callPackage ../development/python-modules/evohome-async { };
+
+  ewmh = callPackage ../development/python-modules/ewmh { };
+
+  exdown = callPackage ../development/python-modules/exdown { };
+
+  exchangelib = callPackage ../development/python-modules/exchangelib { };
+
+  execnet = callPackage ../development/python-modules/execnet { };
+
+  executing = callPackage ../development/python-modules/executing { };
+
+  executor = callPackage ../development/python-modules/executor { };
+
+  exif = callPackage ../development/python-modules/exif { };
+
+  exifread = callPackage ../development/python-modules/exifread { };
+
+  expects = callPackage ../development/python-modules/expects { };
+
+  expiringdict = callPackage ../development/python-modules/expiringdict { };
+
+  explorerscript = callPackage ../development/python-modules/explorerscript { };
+
+  exrex = callPackage ../development/python-modules/exrex { };
+
+  extractcode = callPackage ../development/python-modules/extractcode { };
+
+  extractcode-7z = callPackage ../development/python-modules/extractcode/7z.nix {
+    inherit (pkgs) p7zip;
+  };
+
+  extractcode-libarchive = callPackage ../development/python-modules/extractcode/libarchive.nix {
+    inherit (pkgs)
+      libarchive
+      libb2
+      bzip2
+      expat
+      lz4
+      xz
+      zlib
+      zstd;
+  };
+
+  extras = callPackage ../development/python-modules/extras { };
+
+  eyeD3 = callPackage ../development/python-modules/eyed3 { };
+
+  ezdxf = callPackage ../development/python-modules/ezdxf { };
+
+  Fabric = callPackage ../development/python-modules/Fabric { };
+
+  faadelays = callPackage ../development/python-modules/faadelays { };
+
+  fabulous = callPackage ../development/python-modules/fabulous { };
+
+  facebook-sdk = callPackage ../development/python-modules/facebook-sdk { };
+
+  face = callPackage ../development/python-modules/face { };
+
+  facedancer = callPackage ../development/python-modules/facedancer { };
+
+  face_recognition = callPackage ../development/python-modules/face_recognition { };
+
+  face_recognition_models = callPackage ../development/python-modules/face_recognition_models { };
+
+  factory_boy = callPackage ../development/python-modules/factory_boy { };
+
+  fake_factory = callPackage ../development/python-modules/fake_factory { };
+
+  fake-useragent = callPackage ../development/python-modules/fake-useragent { };
+
+  faker = callPackage ../development/python-modules/faker { };
+
+  fakeredis = callPackage ../development/python-modules/fakeredis { };
+
+  falcon = callPackage ../development/python-modules/falcon { };
+
+  faraday-agent-parameters-types = callPackage ../development/python-modules/faraday-agent-parameters-types { };
+
+  faraday-plugins = callPackage ../development/python-modules/faraday-plugins { };
+
+  fastapi = callPackage ../development/python-modules/fastapi { };
+
+  fastavro = callPackage ../development/python-modules/fastavro { };
+
+  fastcache = callPackage ../development/python-modules/fastcache { };
+
+  fastcore = callPackage ../development/python-modules/fastcore { };
+
+  fastdiff = callPackage ../development/python-modules/fastdiff { };
+
+  fastdtw = callPackage ../development/python-modules/fastdtw { };
+
+  fastecdsa = callPackage ../development/python-modules/fastecdsa { };
+
+  fasteners = callPackage ../development/python-modules/fasteners { };
+
+  fastentrypoints = callPackage ../development/python-modules/fastentrypoints { };
+
+  fastimport = callPackage ../development/python-modules/fastimport { };
+
+  fastjet = toPythonModule (pkgs.fastjet.override {
+    withPython = true;
+    inherit (self) python;
+  });
+
+  fastjsonschema = callPackage ../development/python-modules/fastjsonschema { };
+
+  fastnlo_toolkit = toPythonModule (pkgs.fastnlo_toolkit.override {
+    withPython = true;
+    inherit (self) python;
+  });
+
+  fastnumbers = callPackage ../development/python-modules/fastnumbers { };
+
+  fastpair = callPackage ../development/python-modules/fastpair { };
+
+  fastparquet = callPackage ../development/python-modules/fastparquet { };
+
+  fastpbkdf2 = callPackage ../development/python-modules/fastpbkdf2 { };
+
+  fastprogress = callPackage ../development/python-modules/fastprogress { };
+
+  fastrlock = callPackage ../development/python-modules/fastrlock { };
+
+  fasttext = callPackage ../development/python-modules/fasttext { };
+
+  favicon = callPackage ../development/python-modules/favicon { };
+
+  fb-re2 = callPackage ../development/python-modules/fb-re2 { };
+
+  fe25519 = callPackage ../development/python-modules/fe25519 { };
+
+  feedgen = callPackage ../development/python-modules/feedgen { };
+
+  feedgenerator = callPackage ../development/python-modules/feedgenerator {
+    inherit (pkgs) glibcLocales;
+  };
+
+  feedparser = callPackage ../development/python-modules/feedparser { };
+
+  fenics = callPackage ../development/libraries/science/math/fenics {
+    hdf5 = pkgs.hdf5_1_10;
+  };
+
+  ffcv = callPackage ../development/python-modules/ffcv { };
+
+  ffmpeg-python = callPackage ../development/python-modules/ffmpeg-python { };
+
+  ffmpeg-progress-yield = callPackage ../development/python-modules/ffmpeg-progress-yield { };
+
+  fiblary3-fork = callPackage ../development/python-modules/fiblary3-fork { };
+
+  fido2 = callPackage ../development/python-modules/fido2 { };
+
+  fields = callPackage ../development/python-modules/fields { };
+
+  file-read-backwards = callPackage ../development/python-modules/file-read-backwards { };
+
+  filebrowser_safe = callPackage ../development/python-modules/filebrowser_safe { };
+
+  filebytes = callPackage ../development/python-modules/filebytes { };
+
+  filelock = callPackage ../development/python-modules/filelock { };
+
+  filemagic = callPackage ../development/python-modules/filemagic { };
+
+  filetype = callPackage ../development/python-modules/filetype { };
+
+  filterpy = callPackage ../development/python-modules/filterpy { };
+
+  finalfusion = callPackage ../development/python-modules/finalfusion { };
+
+  findimports = callPackage ../development/python-modules/findimports { };
+
+  fingerprints = callPackage ../development/python-modules/fingerprints { };
+
+  finitude = callPackage ../development/python-modules/finitude { };
+
+  fints = callPackage ../development/python-modules/fints { };
+
+  fiona = callPackage ../development/python-modules/fiona { };
+
+  fipy = callPackage ../development/python-modules/fipy { };
+
+  fire = callPackage ../development/python-modules/fire { };
+
+  firetv = callPackage ../development/python-modules/firetv { };
+
+  first = callPackage ../development/python-modules/first { };
+
+  fitbit = callPackage ../development/python-modules/fitbit { };
+
+  fixerio = callPackage ../development/python-modules/fixerio { };
+
+  fixtures = callPackage ../development/python-modules/fixtures { };
+
+  fjaraskupan = callPackage ../development/python-modules/fjaraskupan { };
+
+  flake8-blind-except = callPackage ../development/python-modules/flake8-blind-except { };
+
+  flake8-bugbear = callPackage ../development/python-modules/flake8-bugbear { };
+
+  flake8 = callPackage ../development/python-modules/flake8 { };
+
+  flake8-length = callPackage ../development/python-modules/flake8-length { };
+
+  flake8-debugger = callPackage ../development/python-modules/flake8-debugger { };
+
+  flake8-docstrings = callPackage ../development/python-modules/flake8-docstrings { };
+
+  flake8-future-import = callPackage ../development/python-modules/flake8-future-import { };
+
+  flake8-import-order = callPackage ../development/python-modules/flake8-import-order { };
+
+  flake8-polyfill = callPackage ../development/python-modules/flake8-polyfill { };
+
+  flaky = callPackage ../development/python-modules/flaky { };
+
+  flametree = callPackage ../development/python-modules/flametree { };
+
+  flammkuchen = callPackage ../development/python-modules/flammkuchen { };
+
+  flashtext = callPackage ../development/python-modules/flashtext { };
+
+  flask-admin = callPackage ../development/python-modules/flask-admin { };
+
+  flask-api = callPackage ../development/python-modules/flask-api { };
+
+  flask-appbuilder = callPackage ../development/python-modules/flask-appbuilder { };
+
+  flask_assets = callPackage ../development/python-modules/flask-assets { };
+
+  flask-autoindex = callPackage ../development/python-modules/flask-autoindex { };
+
+  flask-babel = callPackage ../development/python-modules/flask-babel { };
+
+  flaskbabel = callPackage ../development/python-modules/flaskbabel { };
+
+  flask-babelex = callPackage ../development/python-modules/flask-babelex { };
+
+  flask-bcrypt = callPackage ../development/python-modules/flask-bcrypt { };
+
+  flask-bootstrap = callPackage ../development/python-modules/flask-bootstrap { };
+
+  flask-caching = callPackage ../development/python-modules/flask-caching { };
+
+  flask = callPackage ../development/python-modules/flask { };
+
+  flask-common = callPackage ../development/python-modules/flask-common { };
+
+  flask-compress = callPackage ../development/python-modules/flask-compress { };
+
+  flask-cors = callPackage ../development/python-modules/flask-cors { };
+
+  flask_elastic = callPackage ../development/python-modules/flask-elastic { };
+
+  flask-gravatar = callPackage ../development/python-modules/flask-gravatar { };
+
+  flask-httpauth = callPackage ../development/python-modules/flask-httpauth { };
+
+  flask-jwt-extended = callPackage ../development/python-modules/flask-jwt-extended { };
+
+  flask-limiter = callPackage ../development/python-modules/flask-limiter { };
+
+  flask_login = callPackage ../development/python-modules/flask-login { };
+
+  flask_mail = callPackage ../development/python-modules/flask-mail { };
+
+  flask_marshmallow = callPackage ../development/python-modules/flask-marshmallow { };
+
+  flask_migrate = callPackage ../development/python-modules/flask-migrate { };
+
+  flask-mongoengine = callPackage ../development/python-modules/flask-mongoengine { };
+
+  flask-openid = callPackage ../development/python-modules/flask-openid { };
+
+  flask-paginate = callPackage ../development/python-modules/flask-paginate { };
+
+  flask-paranoid = callPackage ../development/python-modules/flask-paranoid { };
+
+  flask_principal = callPackage ../development/python-modules/flask-principal { };
+
+  flask-pymongo = callPackage ../development/python-modules/Flask-PyMongo { };
+
+  flask-restful = callPackage ../development/python-modules/flask-restful { };
+
+  flask-restplus = callPackage ../development/python-modules/flask-restplus { };
+
+  flask-restx = callPackage ../development/python-modules/flask-restx { };
+
+  flask-reverse-proxy-fix = callPackage ../development/python-modules/flask-reverse-proxy-fix { };
+
+  flask_script = callPackage ../development/python-modules/flask-script { };
+
+  flask-seasurf = callPackage ../development/python-modules/flask-seasurf { };
+
+  flask-session = callPackage ../development/python-modules/flask-session { };
+
+  flask-security-too = callPackage ../development/python-modules/flask-security-too { };
+
+  flask-silk = callPackage ../development/python-modules/flask-silk { };
+
+  flask-socketio = callPackage ../development/python-modules/flask-socketio { };
+
+  flask-sockets = callPackage ../development/python-modules/flask-sockets { };
+
+  flask_sqlalchemy = callPackage ../development/python-modules/flask-sqlalchemy { };
+
+  flask-sslify = callPackage ../development/python-modules/flask-sslify { };
+
+  flask-swagger = callPackage ../development/python-modules/flask-swagger { };
+
+  flask-swagger-ui = callPackage ../development/python-modules/flask-swagger-ui { };
+
+  flask-talisman = callPackage ../development/python-modules/flask-talisman { };
+
+  flask_testing = callPackage ../development/python-modules/flask-testing { };
+
+  flask-versioned = callPackage ../development/python-modules/flask-versioned { };
+
+  flask_wtf = callPackage ../development/python-modules/flask-wtf { };
+
+  flatbuffers = callPackage ../development/python-modules/flatbuffers {
+    inherit (pkgs) flatbuffers;
+  };
+
+  flatten-dict = callPackage ../development/python-modules/flatten-dict { };
+
+  flax = callPackage ../development/python-modules/flax { };
+
+  fleep = callPackage ../development/python-modules/fleep { };
+
+  flexmock = callPackage ../development/python-modules/flexmock { };
+
+  flickrapi = callPackage ../development/python-modules/flickrapi { };
+
+  flipr-api = callPackage ../development/python-modules/flipr-api { };
+
+  flit = callPackage ../development/python-modules/flit { };
+
+  flit-core = callPackage ../development/python-modules/flit-core { };
+
+  flower = callPackage ../development/python-modules/flower { };
+
+  flowlogs_reader = callPackage ../development/python-modules/flowlogs_reader { };
+
+  fluent-logger = callPackage ../development/python-modules/fluent-logger { };
+
+  flufl_bounce = callPackage ../development/python-modules/flufl/bounce.nix { };
+
+  flufl_i18n = callPackage ../development/python-modules/flufl/i18n.nix { };
+
+  flufl_lock = callPackage ../development/python-modules/flufl/lock.nix { };
+
+  flux-led = callPackage ../development/python-modules/flux-led { };
+
+  flynt = callPackage ../development/python-modules/flynt { };
+
+  fn = callPackage ../development/python-modules/fn { };
+
+  fnvhash = callPackage ../development/python-modules/fnvhash { };
+
+  folium = callPackage ../development/python-modules/folium { };
+
+  fontforge = toPythonModule (pkgs.fontforge.override {
+    withPython = true;
+    inherit python;
+  });
+
+  fontmath = callPackage ../development/python-modules/fontmath { };
+
+  fontparts = callPackage ../development/python-modules/fontparts { };
+
+  fontpens = callPackage ../development/python-modules/fontpens { };
+
+  fonttools = callPackage ../development/python-modules/fonttools { };
+
+  foobot-async = callPackage ../development/python-modules/foobot-async { };
+
+  foolscap = callPackage ../development/python-modules/foolscap { };
+
+  forbiddenfruit = callPackage ../development/python-modules/forbiddenfruit { };
+
+  fordpass = callPackage ../development/python-modules/fordpass { };
+
+  forecast-solar = callPackage ../development/python-modules/forecast-solar { };
+
+  formbox = callPackage ../development/python-modules/formbox { };
+
+  fortiosapi = callPackage ../development/python-modules/fortiosapi { };
+
+  FormEncode = callPackage ../development/python-modules/FormEncode { };
+
+  foundationdb51 = callPackage ../servers/foundationdb/python.nix { foundationdb = pkgs.foundationdb51; };
+  foundationdb52 = callPackage ../servers/foundationdb/python.nix { foundationdb = pkgs.foundationdb52; };
+  foundationdb60 = callPackage ../servers/foundationdb/python.nix { foundationdb = pkgs.foundationdb60; };
+  foundationdb61 = callPackage ../servers/foundationdb/python.nix { foundationdb = pkgs.foundationdb61; };
+
+  fountains = callPackage ../development/python-modules/fountains { };
+
+  foxdot = callPackage ../development/python-modules/foxdot { };
+
+  fpdf = callPackage ../development/python-modules/fpdf { };
+
+  fpylll = callPackage ../development/python-modules/fpylll { };
+
+  fpyutils = callPackage ../development/python-modules/fpyutils { };
+
+  freebox-api = callPackage ../development/python-modules/freebox-api { };
+
+  freetype-py = callPackage ../development/python-modules/freetype-py { };
+
+  freezegun = callPackage ../development/python-modules/freezegun { };
+
+  frigidaire = callPackage ../development/python-modules/frigidaire { };
+
+  frilouz = callPackage ../development/python-modules/frilouz { };
+
+  fritzconnection = callPackage ../development/python-modules/fritzconnection { };
+
+  fritzprofiles = callPackage ../development/python-modules/fritzprofiles { };
+
+  frozendict = callPackage ../development/python-modules/frozendict { };
+
+  frozenlist = callPackage ../development/python-modules/frozenlist { };
+
+  fs = callPackage ../development/python-modules/fs { };
+
+  fs-s3fs = callPackage ../development/python-modules/fs-s3fs { };
+
+  fsspec = callPackage ../development/python-modules/fsspec { };
+
+  ftfy = callPackage ../development/python-modules/ftfy { };
+
+  ftputil = callPackage ../development/python-modules/ftputil { };
+
+  funcparserlib = callPackage ../development/python-modules/funcparserlib { };
+
+  funcsigs = callPackage ../development/python-modules/funcsigs { };
+
+  functools32 = callPackage ../development/python-modules/functools32 { };
+
+  funcy = callPackage ../development/python-modules/funcy { };
+
+  furl = callPackage ../development/python-modules/furl { };
+
+  furo = callPackage ../development/python-modules/furo { };
+
+  fuse = callPackage ../development/python-modules/fuse-python {
+    inherit (pkgs) fuse;
+  };
+
+  fusepy = callPackage ../development/python-modules/fusepy { };
+
+  future = callPackage ../development/python-modules/future { };
+
+  future-fstrings = callPackage ../development/python-modules/future-fstrings { };
+
+  future-typing = callPackage ../development/python-modules/future-typing { };
+
+  fuzzyfinder = callPackage ../development/python-modules/fuzzyfinder { };
+
+  fuzzywuzzy = callPackage ../development/python-modules/fuzzywuzzy { };
+
+  fx2 = callPackage ../development/python-modules/fx2 { };
+
+  galario = toPythonModule (pkgs.galario.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  gamble = callPackage ../development/python-modules/gamble { };
+
+  gaphas = callPackage ../development/python-modules/gaphas { };
+
+  garminconnect-aio = callPackage ../development/python-modules/garminconnect-aio { };
+
+  garminconnect = callPackage ../development/python-modules/garminconnect { };
+
+  gast = callPackage ../development/python-modules/gast { };
+
+  garages-amsterdam = callPackage ../development/python-modules/garages-amsterdam { };
+
+  gbinder-python = callPackage ../development/python-modules/gbinder-python { };
+
+  gcovr = callPackage ../development/python-modules/gcovr { };
+
+  gcsfs = callPackage ../development/python-modules/gcsfs { };
+
+  gdal = toPythonModule (pkgs.gdal.override { pythonPackages = self; });
+
+  gdata = callPackage ../development/python-modules/gdata { };
+
+  gdcm = toPythonModule (pkgs.gdcm.override {
+    inherit (self) python;
+    enablePython = true;
+  });
+
+  gdown = callPackage ../development/python-modules/gdown { };
+
+  gdtoolkit = callPackage ../development/python-modules/gdtoolkit { };
+
+  ge25519 = callPackage ../development/python-modules/ge25519 { };
+
+  geant4 = toPythonModule (pkgs.geant4.override {
+    enablePython = true;
+    python3 = python;
+  });
+
+  geeknote = callPackage ../development/python-modules/geeknote { };
+
+  gehomesdk = callPackage ../development/python-modules/gehomesdk { };
+
+  gekitchen = callPackage ../development/python-modules/gekitchen { };
+
+  gemfileparser = callPackage ../development/python-modules/gemfileparser { };
+
+  genanki = callPackage ../development/python-modules/genanki { };
+
+  generic = callPackage ../development/python-modules/generic { };
+
+  geniushub-client = callPackage ../development/python-modules/geniushub-client { };
+
+  genome-collector = callPackage ../development/python-modules/genome-collector { };
+
+  genpy = callPackage ../development/python-modules/genpy { };
+
+  genshi = callPackage ../development/python-modules/genshi { };
+
+  gensim = callPackage ../development/python-modules/gensim { };
+
+  gentools = callPackage ../development/python-modules/gentools { };
+
+  genzshcomp = callPackage ../development/python-modules/genzshcomp { };
+
+  geoalchemy2 = callPackage ../development/python-modules/geoalchemy2 { };
+
+  geocachingapi = callPackage ../development/python-modules/geocachingapi { };
+
+  geographiclib = callPackage ../development/python-modules/geographiclib { };
+
+  geoip2 = callPackage ../development/python-modules/geoip2 { };
+
+  GeoIP = callPackage ../development/python-modules/GeoIP { };
+
+  geojson = callPackage ../development/python-modules/geojson { };
+
+  geojson-client = callPackage ../development/python-modules/geojson-client { };
+
+  geomet = callPackage ../development/python-modules/geomet { };
+
+  geometric = callPackage ../development/python-modules/geometric { };
+
+  geopandas = callPackage ../development/python-modules/geopandas { };
+
+  geopy = callPackage ../development/python-modules/geopy { };
+
+  georss-client = callPackage ../development/python-modules/georss-client { };
+
+  georss-generic-client = callPackage ../development/python-modules/georss-generic-client { };
+
+  georss-ign-sismologia-client = callPackage ../development/python-modules/georss-ign-sismologia-client { };
+
+  georss-ingv-centro-nazionale-terremoti-client = callPackage ../development/python-modules/georss-ingv-centro-nazionale-terremoti-client { };
+
+  georss-nrcan-earthquakes-client = callPackage ../development/python-modules/georss-nrcan-earthquakes-client { };
+
+  georss-qld-bushfire-alert-client = callPackage ../development/python-modules/georss-qld-bushfire-alert-client { };
+
+  georss-tfs-incidents-client = callPackage ../development/python-modules/georss-tfs-incidents-client { };
+
+  georss-wa-dfes-client = callPackage ../development/python-modules/georss-wa-dfes-client { };
+
+  getmac = callPackage ../development/python-modules/getmac { };
+
+  getkey = callPackage ../development/python-modules/getkey { };
+
+  get-video-properties = callPackage ../development/python-modules/get-video-properties { };
+
+  gevent = callPackage ../development/python-modules/gevent { };
+
+  geventhttpclient = callPackage ../development/python-modules/geventhttpclient { };
+
+  gevent-socketio = callPackage ../development/python-modules/gevent-socketio { };
+
+  gevent-websocket = callPackage ../development/python-modules/gevent-websocket { };
+
+  gflags = callPackage ../development/python-modules/gflags { };
+
+  ghapi = callPackage ../development/python-modules/ghapi { };
+
+  ghdiff = callPackage ../development/python-modules/ghdiff { };
+
+  ghp-import = callPackage ../development/python-modules/ghp-import { };
+
+  ghrepo-stats = callPackage ../development/python-modules/ghrepo-stats { };
+
+  gibberish-detector = callPackage ../development/python-modules/gibberish-detector { };
+
+  gidgethub = callPackage ../development/python-modules/gidgethub { };
+
+  gigalixir = callPackage ../development/python-modules/gigalixir { };
+
+  gin-config = callPackage ../development/python-modules/gin-config { };
+
+  gios = callPackage ../development/python-modules/gios { };
+
+  gipc = callPackage ../development/python-modules/gipc { };
+
+  gistyc = callPackage ../development/python-modules/gistyc { };
+
+  git-annex-adapter =
+    callPackage ../development/python-modules/git-annex-adapter { };
+
+  git-filter-repo = callPackage ../development/python-modules/git-filter-repo { };
+
+  gitdb = callPackage ../development/python-modules/gitdb { };
+
+  github3_py = callPackage ../development/python-modules/github3_py { };
+
+  github-to-sqlite = callPackage ../development/python-modules/github-to-sqlite { };
+
+  github-webhook = callPackage ../development/python-modules/github-webhook { };
+  GitPython = callPackage ../development/python-modules/GitPython { };
+
+  git-revise = callPackage ../development/python-modules/git-revise { };
+
+  git-sweep = callPackage ../development/python-modules/git-sweep { };
+
+  glances-api = callPackage ../development/python-modules/glances-api { };
+
+  glasgow = callPackage ../development/python-modules/glasgow { };
+
+  glcontext = callPackage ../development/python-modules/glcontext { };
+
+  glean-parser = callPackage ../development/python-modules/glean-parser { };
+
+  glean-sdk = callPackage ../development/python-modules/glean-sdk { };
+
+  glfw = callPackage ../development/python-modules/glfw { };
+
+  glob2 = callPackage ../development/python-modules/glob2 { };
+
+  globre = callPackage ../development/python-modules/globre { };
+
+  globus-sdk = callPackage ../development/python-modules/globus-sdk { };
+
+  glom = callPackage ../development/python-modules/glom { };
+
+  glymur = callPackage ../development/python-modules/glymur { };
+
+  gmpy2 = callPackage ../development/python-modules/gmpy2 { };
+
+  gmpy = callPackage ../development/python-modules/gmpy { };
+
+  gntp = callPackage ../development/python-modules/gntp { };
+
+  gnureadline = callPackage ../development/python-modules/gnureadline { };
+
+  goalzero = callPackage ../development/python-modules/goalzero { };
+
+  goobook = callPackage ../development/python-modules/goobook { };
+
+  goocalendar = callPackage ../development/python-modules/goocalendar { };
+
+  goodwe = callPackage ../development/python-modules/goodwe { };
+
+  google-api-core = callPackage ../development/python-modules/google-api-core { };
+
+  google-api-python-client = callPackage ../development/python-modules/google-api-python-client { };
+
+  googleapis-common-protos = callPackage ../development/python-modules/googleapis-common-protos { };
+
+  google-auth = callPackage ../development/python-modules/google-auth { };
+
+  google-auth-httplib2 = callPackage ../development/python-modules/google-auth-httplib2 { };
+
+  google-auth-oauthlib = callPackage ../development/python-modules/google-auth-oauthlib { };
+
+  google-cloud-access-context-manager = callPackage ../development/python-modules/google-cloud-access-context-manager { };
+
+  google-cloud-appengine-logging = callPackage ../development/python-modules/google-cloud-appengine-logging { };
+
+  google-cloud-asset = callPackage ../development/python-modules/google-cloud-asset { };
+
+  google-cloud-audit-log = callPackage ../development/python-modules/google-cloud-audit-log { };
+
+  google-cloud-automl = callPackage ../development/python-modules/google-cloud-automl { };
+
+  google-cloud-bigquery = callPackage ../development/python-modules/google-cloud-bigquery { };
+
+  google-cloud-bigquery-datatransfer = callPackage ../development/python-modules/google-cloud-bigquery-datatransfer { };
+
+  google-cloud-bigquery-logging = callPackage ../development/python-modules/google-cloud-bigquery-logging { };
+
+  google-cloud-bigtable = callPackage ../development/python-modules/google-cloud-bigtable { };
+
+  google-cloud-container = callPackage ../development/python-modules/google-cloud-container { };
+
+  google-cloud-core = callPackage ../development/python-modules/google-cloud-core { };
+
+  google-cloud-datacatalog = callPackage ../development/python-modules/google-cloud-datacatalog { };
+
+  google-cloud-dataproc = callPackage ../development/python-modules/google-cloud-dataproc { };
+
+  google-cloud-datastore = callPackage ../development/python-modules/google-cloud-datastore { };
+
+  google-cloud-dlp = callPackage ../development/python-modules/google-cloud-dlp { };
+
+  google-cloud-dns = callPackage ../development/python-modules/google-cloud-dns { };
+
+  google-cloud-error-reporting = callPackage ../development/python-modules/google-cloud-error-reporting { };
+
+  google-cloud-firestore = callPackage ../development/python-modules/google-cloud-firestore { };
+
+  google-cloud-iam = callPackage ../development/python-modules/google-cloud-iam { };
+
+  google-cloud-iam-logging = callPackage ../development/python-modules/google-cloud-iam-logging { };
+
+  google-cloud-iot = callPackage ../development/python-modules/google-cloud-iot { };
+
+  google-cloud-kms = callPackage ../development/python-modules/google-cloud-kms { };
+
+  google-cloud-language = callPackage ../development/python-modules/google-cloud-language { };
+
+  google-cloud-logging = callPackage ../development/python-modules/google-cloud-logging { };
+
+  google-cloud-monitoring = callPackage ../development/python-modules/google-cloud-monitoring { };
+
+  google-cloud-org-policy = callPackage ../development/python-modules/google-cloud-org-policy { };
+
+  google-cloud-os-config = callPackage ../development/python-modules/google-cloud-os-config { };
+
+  google-cloud-pubsub = callPackage ../development/python-modules/google-cloud-pubsub { };
+
+  google-cloud-redis = callPackage ../development/python-modules/google-cloud-redis { };
+
+  google-cloud-resource-manager = callPackage ../development/python-modules/google-cloud-resource-manager { };
+
+  google-cloud-runtimeconfig = callPackage ../development/python-modules/google-cloud-runtimeconfig { };
+
+  google-cloud-secret-manager = callPackage ../development/python-modules/google-cloud-secret-manager { };
+
+  google-cloud-securitycenter = callPackage ../development/python-modules/google-cloud-securitycenter { };
+
+  google-cloud-spanner = callPackage ../development/python-modules/google-cloud-spanner { };
+
+  google-cloud-speech = callPackage ../development/python-modules/google-cloud-speech { };
+
+  google-cloud-storage = callPackage ../development/python-modules/google-cloud-storage { };
+
+  google-cloud-tasks = callPackage ../development/python-modules/google-cloud-tasks { };
+
+  google-cloud-testutils = callPackage ../development/python-modules/google-cloud-testutils { };
+
+  google-cloud-texttospeech = callPackage ../development/python-modules/google-cloud-texttospeech { };
+
+  google-cloud-trace = callPackage ../development/python-modules/google-cloud-trace { };
+
+  google-cloud-translate = callPackage ../development/python-modules/google-cloud-translate { };
+
+  google-cloud-videointelligence = callPackage ../development/python-modules/google-cloud-videointelligence { };
+
+  google-cloud-vision = callPackage ../development/python-modules/google-cloud-vision { };
+
+  google-cloud-websecurityscanner = callPackage ../development/python-modules/google-cloud-websecurityscanner { };
+
+  google-compute-engine = callPackage ../tools/virtualization/google-compute-engine { };
+
+  google-crc32c = callPackage ../development/python-modules/google-crc32c {
+    inherit (pkgs) crc32c;
+  };
+
+  google-i18n-address = callPackage ../development/python-modules/google-i18n-address { };
+
+  google-nest-sdm = callPackage ../development/python-modules/google-nest-sdm { };
+
+  googlemaps = callPackage ../development/python-modules/googlemaps { };
+
+  google-pasta = callPackage ../development/python-modules/google-pasta { };
+
+  google-re2 = callPackage ../development/python-modules/google-re2 { };
+
+  google-resumable-media = callPackage ../development/python-modules/google-resumable-media { };
+
+  googletrans = callPackage ../development/python-modules/googletrans { };
+
+  gorilla = callPackage ../development/python-modules/gorilla { };
+
+  goveelights = callPackage ../development/python-modules/goveelights { };
+
+  gpapi = callPackage ../development/python-modules/gpapi { };
+
+  gplaycli = callPackage ../development/python-modules/gplaycli { };
+
+  gpgme = toPythonModule (pkgs.gpgme.override {
+    pythonSupport = true;
+    inherit python;
+  });
+
+  gphoto2 = callPackage ../development/python-modules/gphoto2 { };
+
+  gprof2dot = callPackage ../development/python-modules/gprof2dot {
+    inherit (pkgs) graphviz;
+  };
+
+  gps3 = callPackage ../development/python-modules/gps3 { };
+
+  gpsoauth = callPackage ../development/python-modules/gpsoauth { };
+
+  gpxpy = callPackage ../development/python-modules/gpxpy { };
+
+  gpy = callPackage ../development/python-modules/gpy { };
+
+  gpyopt = callPackage ../development/python-modules/gpyopt { };
+
+  gql = callPackage ../development/python-modules/gql { };
+
+  gradient = callPackage ../development/python-modules/gradient { };
+
+  gradient-utils = callPackage ../development/python-modules/gradient-utils { };
+
+  gradient_statsd = callPackage ../development/python-modules/gradient_statsd { };
+
+  grammalecte = callPackage ../development/python-modules/grammalecte { };
+
+  grandalf = callPackage ../development/python-modules/grandalf { };
+
+  grapheme = callPackage ../development/python-modules/grapheme { };
+
+  graphite_api = callPackage ../development/python-modules/graphite-api { };
+
+  graphite_beacon = callPackage ../development/python-modules/graphite_beacon { };
+
+  graphite-web = callPackage ../development/python-modules/graphite-web { };
+
+  graph_nets = callPackage ../development/python-modules/graph_nets { };
+
+  graphene = callPackage ../development/python-modules/graphene { };
+
+  graphene-django = callPackage ../development/python-modules/graphene-django { };
+
+  graphqlclient= callPackage ../development/python-modules/graphqlclient { };
+
+  graphql-core = callPackage ../development/python-modules/graphql-core { };
+
+  graphql-relay = callPackage ../development/python-modules/graphql-relay { };
+
+  graphql-server-core = callPackage ../development/python-modules/graphql-server-core { };
+
+  graphql-subscription-manager = callPackage ../development/python-modules/graphql-subscription-manager { };
+
+  graph-tool = callPackage ../development/python-modules/graph-tool { };
+
+  graphtage = callPackage ../development/python-modules/graphtage { };
+
+  graphviz = callPackage ../development/python-modules/graphviz {
+    inherit (pkgs) graphviz;
+  };
+
+  grappelli_safe = callPackage ../development/python-modules/grappelli_safe { };
+
+  graspologic = callPackage ../development/python-modules/graspologic { };
+
+  greatfet = callPackage ../development/python-modules/greatfet { };
+
+  greeclimate = callPackage ../development/python-modules/greeclimate { };
+
+  green = callPackage ../development/python-modules/green { };
+
+  greenlet = callPackage ../development/python-modules/greenlet { };
+
+  grequests = callPackage ../development/python-modules/grequests { };
+
+  gremlinpython = callPackage ../development/python-modules/gremlinpython { };
+
+  growattserver = callPackage ../development/python-modules/growattserver { };
+
+  gridnet = callPackage ../development/python-modules/gridnet { };
+
+  grip = callPackage ../development/python-modules/grip { };
+
+  groestlcoin_hash = callPackage ../development/python-modules/groestlcoin_hash { };
+
+  grpc-google-iam-v1 = callPackage ../development/python-modules/grpc-google-iam-v1 { };
+
+  grpcio = callPackage ../development/python-modules/grpcio { };
+
+  grpcio-gcp = callPackage ../development/python-modules/grpcio-gcp { };
+
+  grpcio-status = callPackage ../development/python-modules/grpcio-status { };
+
+  grpcio-tools = callPackage ../development/python-modules/grpcio-tools { };
+
+  gruut = callPackage ../development/python-modules/gruut { };
+
+  gruut-ipa = callPackage ../development/python-modules/gruut-ipa { };
+
+  gsd = callPackage ../development/python-modules/gsd { };
+
+  gspread = callPackage ../development/python-modules/gspread { };
+
+  gssapi = callPackage ../development/python-modules/gssapi {
+    inherit (pkgs) krb5Full;
+    inherit (pkgs.darwin.apple_sdk.frameworks) GSS;
+  };
+
+  gst-python = callPackage ../development/python-modules/gst-python {
+    inherit (pkgs) meson;
+    gst-plugins-base = pkgs.gst_all_1.gst-plugins-base;
+  };
+
+  gtfs-realtime-bindings = callPackage ../development/python-modules/gtfs-realtime-bindings { };
+
+  gtimelog = callPackage ../development/python-modules/gtimelog { };
+
+  gtts = callPackage ../development/python-modules/gtts { };
+
+  gtts-token = callPackage ../development/python-modules/gtts-token { };
+
+  guessit = callPackage ../development/python-modules/guessit { };
+
+  guestfs = callPackage ../development/python-modules/guestfs { };
+
+  gudhi = callPackage ../development/python-modules/gudhi { };
+
+  gumath = callPackage ../development/python-modules/gumath { };
+
+  gunicorn = callPackage ../development/python-modules/gunicorn { };
+
+  guppy3 = callPackage ../development/python-modules/guppy3 { };
+
+  gurobipy = if stdenv.hostPlatform.system == "x86_64-darwin" then
+    callPackage ../development/python-modules/gurobipy/darwin.nix {
+      inherit (pkgs.darwin) cctools insert_dylib;
+    }
+  else if stdenv.hostPlatform.system == "x86_64-linux" then
+    callPackage ../development/python-modules/gurobipy/linux.nix { }
+  else
+    throw "gurobipy not yet supported on ${stdenv.hostPlatform.system}";
+
+  guzzle_sphinx_theme = callPackage ../development/python-modules/guzzle_sphinx_theme { };
+
+  gvm-tools = callPackage ../development/python-modules/gvm-tools { };
+
+  gviz-api = callPackage ../development/python-modules/gviz-api { };
+
+  gym = callPackage ../development/python-modules/gym { };
+
+  gyp = callPackage ../development/python-modules/gyp { };
+
+  h11 = callPackage ../development/python-modules/h11 { };
+
+  h2 = callPackage ../development/python-modules/h2 { };
+
+  h3 = callPackage ../development/python-modules/h3 {
+    inherit (pkgs) h3;
+  };
+
+  h5netcdf = callPackage ../development/python-modules/h5netcdf { };
+
+  h5py = callPackage ../development/python-modules/h5py { };
+
+  h5py-mpi = self.h5py.override {
+    hdf5 = pkgs.hdf5-mpi;
+  };
+
+  habanero = callPackage ../development/python-modules/habanero { };
+
+  habitipy = callPackage ../development/python-modules/habitipy { };
+
+  hachoir = callPackage ../development/python-modules/hachoir { };
+
+  hacking = callPackage ../development/python-modules/hacking { };
+
+  hdate = callPackage ../development/python-modules/hdate { };
+
+  ha-av = callPackage ../development/python-modules/ha-av { };
+
+  ha-ffmpeg = callPackage ../development/python-modules/ha-ffmpeg { };
+
+  ha-philipsjs = callPackage ../development/python-modules/ha-philipsjs{ };
+
+  hahomematic = callPackage ../development/python-modules/hahomematic { };
+
+  halo = callPackage ../development/python-modules/halo { };
+
+  halohome = callPackage ../development/python-modules/halohome { };
+
+  handout = callPackage ../development/python-modules/handout { };
+
+  hangups = callPackage ../development/python-modules/hangups { };
+
+  hap-python = callPackage ../development/python-modules/hap-python { };
+
+  hass-nabucasa = callPackage ../development/python-modules/hass-nabucasa { };
+
+  hatasmota = callPackage ../development/python-modules/hatasmota { };
+
+  haversine = callPackage ../development/python-modules/haversine { };
+
+  hawkauthlib = callPackage ../development/python-modules/hawkauthlib { };
+
+  hcloud = callPackage ../development/python-modules/hcloud { };
+
+  hcs_utils = callPackage ../development/python-modules/hcs_utils { };
+
+  hdbscan = callPackage ../development/python-modules/hdbscan { };
+
+  hdfs = callPackage ../development/python-modules/hdfs { };
+
+  hdmedians = callPackage ../development/python-modules/hdmedians { };
+
+  headerparser = callPackage ../development/python-modules/headerparser { };
+
+  heapdict = callPackage ../development/python-modules/heapdict { };
+
+  heatzypy = callPackage ../development/python-modules/heatzypy { };
+
+  helpdev = callPackage ../development/python-modules/helpdev { };
+
+  helper = callPackage ../development/python-modules/helper { };
+
+  hepmc3 = toPythonModule (pkgs.hepmc3.override {
+    inherit python;
+  });
+
+  herepy = callPackage ../development/python-modules/herepy { };
+
+  hetzner = callPackage ../development/python-modules/hetzner { };
+
+  heudiconv = callPackage ../development/python-modules/heudiconv { };
+
+  hg-commitsigs = callPackage ../development/python-modules/hg-commitsigs { };
+
+  hg-evolve = callPackage ../development/python-modules/hg-evolve { };
+
+  hg-git = callPackage ../development/python-modules/hg-git { };
+
+  hglib = callPackage ../development/python-modules/hglib { };
+
+  hickle = callPackage ../development/python-modules/hickle { };
+
+  hid = callPackage ../development/python-modules/hid {
+    inherit (pkgs) hidapi;
+  };
+
+  hidapi = callPackage ../development/python-modules/hidapi {
+    inherit (pkgs) udev libusb1;
+  };
+
+  hieroglyph = callPackage ../development/python-modules/hieroglyph { };
+
+  hijri-converter = callPackage ../development/python-modules/hijri-converter { };
+
+  hikvision = callPackage ../development/python-modules/hikvision { };
+
+  hiredis = callPackage ../development/python-modules/hiredis { };
+
+  hiro = callPackage ../development/python-modules/hiro { };
+
+  hiyapyco = callPackage ../development/python-modules/hiyapyco { };
+
+  hjson = callPackage ../development/python-modules/hjson { };
+
+  hkdf = callPackage ../development/python-modules/hkdf { };
+
+  hlk-sw16 = callPackage ../development/python-modules/hlk-sw16 { };
+
+  hmmlearn = callPackage ../development/python-modules/hmmlearn { };
+
+  hocr-tools = callPackage ../development/python-modules/hocr-tools { };
+
+  hole = callPackage ../development/python-modules/hole { };
+
+  holidays = callPackage ../development/python-modules/holidays { };
+
+  holoviews = callPackage ../development/python-modules/holoviews { };
+
+  homeassistant-pyozw = callPackage ../development/python-modules/homeassistant-pyozw { };
+
+  homeconnect = callPackage ../development/python-modules/homeconnect { };
+
+  homematicip = callPackage ../development/python-modules/homematicip { };
+
+  homepluscontrol = callPackage ../development/python-modules/homepluscontrol { };
+
+  hoomd-blue = toPythonModule (callPackage ../development/python-modules/hoomd-blue {
+    inherit python;
+  });
+
+  hopcroftkarp = callPackage ../development/python-modules/hopcroftkarp { };
+
+  howdoi = callPackage ../development/python-modules/howdoi { };
+
+  hpack = callPackage ../development/python-modules/hpack { };
+
+  hsaudiotag3k = callPackage ../development/python-modules/hsaudiotag3k { };
+
+  hsluv = callPackage ../development/python-modules/hsluv { };
+
+  hstspreload = callPackage ../development/python-modules/hstspreload { };
+
+  html2text = callPackage ../development/python-modules/html2text { };
+
+  html5lib = callPackage ../development/python-modules/html5lib { };
+
+  html5-parser = callPackage ../development/python-modules/html5-parser { };
+
+  htmllaundry = callPackage ../development/python-modules/htmllaundry { };
+
+  htmlmin = callPackage ../development/python-modules/htmlmin { };
+
+  html-sanitizer = callPackage ../development/python-modules/html-sanitizer { };
+
+  HTSeq = callPackage ../development/python-modules/HTSeq { };
+
+  httmock = callPackage ../development/python-modules/httmock { };
+
+  httpagentparser = callPackage ../development/python-modules/httpagentparser { };
+
+  httpauth = callPackage ../development/python-modules/httpauth { };
+
+  httpbin = callPackage ../development/python-modules/httpbin { };
+
+  httpcore = callPackage ../development/python-modules/httpcore { };
+
+  http-ece = callPackage ../development/python-modules/http-ece { };
+
+  httplib2 = callPackage ../development/python-modules/httplib2 { };
+
+  http-parser = callPackage ../development/python-modules/http-parser { };
+
+  httpretty = callPackage ../development/python-modules/httpretty { };
+
+  httpserver = callPackage ../development/python-modules/httpserver { };
+
+  httpsig = callPackage ../development/python-modules/httpsig { };
+
+  httptools = callPackage ../development/python-modules/httptools { };
+
+  httpx = callPackage ../development/python-modules/httpx { };
+
+  httpx-ntlm = callPackage ../development/python-modules/httpx-ntlm { };
+
+  httpx-socks = callPackage ../development/python-modules/httpx-socks { };
+
+  huawei-lte-api = callPackage ../development/python-modules/huawei-lte-api { };
+
+  huey = callPackage ../development/python-modules/huey { };
+
+  hug = callPackage ../development/python-modules/hug { };
+
+  huggingface-hub = callPackage ../development/python-modules/huggingface-hub { };
+
+  huisbaasje-client = callPackage ../development/python-modules/huisbaasje-client { };
+
+  humanfriendly = callPackage ../development/python-modules/humanfriendly { };
+
+  humanize = callPackage ../development/python-modules/humanize { };
+
+  humblewx = callPackage ../development/python-modules/humblewx { };
+
+  hupper = callPackage ../development/python-modules/hupper { };
+
+  hvac = callPackage ../development/python-modules/hvac { };
+
+  hvplot = callPackage ../development/python-modules/hvplot { };
+
+  hwi = callPackage ../development/python-modules/hwi { };
+
+  hy = callPackage ../development/python-modules/hy { };
+
+  hydra = callPackage ../development/python-modules/hydra { };
+
+  hydra-check = callPackage ../development/python-modules/hydra-check { };
+
+  hydrawiser = callPackage ../development/python-modules/hydrawiser { };
+
+  hypchat = callPackage ../development/python-modules/hypchat { };
+
+  hypercorn = callPackage ../development/python-modules/hypercorn { };
+
+  hyperframe = callPackage ../development/python-modules/hyperframe { };
+
+  hyperion-py = callPackage ../development/python-modules/hyperion-py { };
+
+  hyperkitty = callPackage ../servers/mail/mailman/hyperkitty.nix { };
+
+  hyperlink = callPackage ../development/python-modules/hyperlink { };
+
+  hyperopt = callPackage ../development/python-modules/hyperopt { };
+
+  hypothesis-auto = callPackage ../development/python-modules/hypothesis-auto { };
+
+  hypothesis = callPackage ../development/python-modules/hypothesis { };
+
+  hypothesmith = callPackage ../development/python-modules/hypothesmith { };
+
+  hyppo = callPackage ../development/python-modules/hyppo { };
+
+  i2c-tools = callPackage ../development/python-modules/i2c-tools {
+    inherit (pkgs) i2c-tools;
+  };
+
+  i2csense = callPackage ../development/python-modules/i2csense { };
+
+  i3ipc = callPackage ../development/python-modules/i3ipc { };
+
+  i3-py = callPackage ../development/python-modules/i3-py { };
+
+  iapws = callPackage ../development/python-modules/iapws { };
+
+  iaqualink = callPackage ../development/python-modules/iaqualink { };
+
+  ibis = callPackage ../development/python-modules/ibis { };
+
+  ibis-framework = callPackage ../development/python-modules/ibis-framework { };
+
+  ibm-cloud-sdk-core = callPackage ../development/python-modules/ibm-cloud-sdk-core { };
+
+  ibm-watson = callPackage ../development/python-modules/ibm-watson { };
+
+  icalendar = callPackage ../development/python-modules/icalendar { };
+
+  icecream = callPackage ../development/python-modules/icecream { };
+
+  icmplib = callPackage ../development/python-modules/icmplib { };
+
+  icnsutil = callPackage ../development/python-modules/icnsutil { };
+
+  ics = callPackage ../development/python-modules/ics { };
+
+  idasen = callPackage ../development/python-modules/idasen { };
+
+  identify = callPackage ../development/python-modules/identify { };
+
+  idna = callPackage ../development/python-modules/idna { };
+
+  idna-ssl = callPackage ../development/python-modules/idna-ssl { };
+
+  ifaddr = callPackage ../development/python-modules/ifaddr { };
+
+  ifconfig-parser = callPackage ../development/python-modules/ifconfig-parser { };
+
+  ifcopenshell = callPackage ../development/python-modules/ifcopenshell { };
+
+  ignite = callPackage ../development/python-modules/ignite { };
+
+  igraph = callPackage ../development/python-modules/igraph {
+    inherit (pkgs) igraph;
+  };
+
+  ihatemoney = callPackage ../development/python-modules/ihatemoney { };
+
+  ijson = callPackage ../development/python-modules/ijson { };
+
+  ilua = callPackage ../development/python-modules/ilua { };
+
+  imagecodecs-lite = callPackage ../development/python-modules/imagecodecs-lite { };
+
+  imagecorruptions = callPackage ../development/python-modules/imagecorruptions { };
+
+  imageio = callPackage ../development/python-modules/imageio { };
+
+  imageio-ffmpeg = callPackage ../development/python-modules/imageio-ffmpeg { };
+
+  image-go-nord = callPackage ../development/python-modules/image-go-nord { };
+
+  image-match = callPackage ../development/python-modules/image-match { };
+
+  imagesize = callPackage ../development/python-modules/imagesize { };
+
+  imantics = callPackage ../development/python-modules/imantics { };
+
+  imapclient = callPackage ../development/python-modules/imapclient { };
+
+  imaplib2 = callPackage ../development/python-modules/imaplib2 { };
+
+  imap-tools = callPackage ../development/python-modules/imap-tools { };
+
+  imbalanced-learn = callPackage ../development/python-modules/imbalanced-learn { };
+
+  imdbpy = callPackage ../development/python-modules/imdbpy { };
+
+  img2pdf = callPackage ../development/python-modules/img2pdf { };
+
+  imgaug = callPackage ../development/python-modules/imgaug { };
+
+  imgsize = callPackage ../development/python-modules/imgsize { };
+
+  iminuit = callPackage ../development/python-modules/iminuit { };
+
+  immutabledict = callPackage ../development/python-modules/immutabledict { };
+
+  immutables = callPackage ../development/python-modules/immutables { };
+
+  impacket = callPackage ../development/python-modules/impacket { };
+
+  importlab = callPackage ../development/python-modules/importlab { };
+
+  importlib-metadata = callPackage ../development/python-modules/importlib-metadata { };
+
+  importlib-resources = callPackage ../development/python-modules/importlib-resources { };
+
+  importmagic = callPackage ../development/python-modules/importmagic { };
+
+  imread = callPackage ../development/python-modules/imread {
+    inherit (pkgs) libjpeg libpng libtiff libwebp;
+  };
+
+  imutils = callPackage ../development/python-modules/imutils { };
+
+  in-place = callPackage ../development/python-modules/in-place { };
+
+  incomfort-client = callPackage ../development/python-modules/incomfort-client { };
+
+  incremental = callPackage ../development/python-modules/incremental { };
+
+  inflect = callPackage ../development/python-modules/inflect { };
+
+  inflection = callPackage ../development/python-modules/inflection { };
+
+  influxdb = callPackage ../development/python-modules/influxdb { };
+
+  influxdb-client = callPackage ../development/python-modules/influxdb-client { };
+
+  influxgraph = callPackage ../development/python-modules/influxgraph { };
+
+  inform = callPackage ../development/python-modules/inform { };
+
+  iniconfig = callPackage ../development/python-modules/iniconfig { };
+
+  inifile = callPackage ../development/python-modules/inifile { };
+
+  iniparse = callPackage ../development/python-modules/iniparse { };
+
+  injector = callPackage ../development/python-modules/injector { };
+
+  inkex = callPackage ../development/python-modules/inkex { };
+
+  inotify = callPackage ../development/python-modules/inotify { };
+
+  inotify-simple = callPackage ../development/python-modules/inotify-simple { };
+
+  inotifyrecursive = callPackage ../development/python-modules/inotifyrecursive { };
+
+  inquirer = callPackage ../development/python-modules/inquirer { };
+
+  insegel = callPackage ../development/python-modules/insegel { };
+
+  installer = callPackage ../development/python-modules/installer { };
+
+  intake = callPackage ../development/python-modules/intake { };
+
+  intake-parquet = callPackage ../development/python-modules/intake-parquet { };
+
+  intbitset = callPackage ../development/python-modules/intbitset { };
+
+  intelhex = callPackage ../development/python-modules/intelhex { };
+
+  intellifire4py = callPackage ../development/python-modules/intellifire4py { };
+
+  intensity-normalization = callPackage ../development/python-modules/intensity-normalization { };
+
+  internetarchive = callPackage ../development/python-modules/internetarchive { };
+
+  interruptingcow = callPackage ../development/python-modules/interruptingcow { };
+
+  intervaltree = callPackage ../development/python-modules/intervaltree { };
+
+  intreehooks = callPackage ../development/python-modules/intreehooks { };
+
+  invoke = callPackage ../development/python-modules/invoke { };
+
+  iodata = callPackage ../development/python-modules/iodata { };
+
+  iocapture = callPackage ../development/python-modules/iocapture { };
+
+  iotawattpy = callPackage ../development/python-modules/iotawattpy { };
+
+  iowait = callPackage ../development/python-modules/iowait { };
+
+  ipaddr = callPackage ../development/python-modules/ipaddr { };
+
+  ipaddress = callPackage ../development/python-modules/ipaddress { };
+
+  ipdb = callPackage ../development/python-modules/ipdb { };
+
+  ipdbplugin = callPackage ../development/python-modules/ipdbplugin { };
+
+  ipfshttpclient = callPackage ../development/python-modules/ipfshttpclient { };
+
+  i-pi = callPackage ../development/python-modules/i-pi { };
+
+  iptools = callPackage ../development/python-modules/iptools { };
+
+  ipwhl = callPackage ../development/python-modules/ipwhl { };
+
+  ipy = callPackage ../development/python-modules/IPy { };
+
+  ipydatawidgets = callPackage ../development/python-modules/ipydatawidgets { };
+
+  ipykernel = callPackage ../development/python-modules/ipykernel { };
+
+  ipympl = callPackage ../development/python-modules/ipympl { };
+
+  ipyparallel = callPackage ../development/python-modules/ipyparallel { };
+
+  ipython_genutils = callPackage ../development/python-modules/ipython_genutils { };
+
+  ipython = callPackage ../development/python-modules/ipython { };
+
+  ipyvue = callPackage ../development/python-modules/ipyvue { };
+
+  ipyvuetify = callPackage ../development/python-modules/ipyvuetify { };
+
+  ipywidgets = callPackage ../development/python-modules/ipywidgets { };
+
+  irc = callPackage ../development/python-modules/irc { };
+
+  ircrobots = callPackage ../development/python-modules/ircrobots { };
+
+  ircstates = callPackage ../development/python-modules/ircstates { };
+
+  irctokens = callPackage ../development/python-modules/irctokens { };
+
+  isbnlib = callPackage ../development/python-modules/isbnlib { };
+
+  islpy = callPackage ../development/python-modules/islpy { };
+
+  iso3166 = callPackage ../development/python-modules/iso3166 { };
+
+  ismartgate = callPackage ../development/python-modules/ismartgate { };
+
+  iso-639 = callPackage ../development/python-modules/iso-639 { };
+
+  iso4217 = callPackage ../development/python-modules/iso4217 { };
+
+  iso8601 = callPackage ../development/python-modules/iso8601 { };
+
+  isodate = callPackage ../development/python-modules/isodate { };
+
+  isort = callPackage ../development/python-modules/isort { };
+
+  isounidecode = callPackage ../development/python-modules/isounidecode { };
+
+  isoweek = callPackage ../development/python-modules/isoweek { };
+
+  itanium_demangler = callPackage ../development/python-modules/itanium_demangler { };
+
+  itemadapter = callPackage ../development/python-modules/itemadapter { };
+
+  itemdb = callPackage ../development/python-modules/itemdb { };
+
+  itemloaders = callPackage ../development/python-modules/itemloaders { };
+
+  iterm2 = callPackage ../development/python-modules/iterm2 { };
+
+  itsdangerous = callPackage ../development/python-modules/itsdangerous { };
+
+  itunespy = callPackage ../development/python-modules/itunespy { };
+
+  itypes = callPackage ../development/python-modules/itypes { };
+
+  j2cli = callPackage ../development/python-modules/j2cli { };
+
+  jaconv = callPackage ../development/python-modules/jaconv { };
+
+  jaeger-client = callPackage ../development/python-modules/jaeger-client { };
+
+  janus = callPackage ../development/python-modules/janus { };
+
+  jaraco_classes = callPackage ../development/python-modules/jaraco_classes { };
+
+  jaraco_collections = callPackage ../development/python-modules/jaraco_collections { };
+
+  jaraco-context = callPackage ../development/python-modules/jaraco-context { };
+
+  jaraco_functools = callPackage ../development/python-modules/jaraco_functools { };
+
+  jaraco_itertools = callPackage ../development/python-modules/jaraco_itertools { };
+
+  jaraco_logging = callPackage ../development/python-modules/jaraco_logging { };
+
+  jaraco_stream = callPackage ../development/python-modules/jaraco_stream { };
+
+  jaraco_text = callPackage ../development/python-modules/jaraco_text { };
+
+  javaobj-py3 = callPackage ../development/python-modules/javaobj-py3 { };
+
+  javaproperties = callPackage ../development/python-modules/javaproperties { };
+
+  jax = callPackage ../development/python-modules/jax { };
+
+  jaxlib-bin = callPackage ../development/python-modules/jaxlib/bin.nix {
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudatoolkit_11 = tensorflow_compat_cudatoolkit;
+    cudnn = tensorflow_compat_cudnn;
+  };
+
+  jaxlib-build = callPackage ../development/python-modules/jaxlib {
+    # Some platforms don't have `cudaSupport` defined, hence the need for 'or false'.
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudatoolkit = tensorflow_compat_cudatoolkit;
+    cudnn = tensorflow_compat_cudnn;
+    nccl = tensorflow_compat_nccl;
+  };
+
+  jaxlib = self.jaxlib-build;
+
+  jaxlibWithCuda = self.jaxlib-build.override {
+    cudaSupport = true;
+  };
+
+  jaxlibWithoutCuda = self.jaxlib-build.override {
+    cudaSupport = false;
+  };
+
+  JayDeBeApi = callPackage ../development/python-modules/JayDeBeApi { };
+
+  jc = callPackage ../development/python-modules/jc { };
+
+  jdatetime = callPackage ../development/python-modules/jdatetime { };
+
+  jdcal = callPackage ../development/python-modules/jdcal { };
+
+  jedi = callPackage ../development/python-modules/jedi { };
+
+  jedi-language-server = callPackage ../development/python-modules/jedi-language-server { };
+
+  jeepney = callPackage ../development/python-modules/jeepney { };
+
+  jellyfin-apiclient-python = callPackage ../development/python-modules/jellyfin-apiclient-python { };
+
+  jellyfish = callPackage ../development/python-modules/jellyfish { };
+
+  jenkinsapi = callPackage ../development/python-modules/jenkinsapi { };
+
+  jenkins-job-builder = callPackage ../development/python-modules/jenkins-job-builder { };
+
+  jieba = callPackage ../development/python-modules/jieba { };
+
+  jinja2 = callPackage ../development/python-modules/jinja2 { };
+
+  jinja2-git = callPackage ../development/python-modules/jinja2-git { };
+
+  jinja2_pluralize = callPackage ../development/python-modules/jinja2_pluralize { };
+
+  jinja2_time = callPackage ../development/python-modules/jinja2_time { };
+
+  jira = callPackage ../development/python-modules/jira { };
+
+  jmespath = callPackage ../development/python-modules/jmespath { };
+
+  jmp = callPackage ../development/python-modules/jmp { };
+
+  joblib = callPackage ../development/python-modules/joblib { };
+
+  johnnycanencrypt = callPackage ../development/python-modules/johnnycanencrypt {
+    inherit (pkgs.darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  josepy = callPackage ../development/python-modules/josepy { };
+
+  journalwatch = callPackage ../tools/system/journalwatch {
+    inherit (self) systemd pytest;
+  };
+
+  jproperties = callPackage ../development/python-modules/jproperties { };
+
+  jpylyzer = callPackage ../development/python-modules/jpylyzer { };
+
+  JPype1 = callPackage ../development/python-modules/JPype1 { };
+
+  jq = callPackage ../development/python-modules/jq {
+    inherit (pkgs) jq;
+  };
+
+  jsbeautifier = callPackage ../development/python-modules/jsbeautifier { };
+
+  jschema-to-python = callPackage ../development/python-modules/jschema-to-python { };
+
+  jsmin = callPackage ../development/python-modules/jsmin { };
+
+  json5 = callPackage ../development/python-modules/json5 { };
+
+  jsondate = callPackage ../development/python-modules/jsondate { };
+
+  jsondiff = callPackage ../development/python-modules/jsondiff { };
+
+  jsonfield = callPackage ../development/python-modules/jsonfield { };
+
+  jsonlines = callPackage ../development/python-modules/jsonlines { };
+
+  json-logging = callPackage ../development/python-modules/json-logging { };
+
+  jsonmerge = callPackage ../development/python-modules/jsonmerge { };
+
+  json-merge-patch = callPackage ../development/python-modules/json-merge-patch { };
+
+  json-schema-for-humans = callPackage ../development/python-modules/json-schema-for-humans { };
+
+  jsonnet = buildPythonPackage { inherit (pkgs.jsonnet) name src; };
+
+  jsonpatch = callPackage ../development/python-modules/jsonpatch { };
+
+  jsonpath = callPackage ../development/python-modules/jsonpath { };
+
+  jsonpath_rw = callPackage ../development/python-modules/jsonpath_rw { };
+
+  jsonpath-ng = callPackage ../development/python-modules/jsonpath-ng { };
+
+  jsonpickle = callPackage ../development/python-modules/jsonpickle { };
+
+  jsonpointer = callPackage ../development/python-modules/jsonpointer { };
+
+  jsonref = callPackage ../development/python-modules/jsonref { };
+
+  json-rpc = callPackage ../development/python-modules/json-rpc { };
+
+  jsonrpc-async = callPackage ../development/python-modules/jsonrpc-async { };
+
+  jsonrpc-base = callPackage ../development/python-modules/jsonrpc-base { };
+
+  jsonrpclib-pelix = callPackage ../development/python-modules/jsonrpclib-pelix { };
+
+  jsonrpc-websocket = callPackage ../development/python-modules/jsonrpc-websocket { };
+
+  jsonschema = callPackage ../development/python-modules/jsonschema { };
+
+  jsonstreams = callPackage ../development/python-modules/jsonstreams { };
+
+  json-tricks = callPackage ../development/python-modules/json-tricks { };
+
+  jug = callPackage ../development/python-modules/jug { };
+
+  junitparser = callPackage ../development/python-modules/junitparser { };
+
+  junit-xml = callPackage ../development/python-modules/junit-xml { };
+
+  junos-eznc = callPackage ../development/python-modules/junos-eznc { };
+
+  jupyter = callPackage ../development/python-modules/jupyter { };
+
+  jupyter-c-kernel = callPackage ../development/python-modules/jupyter-c-kernel { };
+
+  jupyter-client = callPackage ../development/python-modules/jupyter-client { };
+
+  jupyter_console = callPackage ../development/python-modules/jupyter_console { };
+
+  jupyter_core = callPackage ../development/python-modules/jupyter_core { };
+
+  jupyter-lsp = callPackage ../development/python-modules/jupyter-lsp { };
+
+  jupyter_server = callPackage ../development/python-modules/jupyter_server { };
+
+  jupyterhub = callPackage ../development/python-modules/jupyterhub { };
+
+  jupyterhub-ldapauthenticator = callPackage ../development/python-modules/jupyterhub-ldapauthenticator { };
+
+  jupyterhub-systemdspawner = callPackage ../development/python-modules/jupyterhub-systemdspawner { };
+
+  jupyterhub-tmpauthenticator = callPackage ../development/python-modules/jupyterhub-tmpauthenticator { };
+
+  jupyterlab = callPackage ../development/python-modules/jupyterlab { };
+
+  jupyterlab-git = callPackage ../development/python-modules/jupyterlab-git { };
+
+  jupyterlab_launcher = callPackage ../development/python-modules/jupyterlab_launcher { };
+
+  jupyterlab-pygments = callPackage ../development/python-modules/jupyterlab-pygments { };
+
+  jupyterlab_server = callPackage ../development/python-modules/jupyterlab_server { };
+
+  jupyterlab-widgets = callPackage ../development/python-modules/jupyterlab-widgets { };
+
+  jupyterlab-lsp = callPackage ../development/python-modules/jupyterlab-lsp { };
+
+  jupyter-packaging = callPackage ../development/python-modules/jupyter-packaging { };
+
+  jupyter-repo2docker = callPackage ../development/python-modules/jupyter-repo2docker {
+    pkgs-docker = pkgs.docker;
+  };
+
+  jupyter-server-mathjax = callPackage ../development/python-modules/jupyter-server-mathjax { };
+
+  jupyter-sphinx = callPackage ../development/python-modules/jupyter-sphinx { };
+
+  jupyter-telemetry = callPackage ../development/python-modules/jupyter-telemetry { };
+
+  jupytext = callPackage ../development/python-modules/jupytext { };
+
+  justbackoff = callPackage ../development/python-modules/justbackoff { };
+
+  jwcrypto = callPackage ../development/python-modules/jwcrypto { };
+
+  jxmlease = callPackage ../development/python-modules/jxmlease { };
+
+  k5test = callPackage ../development/python-modules/k5test {
+    inherit (pkgs) krb5Full findutils which;
+  };
+
+  kaa-base = callPackage ../development/python-modules/kaa-base { };
+
+  kaa-metadata = callPackage ../development/python-modules/kaa-metadata { };
+
+  kafka-python = callPackage ../development/python-modules/kafka-python { };
+
+  kaggle = callPackage ../development/python-modules/kaggle { };
+
+  kaitaistruct = callPackage ../development/python-modules/kaitaistruct { };
+
+  Kajiki = callPackage ../development/python-modules/kajiki { };
+
+  kaldi-active-grammar = callPackage ../development/python-modules/kaldi-active-grammar { };
+
+  kaptan = callPackage ../development/python-modules/kaptan { };
+
+  karton-asciimagic = callPackage ../development/python-modules/karton-asciimagic { };
+
+  karton-autoit-ripper = callPackage ../development/python-modules/karton-autoit-ripper { };
+
+  karton-classifier = callPackage ../development/python-modules/karton-classifier { };
+
+  karton-config-extractor = callPackage ../development/python-modules/karton-config-extractor { };
+
+  karton-core = callPackage ../development/python-modules/karton-core { };
+
+  karton-dashboard = callPackage ../development/python-modules/karton-dashboard { };
+
+  karton-mwdb-reporter = callPackage ../development/python-modules/karton-mwdb-reporter { };
+
+  karton-yaramatcher = callPackage ../development/python-modules/karton-yaramatcher { };
+
+  kazoo = callPackage ../development/python-modules/kazoo { };
+
+  kconfiglib = callPackage ../development/python-modules/kconfiglib { };
+
+  keep = callPackage ../development/python-modules/keep { };
+
+  keepalive = callPackage ../development/python-modules/keepalive { };
+
+  keepkey_agent = callPackage ../development/python-modules/keepkey_agent { };
+
+  keepkey = callPackage ../development/python-modules/keepkey { };
+
+  keras-applications = callPackage ../development/python-modules/keras-applications { };
+
+  keras = callPackage ../development/python-modules/keras { };
+
+  keras-preprocessing = callPackage ../development/python-modules/keras-preprocessing { };
+
+  kerberos = callPackage ../development/python-modules/kerberos { };
+
+  keyboard = callPackage ../development/python-modules/keyboard { };
+
+  keyring = callPackage ../development/python-modules/keyring { };
+
+  keyrings-cryptfile = callPackage ../development/python-modules/keyrings-cryptfile { };
+
+  keyrings-alt = callPackage ../development/python-modules/keyrings-alt { };
+
+  keystone-engine = callPackage ../development/python-modules/keystone-engine { };
+
+  keystoneauth1 = callPackage ../development/python-modules/keystoneauth1 { };
+
+  keyutils = callPackage ../development/python-modules/keyutils {
+    inherit (pkgs) keyutils;
+  };
+
+  kicad = toPythonModule (pkgs.kicad.override {
+    python3 = python;
+  }).src;
+
+  kinparse = callPackage ../development/python-modules/kinparse { };
+
+  kiss-headers = callPackage ../development/python-modules/kiss-headers { };
+
+  kitchen = callPackage ../development/python-modules/kitchen { };
+
+  kivy = callPackage ../development/python-modules/kivy {
+    inherit (pkgs) mesa;
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices AVFoundation;
+  };
+
+  kivy-garden = callPackage ../development/python-modules/kivy-garden { };
+
+  kiwisolver = callPackage ../development/python-modules/kiwisolver { };
+
+  klaus = callPackage ../development/python-modules/klaus { };
+
+  klein = callPackage ../development/python-modules/klein { };
+
+  kmapper = callPackage ../development/python-modules/kmapper { };
+
+  kmsxx = toPythonModule (pkgs.kmsxx.override {
+    withPython = true;
+  });
+
+  knack = callPackage ../development/python-modules/knack { };
+
+  kombu = callPackage ../development/python-modules/kombu { };
+
+  konnected = callPackage ../development/python-modules/konnected { };
+
+  korean-lunar-calendar = callPackage ../development/python-modules/korean-lunar-calendar { };
+
+  krakenex = callPackage ../development/python-modules/krakenex { };
+
+  kubernetes = callPackage ../development/python-modules/kubernetes { };
+
+  labelbox = callPackage ../development/python-modules/labelbox { };
+
+  labgrid = callPackage ../development/python-modules/labgrid { };
+
+  labmath = callPackage ../development/python-modules/labmath { };
+
+  langcodes = callPackage ../development/python-modules/langcodes { };
+
+  langdetect = callPackage ../development/python-modules/langdetect { };
+
+  language-data = callPackage ../development/python-modules/language-data { };
+
+  lark = callPackage ../development/python-modules/lark { };
+
+  latexcodec = callPackage ../development/python-modules/latexcodec { };
+
+  launchpadlib = callPackage ../development/python-modules/launchpadlib { };
+
+  lazr_config = callPackage ../development/python-modules/lazr/config.nix { };
+
+  lazr_delegates = callPackage ../development/python-modules/lazr/delegates.nix { };
+
+  lazr-restfulclient = callPackage ../development/python-modules/lazr-restfulclient { };
+
+  lazr-uri = callPackage ../development/python-modules/lazr-uri { };
+
+  lazy = callPackage ../development/python-modules/lazy { };
+
+  lazy_import = callPackage ../development/python-modules/lazy_import { };
+
+  lazy-object-proxy = callPackage ../development/python-modules/lazy-object-proxy { };
+
+  lc7001 = callPackage ../development/python-modules/lc7001 { };
+
+  ldap = callPackage ../development/python-modules/ldap {
+    inherit (pkgs) openldap cyrus_sasl;
+  };
+
+  ldap3 = callPackage ../development/python-modules/ldap3 { };
+
+  ldapdomaindump = callPackage ../development/python-modules/ldapdomaindump { };
+
+  ldappool = callPackage ../development/python-modules/ldappool { };
+
+  ldaptor = callPackage ../development/python-modules/ldaptor { };
+
+  leather = callPackage ../development/python-modules/leather { };
+
+  leb128 = callPackage ../development/python-modules/leb128 { };
+
+  ledger_agent = callPackage ../development/python-modules/ledger_agent { };
+
+  ledgerblue = callPackage ../development/python-modules/ledgerblue { };
+
+  ledgerwallet = callPackage ../development/python-modules/ledgerwallet {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  lektor = callPackage ../development/python-modules/lektor { };
+
+  leveldb = callPackage ../development/python-modules/leveldb { };
+
+  levenshtein = callPackage ../development/python-modules/levenshtein { };
+
+  lexid = callPackage ../development/python-modules/lexid { };
+
+  lhapdf = toPythonModule (pkgs.lhapdf.override {
+    inherit python;
+  });
+
+  libagent = callPackage ../development/python-modules/libagent { };
+
+  pa-ringbuffer = callPackage ../development/python-modules/pa-ringbuffer { };
+
+  libais = callPackage ../development/python-modules/libais { };
+
+  libarchive-c = callPackage ../development/python-modules/libarchive-c {
+    inherit (pkgs) libarchive;
+  };
+
+  libarcus = callPackage ../development/python-modules/libarcus {
+    inherit (pkgs) protobuf;
+  };
+
+  libasyncns = callPackage ../development/python-modules/libasyncns {
+    inherit (pkgs) libasyncns;
+  };
+
+  libcloud = callPackage ../development/python-modules/libcloud { };
+
+  libcst = callPackage ../development/python-modules/libcst { };
+
+  libevdev = callPackage ../development/python-modules/libevdev { };
+
+  libfdt = toPythonModule (pkgs.dtc.override {
+    inherit python;
+    pythonSupport = true;
+  });
+
+  libgpiod = toPythonModule (pkgs.libgpiod.override {
+    enablePython = true;
+    python3 = python;
+  });
+
+  libgpuarray = callPackage ../development/python-modules/libgpuarray {
+    clblas = pkgs.clblas.override { boost = self.boost; };
+    cudaSupport = pkgs.config.cudaSupport or false;
+  };
+
+  libiio = (toPythonModule (pkgs.libiio.override { inherit python; })).python;
+
+  libkeepass = callPackage ../development/python-modules/libkeepass { };
+
+  liblarch = callPackage ../development/python-modules/liblarch { };
+
+  liblzfse = callPackage ../development/python-modules/liblzfse {
+    inherit (pkgs) lzfse;
+  };
+
+  libmodulemd = pipe pkgs.libmodulemd [
+    toPythonModule
+    (p:
+      p.overrideAttrs (super: {
+        meta = super.meta // {
+          outputsToInstall = [ "py" ]; # The package always builds python3 bindings
+          broken = (super.meta.broken or false) || !isPy3k;
+        };
+      }))
+    (p: p.override { python3 = python; })
+    (p: p.py)
+  ];
+
+  libmr = callPackage ../development/python-modules/libmr { };
+
+  libnacl = callPackage ../development/python-modules/libnacl {
+    inherit (pkgs) libsodium;
+  };
+
+  libpurecool = callPackage ../development/python-modules/libpurecool { };
+
+  libpyfoscam = callPackage ../development/python-modules/libpyfoscam { };
+
+  libpyvivotek = callPackage ../development/python-modules/libpyvivotek { };
+
+  libredwg = toPythonModule (pkgs.libredwg.override {
+    enablePython = true;
+    inherit (self) python libxml2;
+  });
+
+  librepo = pipe pkgs.librepo [
+    toPythonModule
+    (p: p.overrideAttrs (super: { meta = super.meta // { outputsToInstall = [ "py" ]; }; }))
+    (p: p.override { inherit python; })
+    (p: p.py)
+  ];
+
+  librosa = callPackage ../development/python-modules/librosa { };
+
+  librouteros = callPackage ../development/python-modules/librouteros { };
+
+  libsass = (callPackage ../development/python-modules/libsass {
+    inherit (pkgs) libsass;
+  });
+
+  libsavitar = callPackage ../development/python-modules/libsavitar { };
+
+  libselinux = pipe pkgs.libselinux [
+    toPythonModule
+    (p:
+      p.overrideAttrs (super: {
+        meta = super.meta // {
+          outputsToInstall = [ "py" ];
+          broken = super.meta.broken or isPy27;
+        };
+      }))
+    (p:
+      p.override {
+        enablePython = true;
+        python3 = python;
+      })
+    (p: p.py)
+  ];
+
+  libsoundtouch = callPackage ../development/python-modules/libsoundtouch { };
+
+  libthumbor = callPackage ../development/python-modules/libthumbor { };
+
+  libtmux = callPackage ../development/python-modules/libtmux { };
+
+  libtorrent-rasterbar = (toPythonModule (pkgs.libtorrent-rasterbar.override { inherit python; })).python;
+
+  libusb1 = callPackage ../development/python-modules/libusb1 {
+    inherit (pkgs) libusb1;
+  };
+
+  libversion = callPackage ../development/python-modules/libversion {
+    inherit (pkgs) libversion;
+  };
+
+  libvirt = callPackage ../development/python-modules/libvirt {
+    inherit (pkgs) libvirt;
+  };
+
+  libxml2 = (toPythonModule (pkgs.libxml2.override {
+    pythonSupport = true;
+    inherit python;
+  })).py;
+
+  libxslt = (toPythonModule (pkgs.libxslt.override {
+    pythonSupport = true;
+    inherit (self) python libxml2;
+  })).py;
+
+  license-expression = callPackage ../development/python-modules/license-expression { };
+
+  lief = (toPythonModule (pkgs.lief.override {
+    inherit python;
+  })).py;
+
+  life360 = callPackage ../development/python-modules/life360 { };
+
+  lightgbm = callPackage ../development/python-modules/lightgbm { };
+
+  lightning = callPackage ../development/python-modules/lightning { };
+
+  lightparam = callPackage ../development/python-modules/lightparam { };
+
+  lightwave = callPackage ../development/python-modules/lightwave { };
+
+  lightwave2 = callPackage ../development/python-modules/lightwave2 { };
+
+  lima = callPackage ../development/python-modules/lima { };
+
+  limiter= callPackage ../development/python-modules/limiter { };
+
+  limitlessled = callPackage ../development/python-modules/limitlessled { };
+
+  limits = callPackage ../development/python-modules/limits { };
+
+  limnoria = callPackage ../development/python-modules/limnoria { };
+
+  linecache2 = callPackage ../development/python-modules/linecache2 { };
+
+  line_profiler = callPackage ../development/python-modules/line_profiler { };
+
+  linkify-it-py = callPackage ../development/python-modules/linkify-it-py { };
+
+  linode-api = callPackage ../development/python-modules/linode-api { };
+
+  linode = callPackage ../development/python-modules/linode { };
+
+  linuxfd = callPackage ../development/python-modules/linuxfd { };
+
+  liquidctl = callPackage ../development/python-modules/liquidctl { };
+
+  lirc = toPythonModule (pkgs.lirc.override {
+    python3 = python;
+  });
+
+  littleutils = callPackage ../development/python-modules/littleutils { };
+
+  livelossplot = callPackage ../development/python-modules/livelossplot { };
+
+  livereload = callPackage ../development/python-modules/livereload { };
+
+  livestreamer = callPackage ../development/python-modules/livestreamer { };
+
+  livestreamer-curses = callPackage ../development/python-modules/livestreamer-curses { };
+
+  llfuse = callPackage ../development/python-modules/llfuse {
+    inherit (pkgs) fuse;
+  };
+
+  llvmlite = callPackage ../development/python-modules/llvmlite {
+    # llvmlite always requires a specific version of llvm.
+    llvm = pkgs.llvm_11;
+  };
+
+  lmdb = callPackage ../development/python-modules/lmdb {
+    inherit (pkgs) lmdb;
+  };
+
+  lml = callPackage ../development/python-modules/lml { };
+
+  lmnotify = callPackage ../development/python-modules/lmnotify { };
+
+  lmtpd = callPackage ../development/python-modules/lmtpd { };
+
+  loca = callPackage ../development/python-modules/loca { };
+
+  localimport = callPackage ../development/python-modules/localimport { };
+
+  localzone = callPackage ../development/python-modules/localzone { };
+
+  locationsharinglib = callPackage ../development/python-modules/locationsharinglib { };
+
+  locket = callPackage ../development/python-modules/locket { };
+
+  lockfile = callPackage ../development/python-modules/lockfile { };
+
+  log-symbols = callPackage ../development/python-modules/log-symbols { };
+
+  Logbook = callPackage ../development/python-modules/Logbook { };
+
+  logfury = callPackage ../development/python-modules/logfury { };
+
+  logical-unification = callPackage ../development/python-modules/logical-unification { };
+
+  logilab_astng = callPackage ../development/python-modules/logilab_astng { };
+
+  logilab_common = callPackage ../development/python-modules/logilab/common.nix { };
+
+  logilab-constraint = callPackage ../development/python-modules/logilab/constraint.nix { };
+
+  logster = callPackage ../development/python-modules/logster { };
+
+  loguru = callPackage ../development/python-modules/loguru { };
+
+  logutils = callPackage ../development/python-modules/logutils { };
+
+  logzero = callPackage ../development/python-modules/logzero { };
+
+  lomond = callPackage ../development/python-modules/lomond { };
+
+  loo-py = callPackage ../development/python-modules/loo-py { };
+
+  losant-rest = callPackage ../development/python-modules/losant-rest { };
+
+  lsassy = callPackage ../development/python-modules/lsassy { };
+
+  luddite = callPackage ../development/python-modules/luddite { };
+
+  ludios_wpull = callPackage ../development/python-modules/ludios_wpull { };
+
+  luftdaten = callPackage ../development/python-modules/luftdaten { };
+
+  luhn = callPackage ../development/python-modules/luhn { };
+
+  luxor = callPackage ../development/python-modules/luxor { };
+
+  luxtronik = callPackage ../development/python-modules/luxtronik { };
+
+  lupa = callPackage ../development/python-modules/lupa { };
+
+  lupupy = callPackage ../development/python-modules/lupupy { };
+
+  lxml = callPackage ../development/python-modules/lxml {
+    inherit (pkgs) libxml2 libxslt zlib;
+  };
+
+  lyricwikia = callPackage ../development/python-modules/lyricwikia { };
+
+  lz4 = callPackage ../development/python-modules/lz4 { };
+
+  lzstring = callPackage ../development/python-modules/lzstring { };
+
+  m2crypto = callPackage ../development/python-modules/m2crypto { };
+
+  m2r = callPackage ../development/python-modules/m2r { };
+
+  m3u8 = callPackage ../development/python-modules/m3u8 { };
+
+  mac_alias = callPackage ../development/python-modules/mac_alias { };
+
+  macfsevents = callPackage ../development/python-modules/macfsevents {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreFoundation CoreServices;
+  };
+
+  macropy = callPackage ../development/python-modules/macropy { };
+
+  maestral = callPackage ../development/python-modules/maestral { };
+
+  magic = callPackage ../development/python-modules/magic { };
+
+  magicgui = callPackage ../development/python-modules/magicgui { };
+
+  magic-wormhole = callPackage ../development/python-modules/magic-wormhole { };
+
+  magic-wormhole-mailbox-server = callPackage ../development/python-modules/magic-wormhole-mailbox-server { };
+
+  magic-wormhole-transit-relay = callPackage ../development/python-modules/magic-wormhole-transit-relay { };
+
+  mahotas = callPackage ../development/python-modules/mahotas { };
+
+  mailcap-fix = callPackage ../development/python-modules/mailcap-fix { };
+
+  mailchecker = callPackage ../development/python-modules/mailchecker { };
+
+  mailchimp = callPackage ../development/python-modules/mailchimp { };
+
+  mailman = callPackage ../servers/mail/mailman { };
+
+  mailmanclient = callPackage ../development/python-modules/mailmanclient { };
+
+  mailman-hyperkitty = callPackage ../development/python-modules/mailman-hyperkitty { };
+
+  mailman-web = callPackage ../servers/mail/mailman/web.nix { };
+
+  rtmixer = callPackage ../development/python-modules/rtmixer { };
+
+  mail-parser = callPackage ../development/python-modules/mail-parser { };
+
+  makefun = callPackage ../development/python-modules/makefun { };
+
+  mailsuite = callPackage ../development/python-modules/mailsuite { };
+
+  Mako = callPackage ../development/python-modules/Mako { };
+
+  malduck= callPackage ../development/python-modules/malduck { };
+
+  managesieve = callPackage ../development/python-modules/managesieve { };
+
+  manhole = callPackage ../development/python-modules/manhole { };
+
+  manimpango = callPackage ../development/python-modules/manimpango {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  manifestparser = callPackage ../development/python-modules/marionette-harness/manifestparser.nix { };
+
+  manuel = callPackage ../development/python-modules/manuel { };
+
+  manticore = callPackage ../development/python-modules/manticore {
+    inherit (pkgs) z3;
+  };
+
+  mapbox = callPackage ../development/python-modules/mapbox { };
+
+  mariadb = callPackage ../development/python-modules/mariadb { };
+
+  marisa-trie = callPackage ../development/python-modules/marisa-trie { };
+
+  markdown2 = callPackage ../development/python-modules/markdown2 { };
+
+  markdown = callPackage ../development/python-modules/markdown { };
+
+  markdown-include = callPackage ../development/python-modules/markdown-include { };
+
+  markdown-it-py = callPackage ../development/python-modules/markdown-it-py { };
+
+  markdown-macros = callPackage ../development/python-modules/markdown-macros { };
+
+  markdownsuperscript = callPackage ../development/python-modules/markdownsuperscript { };
+
+  markerlib = callPackage ../development/python-modules/markerlib { };
+
+  markupsafe = callPackage ../development/python-modules/markupsafe { };
+
+  markups = callPackage ../development/python-modules/markups { };
+
+  marshmallow = callPackage ../development/python-modules/marshmallow { };
+
+  marshmallow-dataclass = callPackage ../development/python-modules/marshmallow-dataclass { };
+
+  marshmallow-enum = callPackage ../development/python-modules/marshmallow-enum { };
+
+  marshmallow-oneofschema = callPackage ../development/python-modules/marshmallow-oneofschema { };
+
+  marshmallow-polyfield = callPackage ../development/python-modules/marshmallow-polyfield { };
+
+  marshmallow-sqlalchemy = callPackage ../development/python-modules/marshmallow-sqlalchemy { };
+
+  mask-rcnn = callPackage ../development/python-modules/mask-rcnn { };
+
+  mastodon-py = callPackage ../development/python-modules/mastodon-py { };
+
+  mat2 = callPackage ../development/python-modules/mat2 { };
+
+  matchpy = callPackage ../development/python-modules/matchpy { };
+
+  mathlibtools = callPackage ../development/python-modules/mathlibtools { };
+
+  matlink-gpapi = callPackage ../development/python-modules/matlink-gpapi { };
+
+  matplotlib = callPackage ../development/python-modules/matplotlib {
+    stdenv = if stdenv.isDarwin then pkgs.clangStdenv else pkgs.stdenv;
+    inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa;
+  };
+
+  matplotlib-inline = callPackage ../development/python-modules/matplotlib-inline { };
+
+  matrix-api-async = callPackage ../development/python-modules/matrix-api-async { };
+
+  matrix-client = callPackage ../development/python-modules/matrix-client { };
+
+  matrix-common = callPackage ../development/python-modules/matrix-common { };
+
+  matrix-nio = callPackage ../development/python-modules/matrix-nio { };
+
+  mattermostdriver = callPackage ../development/python-modules/mattermostdriver { };
+
+  mautrix = callPackage ../development/python-modules/mautrix { };
+
+  mautrix-appservice = self.mautrix; # alias 2019-12-28
+
+  maxcube-api = callPackage ../development/python-modules/maxcube-api { };
+
+  maxminddb = callPackage ../development/python-modules/maxminddb { };
+
+  maya = callPackage ../development/python-modules/maya { };
+
+  mayavi = pkgs.libsForQt5.callPackage ../development/python-modules/mayavi {
+    inherit buildPythonPackage pythonOlder fetchPypi;
+    inherit (self) pyface pygments numpy vtk traitsui envisage apptools pyqt5;
+  };
+
+  mbddns = callPackage ../development/python-modules/mbddns { };
+
+  mccabe = callPackage ../development/python-modules/mccabe { };
+
+  mcstatus = callPackage ../development/python-modules/mcstatus { };
+
+  md-toc = callPackage ../development/python-modules/md-toc { };
+
+  md2gemini = callPackage ../development/python-modules/md2gemini { };
+
+  mdformat = callPackage ../development/python-modules/mdformat { };
+
+  mdit-py-plugins = callPackage ../development/python-modules/mdit-py-plugins { };
+
+  mdurl = callPackage ../development/python-modules/mdurl { };
+
+  MDP = callPackage ../development/python-modules/mdp { };
+
+  measurement = callPackage ../development/python-modules/measurement { };
+
+  mecab-python3 = callPackage ../development/python-modules/mecab-python3 { };
+
+  mechanicalsoup = callPackage ../development/python-modules/mechanicalsoup { };
+
+  mechanize = callPackage ../development/python-modules/mechanize { };
+
+  mediafile = callPackage ../development/python-modules/mediafile { };
+
+  meinheld = callPackage ../development/python-modules/meinheld { };
+
+  meld3 = callPackage ../development/python-modules/meld3 { };
+
+  memcached = callPackage ../development/python-modules/memcached { };
+
+  memory-allocator = callPackage ../development/python-modules/memory-allocator { };
+
+  memory_profiler = callPackage ../development/python-modules/memory_profiler { };
+
+  mercantile = callPackage ../development/python-modules/mercantile { };
+
+  mercurial = toPythonModule (pkgs.mercurial.override {
+    python3Packages = self;
+  });
+
+  mergedeep = callPackage ../development/python-modules/mergedeep { };
+
+  merkletools = callPackage ../development/python-modules/merkletools { };
+
+  meross-iot = callPackage ../development/python-modules/meross-iot { };
+
+  mesa = callPackage ../development/python-modules/mesa { };
+
+  meshio = callPackage ../development/python-modules/meshio { };
+
+  meshlabxml = callPackage ../development/python-modules/meshlabxml { };
+
+  meshtastic = callPackage ../development/python-modules/meshtastic { };
+
+  meson = toPythonModule ((pkgs.meson.override { python3 = python; }).overrideAttrs
+    (oldAttrs: { # We do not want the setup hook in Python packages because the build is performed differently.
+      setupHook = null;
+    }));
+
+  mesonpep517 = callPackage ../development/python-modules/mesonpep517 { };
+
+  metakernel = callPackage ../development/python-modules/metakernel { };
+
+  metar = callPackage ../development/python-modules/metar { };
+
+  meteoalertapi = callPackage ../development/python-modules/meteoalertapi { };
+
+  mezzanine = callPackage ../development/python-modules/mezzanine { };
+
+  micawber = callPackage ../development/python-modules/micawber { };
+
+  midiutil = callPackage ../development/python-modules/midiutil { };
+
+  mido = callPackage ../development/python-modules/mido { };
+
+  migen = callPackage ../development/python-modules/migen { };
+
+  milc = callPackage ../development/python-modules/milc { };
+
+  milksnake = callPackage ../development/python-modules/milksnake { };
+
+  mill-local = callPackage ../development/python-modules/mill-local { };
+
+  millheater = callPackage ../development/python-modules/millheater { };
+
+  minexr = callPackage ../development/python-modules/minexr { };
+
+  miniaudio = callPackage ../development/python-modules/miniaudio { };
+
+  minidb = callPackage ../development/python-modules/minidb { };
+
+  minidump = callPackage ../development/python-modules/minidump { };
+
+  minikanren = callPackage ../development/python-modules/minikanren { };
+
+  minikerberos = callPackage ../development/python-modules/minikerberos { };
+
+  minimock = callPackage ../development/python-modules/minimock { };
+
+  mininet-python = (toPythonModule (pkgs.mininet.override {
+    python3 = python;
+  })).py;
+
+  minio = callPackage ../development/python-modules/minio { };
+
+  miniupnpc = callPackage ../development/python-modules/miniupnpc { };
+
+  misaka = callPackage ../development/python-modules/misaka { };
+
+  mistletoe = callPackage ../development/python-modules/mistletoe { };
+
+  inherit (import ../development/python-modules/mistune self)
+    mistune
+    mistune_0_8
+    mistune_2_0
+  ;
+
+  mitmproxy = callPackage ../development/python-modules/mitmproxy { };
+
+  mitogen = callPackage ../development/python-modules/mitogen { };
+
+  mixpanel = callPackage ../development/python-modules/mixpanel { };
+
+  mizani = callPackage ../development/python-modules/mizani { };
+
+  mkdocs = callPackage ../development/python-modules/mkdocs { };
+
+  mkl-service = callPackage ../development/python-modules/mkl-service { };
+
+  ml-collections = callPackage ../development/python-modules/ml-collections { };
+
+  mlflow = callPackage ../development/python-modules/mlflow { };
+
+  mlrose = callPackage ../development/python-modules/mlrose { };
+
+  mlxtend = callPackage ../development/python-modules/mlxtend { };
+
+  mlt = toPythonModule (pkgs.mlt.override {
+    python3 = python;
+    enablePython = true;
+  });
+
+  mmh3 = callPackage ../development/python-modules/mmh3 { };
+
+  mmpython = callPackage ../development/python-modules/mmpython { };
+
+  mnemonic = callPackage ../development/python-modules/mnemonic { };
+
+  mne-python = callPackage ../development/python-modules/mne-python { };
+
+  mnist = callPackage ../development/python-modules/mnist { };
+
+  mocket = callPackage ../development/python-modules/mocket { };
+
+  mock = callPackage ../development/python-modules/mock { };
+
+  mockito = callPackage ../development/python-modules/mockito { };
+
+  mock-open = callPackage ../development/python-modules/mock-open { };
+
+  mock-services = callPackage ../development/python-modules/mock-services { };
+
+  mockupdb = callPackage ../development/python-modules/mockupdb { };
+
+  modeled = callPackage ../development/python-modules/modeled { };
+
+  moderngl = callPackage ../development/python-modules/moderngl { };
+
+  moderngl-window = callPackage ../development/python-modules/moderngl_window { };
+
+  modestmaps = callPackage ../development/python-modules/modestmaps { };
+
+  mohawk = callPackage ../development/python-modules/mohawk { };
+
+  mongomock = callPackage ../development/python-modules/mongomock { };
+
+  mongodict = callPackage ../development/python-modules/mongodict { };
+
+  mongoengine = callPackage ../development/python-modules/mongoengine { };
+
+  monkeyhex = callPackage ../development/python-modules/monkeyhex { };
+
+  monosat = (pkgs.monosat.python {
+    inherit buildPythonPackage;
+    inherit (self) cython;
+  });
+
+  monotonic = callPackage ../development/python-modules/monotonic { };
+
+  monty = callPackage ../development/python-modules/monty { };
+
+  moonraker-api = callPackage ../development/python-modules/moonraker-api { };
+
+  more-itertools = callPackage ../development/python-modules/more-itertools { };
+
+  moretools = callPackage ../development/python-modules/moretools { };
+
+  morphys = callPackage ../development/python-modules/morphys { };
+
+  mortgage = callPackage ../development/python-modules/mortgage { };
+
+  motionblinds = callPackage ../development/python-modules/motionblinds { };
+
+  motioneye-client = callPackage ../development/python-modules/motioneye-client { };
+
+  moto = callPackage ../development/python-modules/moto { };
+
+  motor = callPackage ../development/python-modules/motor { };
+
+  mouseinfo = callPackage ../development/python-modules/mouseinfo { };
+
+  moviepy = callPackage ../development/python-modules/moviepy { };
+
+  mox3 = callPackage ../development/python-modules/mox3 { };
+
+  mox = callPackage ../development/python-modules/mox { };
+
+  mpd2 = callPackage ../development/python-modules/mpd2 { };
+
+  mpi4py = callPackage ../development/python-modules/mpi4py { };
+
+  mpldatacursor = callPackage ../development/python-modules/mpldatacursor { };
+
+  mplfinance = callPackage ../development/python-modules/mplfinance { };
+
+  mplleaflet = callPackage ../development/python-modules/mplleaflet { };
+
+  mpmath = callPackage ../development/python-modules/mpmath { };
+
+  mpv = callPackage ../development/python-modules/mpv {
+    inherit (pkgs) mpv;
+  };
+
+  mpyq = callPackage ../development/python-modules/mpyq { };
+
+  mrkd = callPackage ../development/python-modules/mrkd { };
+
+  ms-active-directory = callPackage ../development/python-modules/ms-active-directory { };
+
+  ms-cv = callPackage ../development/python-modules/ms-cv { };
+
+  msal = callPackage ../development/python-modules/msal { };
+
+  msal-extensions = callPackage ../development/python-modules/msal-extensions { };
+
+  msgpack = callPackage ../development/python-modules/msgpack { };
+
+  msgpack-numpy = callPackage ../development/python-modules/msgpack-numpy { };
+
+  msldap = callPackage ../development/python-modules/msldap { };
+
+  msoffcrypto-tool = callPackage ../development/python-modules/msoffcrypto-tool { };
+
+  mss = callPackage ../development/python-modules/mss { };
+
+  msrestazure = callPackage ../development/python-modules/msrestazure { };
+
+  msrest = callPackage ../development/python-modules/msrest { };
+
+  mt-940 = callPackage ../development/python-modules/mt-940 { };
+
+  mullvad-api = callPackage ../development/python-modules/mullvad-api { };
+
+  mulpyplexer = callPackage ../development/python-modules/mulpyplexer { };
+
+  multidict = callPackage ../development/python-modules/multidict { };
+
+  multi_key_dict = callPackage ../development/python-modules/multi_key_dict { };
+
+  multimethod = callPackage ../development/python-modules/multimethod { };
+
+  multipledispatch = callPackage ../development/python-modules/multipledispatch { };
+
+  multiprocess = callPackage ../development/python-modules/multiprocess { };
+
+  multiset = callPackage ../development/python-modules/multiset { };
+
+  multitasking = callPackage ../development/python-modules/multitasking { };
+
+  munch = callPackage ../development/python-modules/munch { };
+
+  munkres = callPackage ../development/python-modules/munkres { };
+
+  murmurhash = callPackage ../development/python-modules/murmurhash { };
+
+  musicbrainzngs = callPackage ../development/python-modules/musicbrainzngs { };
+
+  mutag = callPackage ../development/python-modules/mutag { };
+
+  mutagen = callPackage ../development/python-modules/mutagen { };
+
+  mutatormath = callPackage ../development/python-modules/mutatormath { };
+
+  mutesync = callPackage ../development/python-modules/mutesync { };
+
+  mutf8 = callPackage ../development/python-modules/mutf8 { };
+
+  mutmut = callPackage ../development/python-modules/mutmut { };
+
+  mujson = callPackage ../development/python-modules/mujson { };
+
+  mwclient = callPackage ../development/python-modules/mwclient { };
+
+  mwdblib = callPackage ../development/python-modules/mwdblib { };
+
+  mwoauth = callPackage ../development/python-modules/mwoauth { };
+
+  mwparserfromhell = callPackage ../development/python-modules/mwparserfromhell { };
+
+  mxnet = callPackage ../development/python-modules/mxnet { };
+
+  myfitnesspal = callPackage ../development/python-modules/myfitnesspal { };
+
+  mygpoclient = callPackage ../development/python-modules/mygpoclient { };
+
+  myhome = callPackage ../development/python-modules/myhome { };
+
+  myjwt = callPackage ../development/python-modules/myjwt { };
+
+  mypy = callPackage ../development/python-modules/mypy { };
+
+  mypy-boto3-builder = callPackage ../development/python-modules/mypy-boto3-builder { };
+
+  mypy-boto3-s3 = callPackage ../development/python-modules/mypy-boto3-s3 { };
+
+  mypy-extensions = callPackage ../development/python-modules/mypy/extensions.nix { };
+
+  mypy-protobuf = callPackage ../development/python-modules/mypy-protobuf { };
+
+  mysqlclient = callPackage ../development/python-modules/mysqlclient { };
+
+  mysql-connector = callPackage ../development/python-modules/mysql-connector { };
+
+  nad-receiver = callPackage ../development/python-modules/nad-receiver { };
+
+  nagiosplugin = callPackage ../development/python-modules/nagiosplugin { };
+
+  namedlist = callPackage ../development/python-modules/namedlist { };
+
+  nameparser = callPackage ../development/python-modules/nameparser { };
+
+  names = callPackage ../development/python-modules/names { };
+
+  nampa = callPackage ../development/python-modules/nampa { };
+
+  nanoleaf = callPackage ../development/python-modules/nanoleaf { };
+
+  nanomsg-python = callPackage ../development/python-modules/nanomsg-python {
+    inherit (pkgs) nanomsg;
+  };
+
+  nanotime = callPackage ../development/python-modules/nanotime { };
+
+  napalm = callPackage ../development/python-modules/napalm { };
+
+  napalm-hp-procurve = callPackage ../development/python-modules/napalm/hp-procurve.nix { };
+
+  napari = callPackage ../development/python-modules/napari {
+    inherit (pkgs.libsForQt5) mkDerivationWith wrapQtAppsHook;
+  };
+
+  napari-console = callPackage ../development/python-modules/napari-console { };
+
+  napari-plugin-engine = callPackage ../development/python-modules/napari-plugin-engine { };
+
+  napari-svg = callPackage ../development/python-modules/napari-svg { };
+
+  nassl = callPackage ../development/python-modules/nassl { };
+
+  nats-py = callPackage ../development/python-modules/nats-py { };
+
+  nats-python = callPackage ../development/python-modules/nats-python { };
+
+  natsort = callPackage ../development/python-modules/natsort { };
+
+  naturalsort = callPackage ../development/python-modules/naturalsort { };
+
+  nbclassic = callPackage ../development/python-modules/nbclassic { };
+
+  nbclient = callPackage ../development/python-modules/nbclient { };
+
+  nbconflux = callPackage ../development/python-modules/nbconflux { };
+
+  nbconvert = callPackage ../development/python-modules/nbconvert { };
+
+  nbdime = callPackage ../development/python-modules/nbdime { };
+
+  nbformat = callPackage ../development/python-modules/nbformat { };
+
+  nbmerge = callPackage ../development/python-modules/nbmerge { };
+
+  nbsmoke = callPackage ../development/python-modules/nbsmoke { };
+
+  nbsphinx = callPackage ../development/python-modules/nbsphinx { };
+
+  nbval = callPackage ../development/python-modules/nbval { };
+
+  nbxmpp = callPackage ../development/python-modules/nbxmpp { };
+
+  ncclient = callPackage ../development/python-modules/ncclient { };
+
+  nclib = callPackage ../development/python-modules/nclib { };
+
+  ndg-httpsclient = callPackage ../development/python-modules/ndg-httpsclient { };
+
+  ndjson = callPackage ../development/python-modules/ndjson { };
+
+  ndms2-client = callPackage ../development/python-modules/ndms2-client { };
+
+  ndspy = callPackage ../development/python-modules/ndspy { };
+
+  ndtypes = callPackage ../development/python-modules/ndtypes { };
+
+  nengo = callPackage ../development/python-modules/nengo { };
+
+  neo = callPackage ../development/python-modules/neo { };
+
+  neo4j-driver = callPackage ../development/python-modules/neo4j-driver { };
+
+  nessclient = callPackage ../development/python-modules/nessclient { };
+
+  nest-asyncio = callPackage ../development/python-modules/nest-asyncio { };
+
+  nestedtext = callPackage ../development/python-modules/nestedtext { };
+
+  net2grid = callPackage ../development/python-modules/net2grid { };
+
+  netaddr = callPackage ../development/python-modules/netaddr { };
+
+  netcdf4 = callPackage ../development/python-modules/netcdf4 { };
+
+  netdata = callPackage ../development/python-modules/netdata { };
+
+  netdisco = callPackage ../development/python-modules/netdisco { };
+
+  netifaces = callPackage ../development/python-modules/netifaces { };
+
+  netmiko = callPackage ../development/python-modules/netmiko { };
+
+  netio = callPackage ../development/python-modules/netio { };
+
+  nettigo-air-monitor = callPackage ../development/python-modules/nettigo-air-monitor { };
+
+  networkx = callPackage ../development/python-modules/networkx { };
+
+  neuron-mpi = pkgs.neuron-mpi.override { inherit python; };
+
+  neuron = pkgs.neuron.override { inherit python; };
+
+  neuronpy = callPackage ../development/python-modules/neuronpy { };
+
+  nevow = callPackage ../development/python-modules/nevow { };
+
+  newversion = callPackage ../development/python-modules/newversion { };
+
+  nexia = callPackage ../development/python-modules/nexia { };
+
+  nextcloudmonitor = callPackage ../development/python-modules/nextcloudmonitor { };
+
+  nextcord = callPackage ../development/python-modules/nextcord { };
+
+  nghttp2 = (toPythonModule (pkgs.nghttp2.override {
+    inherit (self) python cython setuptools;
+    inherit (pkgs) ncurses;
+    enablePython = true;
+  })).python;
+
+  nibabel = callPackage ../development/python-modules/nibabel { };
+
+  nidaqmx = callPackage ../development/python-modules/nidaqmx { };
+
+  Nikola = callPackage ../development/python-modules/Nikola { };
+
+  niko-home-control = callPackage ../development/python-modules/niko-home-control { };
+
+  nilearn = callPackage ../development/python-modules/nilearn { };
+
+  niluclient = callPackage ../development/python-modules/niluclient { };
+
+  nimfa = callPackage ../development/python-modules/nimfa { };
+
+  nine = callPackage ../development/python-modules/nine { };
+
+  nipy = callPackage ../development/python-modules/nipy { };
+
+  nipype = callPackage ../development/python-modules/nipype {
+    inherit (pkgs) which;
+  };
+
+  nitime = callPackage ../development/python-modules/nitime { };
+
+  nitpick = callPackage ../applications/version-management/nitpick { };
+
+  nitransforms = callPackage ../development/python-modules/nitransforms { };
+
+  nix-kernel = callPackage ../development/python-modules/nix-kernel {
+    inherit (pkgs) nix;
+  };
+
+  nixpkgs = callPackage ../development/python-modules/nixpkgs { };
+
+  nixpkgs-pytools = callPackage ../development/python-modules/nixpkgs-pytools { };
+
+  nix-prefetch-github = callPackage ../development/python-modules/nix-prefetch-github { };
+
+  nkdfu = callPackage ../development/python-modules/nkdfu { };
+
+  nltk = callPackage ../development/python-modules/nltk { };
+
+  nmapthon2 = callPackage ../development/python-modules/nmapthon2 { };
+
+  amaranth-boards = callPackage ../development/python-modules/amaranth-boards { };
+
+  amaranth = callPackage ../development/python-modules/amaranth { };
+
+  amaranth-soc = callPackage ../development/python-modules/amaranth-soc { };
+
+  nocasedict = callPackage ../development/python-modules/nocasedict { };
+
+  nocaselist = callPackage ../development/python-modules/nocaselist { };
+
+  nodeenv = callPackage ../development/python-modules/nodeenv { };
+
+  nodepy-runtime = callPackage ../development/python-modules/nodepy-runtime { };
+
+  node-semver = callPackage ../development/python-modules/node-semver { };
+
+  noise = callPackage ../development/python-modules/noise { };
+
+  noiseprotocol = callPackage ../development/python-modules/noiseprotocol { };
+
+  normality = callPackage ../development/python-modules/normality { };
+
+  nose2 = callPackage ../development/python-modules/nose2 { };
+
+  nose = callPackage ../development/python-modules/nose { };
+
+  nose-cov = callPackage ../development/python-modules/nose-cov { };
+
+  nose-cover3 = callPackage ../development/python-modules/nose-cover3 { };
+
+  nose-cprof = callPackage ../development/python-modules/nose-cprof { };
+
+  nose-exclude = callPackage ../development/python-modules/nose-exclude { };
+
+  nose-timer = callPackage ../development/python-modules/nose-timer { };
+
+  nosejs = callPackage ../development/python-modules/nosejs { };
+
+  nose-pattern-exclude = callPackage ../development/python-modules/nose-pattern-exclude { };
+
+  nose_progressive = callPackage ../development/python-modules/nose_progressive { };
+
+  nose-randomly = callPackage ../development/python-modules/nose-randomly { };
+
+  nose_warnings_filters = callPackage ../development/python-modules/nose_warnings_filters { };
+
+  nosexcover = callPackage ../development/python-modules/nosexcover { };
+
+  notebook = callPackage ../development/python-modules/notebook { };
+
+  notedown = callPackage ../development/python-modules/notedown { };
+
+  notifications-python-client = callPackage ../development/python-modules/notifications-python-client { };
+
+  notify-py = callPackage ../development/python-modules/notify-py { };
+
+  notify2 = callPackage ../development/python-modules/notify2 { };
+
+  notmuch = callPackage ../development/python-modules/notmuch {
+    inherit (pkgs) notmuch;
+  };
+
+  nototools = callPackage ../data/fonts/noto-fonts/tools.nix { };
+
+  notus-scanner = callPackage ../development/python-modules/notus-scanner { };
+
+  nplusone = callPackage ../development/python-modules/nplusone { };
+
+  npyscreen = callPackage ../development/python-modules/npyscreen { };
+
+  nsapi = callPackage ../development/python-modules/nsapi { };
+
+  ntfy-webpush = callPackage ../tools/misc/ntfy-webpush { };
+
+  ntc-templates = callPackage ../development/python-modules/ntc-templates { };
+
+  ntlm-auth = callPackage ../development/python-modules/ntlm-auth { };
+
+  ntplib = callPackage ../development/python-modules/ntplib { };
+
+  Nuitka = callPackage ../development/python-modules/nuitka { };
+
+  nulltype = callPackage ../development/python-modules/nulltype { };
+
+  num2words = callPackage ../development/python-modules/num2words { };
+
+  numba = callPackage ../development/python-modules/numba { };
+
+  numba-scipy = callPackage ../development/python-modules/numba-scipy { };
+
+  numcodecs = callPackage ../development/python-modules/numcodecs { };
+
+  numericalunits = callPackage ../development/python-modules/numericalunits { };
+
+  numexpr = callPackage ../development/python-modules/numexpr { };
+
+  numpydoc = callPackage ../development/python-modules/numpydoc { };
+
+  numpy = callPackage ../development/python-modules/numpy { };
+
+  numpy-stl = callPackage ../development/python-modules/numpy-stl { };
+
+  nunavut = callPackage ../development/python-modules/nunavut { };
+
+  nvchecker = callPackage ../development/python-modules/nvchecker { };
+
+  python-nvd3 = callPackage ../development/python-modules/python-nvd3 { };
+
+  nwdiag = callPackage ../development/python-modules/nwdiag { };
+
+  oath = callPackage ../development/python-modules/oath { };
+
+  oauth2 = callPackage ../development/python-modules/oauth2 { };
+
+  oauth2client = callPackage ../development/python-modules/oauth2client { };
+
+  oauth = callPackage ../development/python-modules/oauth { };
+
+  oauthenticator = callPackage ../development/python-modules/oauthenticator { };
+
+  oauthlib = callPackage ../development/python-modules/oauthlib { };
+
+  obfsproxy = callPackage ../development/python-modules/obfsproxy { };
+
+  objax = callPackage ../development/python-modules/objax { };
+
+  objgraph = callPackage ../development/python-modules/objgraph {
+    # requires both the graphviz package and python package
+    graphvizPkgs = pkgs.graphviz;
+  };
+
+  obspy = callPackage ../development/python-modules/obspy { };
+
+  oci = callPackage ../development/python-modules/oci { };
+
+  ocrmypdf = callPackage ../development/python-modules/ocrmypdf { };
+
+  od = callPackage ../development/python-modules/od { };
+
+  odfpy = callPackage ../development/python-modules/odfpy { };
+
+  offtrac = callPackage ../development/python-modules/offtrac { };
+
+  ofxclient = callPackage ../development/python-modules/ofxclient { };
+
+  ofxhome = callPackage ../development/python-modules/ofxhome { };
+
+  ofxparse = callPackage ../development/python-modules/ofxparse { };
+
+  ofxtools = callPackage ../development/python-modules/ofxtools { };
+
+  oemthermostat = callPackage ../development/python-modules/oemthermostat { };
+
+  olefile = callPackage ../development/python-modules/olefile { };
+
+  oletools = callPackage ../development/python-modules/oletools { };
+
+  omegaconf = callPackage ../development/python-modules/omegaconf { };
+
+  omnikinverter = callPackage ../development/python-modules/omnikinverter { };
+
+  omnilogic = callPackage ../development/python-modules/omnilogic { };
+
+  ondilo = callPackage ../development/python-modules/ondilo { };
+
+  onetimepass = callPackage ../development/python-modules/onetimepass { };
+
+  onkyo-eiscp = callPackage ../development/python-modules/onkyo-eiscp { };
+
+  online-judge-api-client = callPackage ../development/python-modules/online-judge-api-client { };
+
+  online-judge-tools = callPackage ../development/python-modules/online-judge-tools { };
+
+  onlykey-solo-python = callPackage ../development/python-modules/onlykey-solo-python { };
+
+  onnx = callPackage ../development/python-modules/onnx { };
+
+  onvif-zeep-async = callPackage ../development/python-modules/onvif-zeep-async { };
+
+  oocsi = callPackage ../development/python-modules/oocsi { };
+
+  open-garage = callPackage ../development/python-modules/open-garage { };
+
+  open-meteo = callPackage ../development/python-modules/open-meteo { };
+
+  openant = callPackage ../development/python-modules/openant { };
+
+  openapi-schema-validator = callPackage ../development/python-modules/openapi-schema-validator { };
+
+  openapi-spec-validator = callPackage ../development/python-modules/openapi-spec-validator { };
+
+  openbabel-bindings = callPackage ../development/python-modules/openbabel-bindings {
+      openbabel = (callPackage ../development/libraries/openbabel { python = self.python; });
+  };
+
+  opencv3 = toPythonModule (pkgs.opencv3.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  opencv4 = toPythonModule (pkgs.opencv4.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  openerz-api = callPackage ../development/python-modules/openerz-api { };
+
+  openevsewifi = callPackage ../development/python-modules/openevsewifi { };
+
+  openhomedevice = callPackage ../development/python-modules/openhomedevice { };
+
+  openidc-client = callPackage ../development/python-modules/openidc-client { };
+
+  openpyxl = callPackage ../development/python-modules/openpyxl { };
+
+  openrazer = callPackage ../development/python-modules/openrazer/pylib.nix { };
+
+  openrazer-daemon = callPackage ../development/python-modules/openrazer/daemon.nix { };
+
+  openrouteservice = callPackage ../development/python-modules/openrouteservice { };
+
+  opensensemap-api = callPackage ../development/python-modules/opensensemap-api { };
+
+  opensfm = callPackage ../development/python-modules/opensfm { };
+
+  openshift = callPackage ../development/python-modules/openshift { };
+
+  opensimplex = callPackage ../development/python-modules/opensimplex { };
+
+  openstackdocstheme = callPackage ../development/python-modules/openstackdocstheme { };
+
+  openstacksdk = callPackage ../development/python-modules/openstacksdk { };
+
+  opentimestamps = callPackage ../development/python-modules/opentimestamps { };
+
+  opentracing = callPackage ../development/python-modules/opentracing { };
+
+  openvino = toPythonModule (pkgs.openvino.override {
+    inherit (self) python;
+    enablePython = true;
+  });
+
+  openwebifpy = callPackage ../development/python-modules/openwebifpy { };
+
+  openwrt-luci-rpc = callPackage ../development/python-modules/openwrt-luci-rpc { };
+
+  openwrt-ubus-rpc = callPackage ../development/python-modules/openwrt-ubus-rpc { };
+
+  opsdroid_get_image_size = callPackage ../development/python-modules/opsdroid_get_image_size { };
+
+  opt-einsum = callPackage ../development/python-modules/opt-einsum { };
+
+  optax = callPackage ../development/python-modules/optax { };
+
+  optuna = callPackage ../development/python-modules/optuna { };
+
+  opuslib = callPackage ../development/python-modules/opuslib { };
+
+  ordereddict = callPackage ../development/python-modules/ordereddict { };
+
+  orderedmultidict = callPackage ../development/python-modules/orderedmultidict { };
+
+  ordered-set = callPackage ../development/python-modules/ordered-set { };
+
+  orderedset = callPackage ../development/python-modules/orderedset { };
+
+  orjson = callPackage ../development/python-modules/orjson { };
+
+  orm = callPackage ../development/python-modules/orm { };
+
+  ormar = callPackage ../development/python-modules/ormar { };
+
+  ortools = (toPythonModule (pkgs.or-tools.override { inherit (self) python; })).python;
+
+  orvibo = callPackage ../development/python-modules/orvibo { };
+
+  os-service-types = callPackage ../development/python-modules/os-service-types { };
+
+  osc = callPackage ../development/python-modules/osc { };
+
+  osc-lib = callPackage ../development/python-modules/osc-lib { };
+
+  oscrypto = callPackage ../development/python-modules/oscrypto { };
+
+  oset = callPackage ../development/python-modules/oset { };
+
+  osmnx = callPackage ../development/python-modules/osmnx { };
+
+  osmpythontools = callPackage ../development/python-modules/osmpythontools { };
+
+  oslo-concurrency = callPackage ../development/python-modules/oslo-concurrency { };
+
+  oslo-config = callPackage ../development/python-modules/oslo-config { };
+
+  oslo-context = callPackage ../development/python-modules/oslo-context { };
+
+  oslo-db = callPackage ../development/python-modules/oslo-db { };
+
+  oslo-i18n = callPackage ../development/python-modules/oslo-i18n { };
+
+  oslo-log = callPackage ../development/python-modules/oslo-log { };
+
+  oslo-serialization = callPackage ../development/python-modules/oslo-serialization { };
+
+  oslo-utils = callPackage ../development/python-modules/oslo-utils { };
+
+  oslotest = callPackage ../development/python-modules/oslotest { };
+
+  ospd = callPackage ../development/python-modules/ospd { };
+
+  osqp = callPackage ../development/python-modules/osqp { };
+
+  outcome = callPackage ../development/python-modules/outcome { };
+
+  ovh = callPackage ../development/python-modules/ovh { };
+
+  ovoenergy = callPackage ../development/python-modules/ovoenergy { };
+
+  owslib = callPackage ../development/python-modules/owslib { };
+
+  oyaml = callPackage ../development/python-modules/oyaml { };
+
+  p1monitor = callPackage ../development/python-modules/p1monitor { };
+
+  packageurl-python = callPackage ../development/python-modules/packageurl-python { };
+
+  packaging = callPackage ../development/python-modules/packaging { };
+
+  packbits = callPackage ../development/python-modules/packbits { };
+
+  packet-python = callPackage ../development/python-modules/packet-python { };
+
+  pafy = callPackage ../development/python-modules/pafy { };
+
+  pagelabels = callPackage ../development/python-modules/pagelabels { };
+
+  paho-mqtt = callPackage ../development/python-modules/paho-mqtt { };
+
+  palace = callPackage ../development/python-modules/palace { };
+
+  palettable = callPackage ../development/python-modules/palettable { };
+
+  pamela = callPackage ../development/python-modules/pamela { };
+
+  pamqp = callPackage ../development/python-modules/pamqp { };
+
+  panacotta = callPackage ../development/python-modules/panacotta { };
+
+  pandas = callPackage ../development/python-modules/pandas { };
+
+  pandas-datareader = callPackage ../development/python-modules/pandas-datareader { };
+
+  pandoc-attributes = callPackage ../development/python-modules/pandoc-attributes { };
+
+  pandocfilters = callPackage ../development/python-modules/pandocfilters { };
+
+  panel = callPackage ../development/python-modules/panel { };
+
+  panflute = callPackage ../development/python-modules/panflute { };
+
+  papermill = callPackage ../development/python-modules/papermill { };
+
+  openpaperwork-core = callPackage ../applications/office/paperwork/openpaperwork-core.nix { };
+  openpaperwork-gtk = callPackage ../applications/office/paperwork/openpaperwork-gtk.nix { };
+  paperwork-backend = callPackage ../applications/office/paperwork/paperwork-backend.nix { };
+  paperwork-shell = callPackage ../applications/office/paperwork/paperwork-shell.nix { };
+
+  papis = callPackage ../development/python-modules/papis { };
+
+  papis-python-rofi = callPackage ../development/python-modules/papis-python-rofi { };
+
+  param = callPackage ../development/python-modules/param { };
+
+  parameter-expansion-patched = callPackage ../development/python-modules/parameter-expansion-patched { };
+
+  parameterized = callPackage ../development/python-modules/parameterized { };
+
+  paramiko = callPackage ../development/python-modules/paramiko { };
+
+  paramz = callPackage ../development/python-modules/paramz { };
+
+  parfive = callPackage ../development/python-modules/parfive { };
+
+  parquet = callPackage ../development/python-modules/parquet { };
+
+  parse = callPackage ../development/python-modules/parse { };
+
+  parsedatetime = callPackage ../development/python-modules/parsedatetime { };
+
+  parsedmarc = callPackage ../development/python-modules/parsedmarc { };
+
+  parsel = callPackage ../development/python-modules/parsel { };
+
+  parse-type = callPackage ../development/python-modules/parse-type { };
+
+  parsimonious = callPackage ../development/python-modules/parsimonious { };
+
+  parsley = callPackage ../development/python-modules/parsley { };
+
+  parso = callPackage ../development/python-modules/parso { };
+
+  parsy = callPackage ../development/python-modules/parsy { };
+
+  partd = callPackage ../development/python-modules/partd { };
+
+  parts = callPackage ../development/python-modules/parts { };
+
+  parver = callPackage ../development/python-modules/parver { };
+  arpeggio = callPackage ../development/python-modules/arpeggio { };
+
+  passlib = callPackage ../development/python-modules/passlib { };
+
+  paste = callPackage ../development/python-modules/paste { };
+
+  pastedeploy = callPackage ../development/python-modules/pastedeploy { };
+
+  pastel = callPackage ../development/python-modules/pastel { };
+
+  pastescript = callPackage ../development/python-modules/pastescript { };
+
+  patator = callPackage ../development/python-modules/patator { };
+
+  patch = callPackage ../development/python-modules/patch { };
+
+  patch-ng = callPackage ../development/python-modules/patch-ng { };
+
+  path-and-address = callPackage ../development/python-modules/path-and-address { };
+
+  pathlib2 = callPackage ../development/python-modules/pathlib2 { };
+
+  pathlib = callPackage ../development/python-modules/pathlib { };
+
+  pathos = callPackage ../development/python-modules/pathos { };
+
+  pathpy = callPackage ../development/python-modules/path.py { };
+
+  pathspec = callPackage ../development/python-modules/pathspec { };
+
+  pathtools = callPackage ../development/python-modules/pathtools { };
+
+  pathvalidate = callPackage ../development/python-modules/pathvalidate { };
+
+  pathy = callPackage ../development/python-modules/pathy { };
+
+  patiencediff = callPackage ../development/python-modules/patiencediff { };
+
+  patool = callPackage ../development/python-modules/patool { };
+
+  patsy = callPackage ../development/python-modules/patsy { };
+
+  patrowl4py = callPackage ../development/python-modules/patrowl4py { };
+
+  paver = callPackage ../development/python-modules/paver { };
+
+  paypalrestsdk = callPackage ../development/python-modules/paypalrestsdk { };
+
+  pbkdf2 = callPackage ../development/python-modules/pbkdf2 { };
+
+  pbr = callPackage ../development/python-modules/pbr { };
+
+  pc-ble-driver-py = toPythonModule (callPackage ../development/python-modules/pc-ble-driver-py { });
+
+  pcodedmp = callPackage ../development/python-modules/pcodedmp { };
+
+  pcpp = callPackage ../development/python-modules/pcpp { };
+
+  pdf2image = callPackage ../development/python-modules/pdf2image { };
+
+  pdfkit = callPackage ../development/python-modules/pdfkit { };
+
+  pdfminer = callPackage ../development/python-modules/pdfminer_six { };
+
+  pdfposter = callPackage ../development/python-modules/pdfposter { };
+
+  pdfrw = callPackage ../development/python-modules/pdfrw { };
+
+  pdftotext = callPackage ../development/python-modules/pdftotext { };
+
+  pdfx = callPackage ../development/python-modules/pdfx { };
+
+  pdm-pep517 = callPackage ../development/python-modules/pdm-pep517 { };
+
+  pdoc3 = callPackage ../development/python-modules/pdoc3 { };
+
+  pebble = callPackage ../development/python-modules/pebble { };
+
+  pecan = callPackage ../development/python-modules/pecan { };
+
+  peewee = callPackage ../development/python-modules/peewee { };
+
+  pefile = callPackage ../development/python-modules/pefile { };
+
+  pelican = callPackage ../development/python-modules/pelican {
+    inherit (pkgs) glibcLocales git;
+  };
+
+  pendulum = callPackage ../development/python-modules/pendulum { };
+
+  pep257 = callPackage ../development/python-modules/pep257 { };
+
+  pep440 = callPackage ../development/python-modules/pep440 { };
+
+  pep517 = callPackage ../development/python-modules/pep517 { };
+
+  pep8 = callPackage ../development/python-modules/pep8 { };
+
+  pep8-naming = callPackage ../development/python-modules/pep8-naming { };
+
+  peppercorn = callPackage ../development/python-modules/peppercorn { };
+
+  percol = callPackage ../development/python-modules/percol { };
+
+  perfplot = callPackage ../development/python-modules/perfplot { };
+
+  periodictable = callPackage ../development/python-modules/periodictable { };
+
+  persim = callPackage ../development/python-modules/persim { };
+
+  persistent = callPackage ../development/python-modules/persistent { };
+
+  persisting-theory = callPackage ../development/python-modules/persisting-theory { };
+
+  pescea = callPackage ../development/python-modules/pescea { };
+
+  pex = callPackage ../development/python-modules/pex { };
+
+  pexif = callPackage ../development/python-modules/pexif { };
+
+  pexpect = callPackage ../development/python-modules/pexpect { };
+
+  pg8000 = callPackage ../development/python-modules/pg8000 { };
+
+  pgcli = callPackage ../development/tools/database/pgcli { };
+
+  pglast = callPackage ../development/python-modules/pglast { };
+
+  pgpdump = callPackage ../development/python-modules/pgpdump { };
+
+  pgpy = callPackage ../development/python-modules/pgpy { };
+
+  pgsanity = callPackage ../development/python-modules/pgsanity { };
+
+  pgspecial = callPackage ../development/python-modules/pgspecial { };
+
+  phe = callPackage ../development/python-modules/phe { };
+
+  phik = callPackage ../development/python-modules/phik { };
+
+  phone-modem = callPackage ../development/python-modules/phone-modem { };
+
+  phonenumbers = callPackage ../development/python-modules/phonenumbers { };
+
+  micloud = callPackage ../development/python-modules/micloud { };
+
+  netmap = callPackage ../development/python-modules/netmap { };
+
+  openai = callPackage ../development/python-modules/openai { };
+
+  openapi-core = callPackage ../development/python-modules/openapi-core { };
+
+  pandas-stubs = callPackage ../development/python-modules/pandas-stubs { };
+
+  parameterizedtestcase = callPackage ../development/python-modules/parameterizedtestcase { };
+
+  pdunehd = callPackage ../development/python-modules/pdunehd { };
+
+  pyprecice = callPackage ../development/python-modules/pyprecice { };
+
+  phonopy = callPackage ../development/python-modules/phonopy { };
+
+  phpserialize = callPackage ../development/python-modules/phpserialize { };
+
+  phx-class-registry = callPackage ../development/python-modules/phx-class-registry { };
+
+  pi1wire = callPackage ../development/python-modules/pi1wire { };
+
+  piccata = callPackage ../development/python-modules/piccata { };
+
+  pickleshare = callPackage ../development/python-modules/pickleshare { };
+
+  picos = callPackage ../development/python-modules/picos { };
+
+  pid = callPackage ../development/python-modules/pid { };
+
+  piep = callPackage ../development/python-modules/piep { };
+
+  piexif = callPackage ../development/python-modules/piexif { };
+
+  pijuice = callPackage ../development/python-modules/pijuice { };
+
+  pika = callPackage ../development/python-modules/pika { };
+
+  pika-pool = callPackage ../development/python-modules/pika-pool { };
+
+  pikepdf = callPackage ../development/python-modules/pikepdf { };
+
+  pilkit = callPackage ../development/python-modules/pilkit { };
+
+  pillowfight = callPackage ../development/python-modules/pillowfight { };
+
+  pillow = callPackage ../development/python-modules/pillow {
+    inherit (pkgs) freetype libjpeg zlib libtiff libwebp tcl lcms2 tk;
+    inherit (pkgs.xorg) libX11 libxcb;
+  };
+
+  pillow-simd = callPackage ../development/python-modules/pillow-simd {
+      inherit (pkgs) freetype libjpeg zlib libtiff libwebp tcl lcms2 tk;
+      inherit (pkgs.xorg) libX11;
+  };
+
+  pims = callPackage ../development/python-modules/pims { };
+
+  pinboard = callPackage ../development/python-modules/pinboard { };
+
+  pint = callPackage ../development/python-modules/pint { };
+
+  pip = callPackage ../development/python-modules/pip { };
+
+  pipdate = callPackage ../development/python-modules/pipdate { };
+
+  pipenv-poetry-migrate = callPackage ../development/python-modules/pipenv-poetry-migrate { };
+
+  pip-tools = callPackage ../development/python-modules/pip-tools { };
+
+  pipx = callPackage ../development/python-modules/pipx { };
+
+  pivy = callPackage ../development/python-modules/pivy {
+    inherit (pkgs.qt5) qtbase qmake;
+    inherit (pkgs.libsForQt5) soqt;
+  };
+
+  pixelmatch = callPackage ../development/python-modules/pixelmatch { };
+
+  pkce = callPackage ../development/python-modules/pkce { };
+
+  pkgconfig = callPackage ../development/python-modules/pkgconfig { };
+
+  pkginfo = callPackage ../development/python-modules/pkginfo { };
+
+  pkuseg = callPackage ../development/python-modules/pkuseg { };
+
+  pmsensor = callPackage ../development/python-modules/pmsensor { };
+
+  ppdeep = callPackage ../development/python-modules/ppdeep { };
+
+  proxy_tools = callPackage ../development/python-modules/proxy_tools { };
+
+  pyaehw4a1 = callPackage ../development/python-modules/pyaehw4a1 { };
+
+  pyatag = callPackage ../development/python-modules/pyatag { };
+
+  pyatome = callPackage ../development/python-modules/pyatome { };
+
+  pycontrol4 = callPackage ../development/python-modules/pycontrol4 { };
+
+  pycoolmasternet-async = callPackage ../development/python-modules/pycoolmasternet-async { };
+
+  pyfireservicerota = callPackage ../development/python-modules/pyfireservicerota { };
+
+  pyflexit = callPackage ../development/python-modules/pyflexit { };
+
+  pyflick = callPackage ../development/python-modules/pyflick { };
+
+  pyfreedompro = callPackage ../development/python-modules/pyfreedompro { };
+
+  pygti = callPackage ../development/python-modules/pygti { };
+
+  pyheos = callPackage ../development/python-modules/pyheos { };
+
+  pyhiveapi = callPackage ../development/python-modules/pyhiveapi { };
+
+  pyhumps = callPackage ../development/python-modules/pyhumps { };
+
+  pyisy = callPackage ../development/python-modules/pyisy { };
+
+  pykrakenapi = callPackage ../development/python-modules/pykrakenapi { };
+
+  pynndescent = callPackage ../development/python-modules/pynndescent { };
+
+  pynobo = callPackage ../development/python-modules/pynobo { };
+
+  pynuki = callPackage ../development/python-modules/pynuki { };
+
+  pynut2 = callPackage ../development/python-modules/pynut2 { };
+
+  pynws = callPackage ../development/python-modules/pynws { };
+
+  pynx584 = callPackage ../development/python-modules/pynx584 { };
+
+  pyoverkiz = callPackage ../development/python-modules/pyoverkiz { };
+
+  pyownet = callPackage ../development/python-modules/pyownet { };
+
+  pypoint = callPackage ../development/python-modules/pypoint { };
+
+  pypoolstation = callPackage ../development/python-modules/pypoolstation { };
+
+  pyrfxtrx = callPackage ../development/python-modules/pyrfxtrx { };
+
+  pyrogram = callPackage ../development/python-modules/pyrogram { };
+
+  pysbd = callPackage ../development/python-modules/pysbd { };
+
+  pyshark = callPackage ../development/python-modules/pyshark { };
+
+  pysiaalarm = callPackage ../development/python-modules/pysiaalarm { };
+
+  pyskyqhub = callPackage ../development/python-modules/pyskyqhub { };
+
+  pyskyqremote = callPackage ../development/python-modules/pyskyqremote { };
+
+  pysolcast = callPackage ../development/python-modules/pysolcast { };
+
+  pysyncthru = callPackage ../development/python-modules/pysyncthru { };
+
+  python-codon-tables = callPackage ../development/python-modules/python-codon-tables { };
+
+  python-crfsuite = callPackage ../development/python-modules/python-crfsuite { };
+
+  python-csxcad = callPackage ../development/python-modules/python-csxcad { };
+
+  python-ecobee-api = callPackage ../development/python-modules/python-ecobee-api { };
+
+  python-glanceclient = callPackage ../development/python-modules/python-glanceclient { };
+
+  python-google-nest = callPackage ../development/python-modules/python-google-nest { };
+
+  python-heatclient = callPackage ../development/python-modules/python-heatclient { };
+
+  python-ipmi = callPackage ../development/python-modules/python-ipmi { };
+
+  python-ironicclient = callPackage ../development/python-modules/python-ironicclient { };
+
+  python-izone = callPackage ../development/python-modules/python-izone { };
+
+  python-juicenet = callPackage ../development/python-modules/python-juicenet { };
+
+  python-kasa = callPackage ../development/python-modules/python-kasa { };
+
+  python-keycloak = callPackage ../development/python-modules/python-keycloak { };
+
+  python-keystoneclient = callPackage ../development/python-modules/python-keystoneclient { };
+
+  python-lsp-black = callPackage ../development/python-modules/python-lsp-black { };
+
+  python-openems = callPackage ../development/python-modules/python-openems { };
+
+  python-openzwave-mqtt = callPackage ../development/python-modules/python-openzwave-mqtt { };
+
+  python-owasp-zap-v2-4 = callPackage ../development/python-modules/python-owasp-zap-v2-4 { };
+
+  python-songpal = callPackage ../development/python-modules/python-songpal { };
+
+  python-swiftclient = callPackage ../development/python-modules/python-swiftclient { };
+
+  python-tado = callPackage ../development/python-modules/python-tado { };
+
+  pythonfinder = callPackage ../development/python-modules/pythonfinder { };
+
+  pyutil = callPackage ../development/python-modules/pyutil { };
+
+  pkutils = callPackage ../development/python-modules/pkutils { };
+
+  plac = callPackage ../development/python-modules/plac { };
+
+  plaid-python = callPackage ../development/python-modules/plaid-python { };
+
+  plaster = callPackage ../development/python-modules/plaster { };
+
+  plaster-pastedeploy = callPackage ../development/python-modules/plaster-pastedeploy { };
+
+  platformdirs = callPackage ../development/python-modules/platformdirs { };
+
+  playsound = callPackage ../development/python-modules/playsound { };
+
+  plexapi = callPackage ../development/python-modules/plexapi { };
+
+  plexauth = callPackage ../development/python-modules/plexauth { };
+
+  plexwebsocket = callPackage ../development/python-modules/plexwebsocket { };
+
+  plone-testing = callPackage ../development/python-modules/plone-testing { };
+
+  plotly = callPackage ../development/python-modules/plotly { };
+
+  pluggy = callPackage ../development/python-modules/pluggy { };
+
+  plugincode = callPackage ../development/python-modules/plugincode { };
+
+  pluginbase = callPackage ../development/python-modules/pluginbase { };
+
+  plugnplay = callPackage ../development/python-modules/plugnplay { };
+
+  plugwise = callPackage ../development/python-modules/plugwise { };
+
+  plum-py = callPackage ../development/python-modules/plum-py { };
+
+  plumbum = callPackage ../development/python-modules/plumbum { };
+
+  ply = callPackage ../development/python-modules/ply { };
+
+  plyer = callPackage ../development/python-modules/plyer { };
+
+  plyfile = callPackage ../development/python-modules/plyfile { };
+
+  plyplus = callPackage ../development/python-modules/plyplus { };
+
+  plyvel = callPackage ../development/python-modules/plyvel { };
+
+  Pmw = callPackage ../development/python-modules/Pmw { };
+
+  pocket = callPackage ../development/python-modules/pocket { };
+
+  podcastparser = callPackage ../development/python-modules/podcastparser { };
+
+  podcats = callPackage ../development/python-modules/podcats { };
+
+  poetry = callPackage ../development/python-modules/poetry { };
+
+  poetry-core = callPackage ../development/python-modules/poetry-core { };
+
+  poetry-semver = callPackage ../development/python-modules/poetry-semver { };
+
+  poetry2conda = callPackage ../development/python-modules/poetry2conda { };
+
+  poezio = callPackage ../applications/networking/instant-messengers/poezio { };
+
+  polarizationsolver = callPackage ../development/python-modules/polarizationsolver { };
+
+  polib = callPackage ../development/python-modules/polib { };
+
+  policy-sentry = callPackage ../development/python-modules/policy-sentry { };
+
+  policyuniverse = callPackage ../development/python-modules/policyuniverse { };
+
+  polyline = callPackage ../development/python-modules/polyline { };
+
+  pomegranate = callPackage ../development/python-modules/pomegranate { };
+
+  pontos = callPackage ../development/python-modules/pontos { };
+
+  pony = callPackage ../development/python-modules/pony { };
+
+  ponywhoosh = callPackage ../development/python-modules/ponywhoosh { };
+
+  pooch = callPackage ../development/python-modules/pooch { };
+
+  pook = callPackage ../development/python-modules/pook { };
+
+  poolsense = callPackage ../development/python-modules/poolsense { };
+
+  poppler-qt5 = callPackage ../development/python-modules/poppler-qt5 {
+    inherit (pkgs.qt5) qtbase qmake;
+    inherit (pkgs.libsForQt5) poppler;
+  };
+
+  portalocker = callPackage ../development/python-modules/portalocker { };
+
+  portend = callPackage ../development/python-modules/portend { };
+
+  portpicker = callPackage ../development/python-modules/portpicker { };
+
+  posix_ipc = callPackage ../development/python-modules/posix_ipc { };
+
+  poster3 = callPackage ../development/python-modules/poster3 { };
+
+  postorius = callPackage ../servers/mail/mailman/postorius.nix { };
+
+  pot = callPackage ../development/python-modules/pot { };
+
+  potentials = callPackage ../development/python-modules/potentials { };
+
+  potr = callPackage ../development/python-modules/potr { };
+
+  power = callPackage ../development/python-modules/power { };
+
+  powerline = callPackage ../development/python-modules/powerline { };
+
+  powerline-mem-segment = callPackage ../development/python-modules/powerline-mem-segment { };
+
+  pox = callPackage ../development/python-modules/pox { };
+
+  poyo = callPackage ../development/python-modules/poyo { };
+
+  ppft = callPackage ../development/python-modules/ppft { };
+
+  pplpy = callPackage ../development/python-modules/pplpy { };
+
+  pprintpp = callPackage ../development/python-modules/pprintpp { };
+
+  pproxy = callPackage ../development/python-modules/pproxy { };
+
+  ppscore = callPackage ../development/python-modules/ppscore { };
+
+  pq = callPackage ../development/python-modules/pq { };
+
+  prance = callPackage ../development/python-modules/prance { };
+
+  prawcore = callPackage ../development/python-modules/prawcore { };
+
+  praw = callPackage ../development/python-modules/praw { };
+
+  prayer-times-calculator = callPackage ../development/python-modules/prayer-times-calculator { };
+
+  precis-i18n = callPackage ../development/python-modules/precis-i18n { };
+
+  prefixed = callPackage ../development/python-modules/prefixed { };
+
+  pre-commit-hooks = callPackage ../development/python-modules/pre-commit-hooks { };
+
+  preggy = callPackage ../development/python-modules/preggy { };
+
+  premailer = callPackage ../development/python-modules/premailer { };
+
+  preshed = callPackage ../development/python-modules/preshed { };
+
+  pretend = callPackage ../development/python-modules/pretend { };
+
+  prettytable = callPackage ../development/python-modules/prettytable { };
+
+  primecountpy = callPackage ../development/python-modules/primecountpy { };
+
+  primer3 = callPackage ../development/python-modules/primer3 { };
+
+  priority = callPackage ../development/python-modules/priority { };
+
+  prison = callPackage ../development/python-modules/prison { };
+
+  privacyidea-ldap-proxy = callPackage ../development/python-modules/privacyidea-ldap-proxy { };
+
+  proboscis = callPackage ../development/python-modules/proboscis { };
+
+  process-tests = callPackage ../development/python-modules/process-tests { };
+
+  proglog = callPackage ../development/python-modules/proglog { };
+
+  progressbar2 = callPackage ../development/python-modules/progressbar2 { };
+
+  progressbar33 = callPackage ../development/python-modules/progressbar33 { };
+
+  progressbar = callPackage ../development/python-modules/progressbar { };
+
+  progress = callPackage ../development/python-modules/progress { };
+
+  prometheus-client = callPackage ../development/python-modules/prometheus-client { };
+
+  prometheus-flask-exporter = callPackage ../development/python-modules/prometheus-flask-exporter { };
+
+  promise = callPackage ../development/python-modules/promise { };
+
+  prompt-toolkit = callPackage ../development/python-modules/prompt-toolkit { };
+
+  property-manager = callPackage ../development/python-modules/property-manager { };
+
+  protego = callPackage ../development/python-modules/protego { };
+
+  proto-plus = callPackage ../development/python-modules/proto-plus { };
+
+  protobuf = callPackage ../development/python-modules/protobuf {
+    disabled = isPyPy;
+    # If a protobuf upgrade causes many Python packages to fail, please pin it here to the previous version.
+    doCheck = !isPy3k;
+    inherit (pkgs) protobuf;
+  };
+
+  protobuf3-to-dict = callPackage ../development/python-modules/protobuf3-to-dict { };
+
+  proton-client = callPackage ../development/python-modules/proton-client { };
+
+  protonup = callPackage ../development/python-modules/protonup { };
+
+  protonvpn-nm-lib = callPackage ../development/python-modules/protonvpn-nm-lib { };
+
+  prov = callPackage ../development/python-modules/prov { };
+
+  prox-tv = callPackage ../development/python-modules/prox-tv { };
+
+  proxmoxer = callPackage ../development/python-modules/proxmoxer { };
+
+  proxy-py = callPackage ../development/python-modules/proxy-py { };
+
+  psautohint = callPackage ../development/python-modules/psautohint { };
+
+  pscript = callPackage ../development/python-modules/pscript { };
+
+  psd-tools = callPackage ../development/python-modules/psd-tools { };
+
+  psutil = callPackage ../development/python-modules/psutil { };
+
+  psycopg2 = callPackage ../development/python-modules/psycopg2 { };
+
+  psycopg2cffi = callPackage ../development/python-modules/psycopg2cffi { };
+
+  psygnal = callPackage ../development/python-modules/psygnal { };
+
+  ptable = callPackage ../development/python-modules/ptable { };
+
+  ptest = callPackage ../development/python-modules/ptest { };
+
+  ptpython = callPackage ../development/python-modules/ptpython { };
+
+  ptyprocess = callPackage ../development/python-modules/ptyprocess { };
+
+  publicsuffix2 = callPackage ../development/python-modules/publicsuffix2 { };
+
+  publicsuffix = callPackage ../development/python-modules/publicsuffix { };
+
+  pubnub = callPackage ../development/python-modules/pubnub { };
+
+  pubnubsub-handler = callPackage ../development/python-modules/pubnubsub-handler { };
+
+  pudb = callPackage ../development/python-modules/pudb { };
+
+  pulp = callPackage ../development/python-modules/pulp { };
+
+  pulsectl = callPackage ../development/python-modules/pulsectl { };
+
+  pure-cdb = callPackage ../development/python-modules/pure-cdb { };
+
+  pure-eval = callPackage ../development/python-modules/pure-eval { };
+
+  pure-pcapy3 = callPackage ../development/python-modules/pure-pcapy3 { };
+
+  purepng = callPackage ../development/python-modules/purepng { };
+
+  pure-python-adb = callPackage ../development/python-modules/pure-python-adb { };
+
+  pure-python-adb-homeassistant = callPackage ../development/python-modules/pure-python-adb-homeassistant { };
+
+  puremagic = callPackage ../development/python-modules/puremagic { };
+
+  purl = callPackage ../development/python-modules/purl { };
+
+  push-receiver = callPackage ../development/python-modules/push-receiver { };
+
+  pushbullet = callPackage ../development/python-modules/pushbullet { };
+
+  pushover-complete = callPackage ../development/python-modules/pushover-complete { };
+
+  pvlib = callPackage ../development/python-modules/pvlib { };
+
+  pvo = callPackage ../development/python-modules/pvo { };
+
+  Pweave = callPackage ../development/python-modules/pweave { };
+
+  pwntools = callPackage ../development/python-modules/pwntools {
+    debugger = pkgs.gdb;
+  };
+
+  pxml = callPackage ../development/python-modules/pxml { };
+
+  py-air-control = callPackage ../development/python-modules/py-air-control { };
+
+  py-air-control-exporter = callPackage ../development/python-modules/py-air-control-exporter { };
+
+  py-dmidecode = callPackage ../development/python-modules/py-dmidecode { };
+
+  py-nightscout = callPackage ../development/python-modules/py-nightscout { };
+
+  py-synologydsm-api = callPackage ../development/python-modules/py-synologydsm-api { };
+
+  py-tes = callPackage ../development/python-modules/py-tes { };
+
+  py-ubjson = callPackage ../development/python-modules/py-ubjson { };
+
+  py-zabbix = callPackage ../development/python-modules/py-zabbix { };
+
+  py17track = callPackage ../development/python-modules/py17track { };
+
+  py2bit = callPackage ../development/python-modules/py2bit { };
+
+  py3buddy = toPythonModule (callPackage ../development/python-modules/py3buddy { });
+
+  py3exiv2 = callPackage ../development/python-modules/py3exiv2 { };
+
+  py3status = callPackage ../development/python-modules/py3status { };
+
+  py3to2 = callPackage ../development/python-modules/3to2 { };
+
+  py4j = callPackage ../development/python-modules/py4j { };
+
+  pyacoustid = callPackage ../development/python-modules/pyacoustid { };
+
+  pyads = callPackage ../development/python-modules/pyads { };
+
+  pyaes = callPackage ../development/python-modules/pyaes { };
+
+  pyaftership = callPackage ../development/python-modules/pyaftership { };
+
+  pyahocorasick = callPackage ../development/python-modules/pyahocorasick { };
+
+  pyairnow = callPackage ../development/python-modules/pyairnow { };
+
+  pyairvisual = callPackage ../development/python-modules/pyairvisual { };
+
+  pyalgotrade = callPackage ../development/python-modules/pyalgotrade { };
+
+  pyalmond = callPackage ../development/python-modules/pyalmond { };
+
+  pyamg = callPackage ../development/python-modules/pyamg { };
+
+  pyaml = callPackage ../development/python-modules/pyaml { };
+
+  pyannotate = callPackage ../development/python-modules/pyannotate { };
+
+  pyarlo = callPackage ../development/python-modules/pyarlo { };
+
+  pyarrow = callPackage ../development/python-modules/pyarrow {
+    inherit (pkgs) arrow-cpp cmake;
+  };
+
+  pyasn = callPackage ../development/python-modules/pyasn { };
+
+  pyasn1 = callPackage ../development/python-modules/pyasn1 { };
+
+  pyasn1-modules = callPackage ../development/python-modules/pyasn1-modules { };
+
+  pyathena = callPackage ../development/python-modules/pyathena { };
+
+  pyatmo = callPackage ../development/python-modules/pyatmo { };
+
+  pyatspi = callPackage ../development/python-modules/pyatspi { };
+
+  pyatv = callPackage ../development/python-modules/pyatv { };
+
+  pyaudio = callPackage ../development/python-modules/pyaudio { };
+
+  pyaussiebb = callPackage ../development/python-modules/pyaussiebb { };
+
+  pyautogui = callPackage ../development/python-modules/pyautogui { };
+
+  pyavm = callPackage ../development/python-modules/pyavm { };
+
+  pyaxmlparser = callPackage ../development/python-modules/pyaxmlparser { };
+
+  pybalboa = callPackage ../development/python-modules/pybalboa { };
+
+  pybase64 = callPackage ../development/python-modules/pybase64 { };
+
+  pybids = callPackage ../development/python-modules/pybids { };
+
+  pybigwig = callPackage ../development/python-modules/pybigwig { };
+
+  pybind11 = callPackage ../development/python-modules/pybind11 { };
+
+  pybindgen = callPackage ../development/python-modules/pybindgen { };
+
+  pyblackbird = callPackage ../development/python-modules/pyblackbird { };
+
+  pyblake2 = callPackage ../development/python-modules/pyblake2 { };
+
+  pyblock = callPackage ../development/python-modules/pyblock { };
+
+  pybluez = callPackage ../development/python-modules/pybluez { };
+
+  pybotvac = callPackage ../development/python-modules/pybotvac { };
+
+  pybrowserid = callPackage ../development/python-modules/pybrowserid { };
+
+  pybtex = callPackage ../development/python-modules/pybtex { };
+
+  pybtex-docutils = callPackage ../development/python-modules/pybtex-docutils { };
+
+  pybullet = callPackage ../development/python-modules/pybullet { };
+
+  pycairo = callPackage ../development/python-modules/pycairo {
+    inherit (pkgs.buildPackages) meson;
+  };
+
+  py = callPackage ../development/python-modules/py { };
+
+  pycangjie = callPackage ../development/python-modules/pycangjie { };
+
+  pycapnp = callPackage ../development/python-modules/pycapnp { };
+
+  pycaption = callPackage ../development/python-modules/pycaption { };
+
+  pycares = callPackage ../development/python-modules/pycares { };
+
+  pycarwings2 = callPackage ../development/python-modules/pycarwings2 { };
+
+  pycategories = callPackage ../development/python-modules/pycategories { };
+
+  pycdio = callPackage ../development/python-modules/pycdio { };
+
+  pycec = callPackage ../development/python-modules/pycec { };
+
+  pycep-parser = callPackage ../development/python-modules/pycep-parser { };
+
+  pycfdns = callPackage ../development/python-modules/pycfdns { };
+
+  pycflow2dot = callPackage ../development/python-modules/pycflow2dot {
+    inherit (pkgs) graphviz;
+  };
+
+  pycfmodel = callPackage ../development/python-modules/pycfmodel { };
+
+  pychannels = callPackage ../development/python-modules/pychannels { };
+
+  pychart = callPackage ../development/python-modules/pychart { };
+
+  pychef = callPackage ../development/python-modules/pychef { };
+
+  PyChromecast = callPackage ../development/python-modules/pychromecast { };
+
+  pyclimacell = callPackage ../development/python-modules/pyclimacell { };
+
+  pyclip = callPackage ../development/python-modules/pyclip { };
+
+  pyclipper = callPackage ../development/python-modules/pyclipper { };
+
+  pycm = callPackage ../development/python-modules/pycm { };
+
+  pycmarkgfm = callPackage ../development/python-modules/pycmarkgfm { };
+
+  pycocotools = callPackage ../development/python-modules/pycocotools { };
+
+  pycodestyle = callPackage ../development/python-modules/pycodestyle { };
+
+  pycognito = callPackage ../development/python-modules/pycognito { };
+
+  pycoin = callPackage ../development/python-modules/pycoin { };
+
+  pycollada = callPackage ../development/python-modules/pycollada { };
+
+  pycomfoconnect = callPackage ../development/python-modules/pycomfoconnect { };
+
+  pycontracts = callPackage ../development/python-modules/pycontracts { };
+
+  pycosat = callPackage ../development/python-modules/pycosat { };
+
+  pycountry = callPackage ../development/python-modules/pycountry { };
+
+  pycparser = callPackage ../development/python-modules/pycparser { };
+
+  py-canary = callPackage ../development/python-modules/py-canary { };
+
+  py-cid = callPackage ../development/python-modules/py-cid { };
+
+  py-cpuinfo = callPackage ../development/python-modules/py-cpuinfo { };
+
+  pycrc = callPackage ../development/python-modules/pycrc { };
+
+  pycritty = callPackage ../development/python-modules/pycritty { };
+
+  pycron = callPackage ../development/python-modules/pycron { };
+
+  pycrypto = callPackage ../development/python-modules/pycrypto { };
+
+  pycryptodome = callPackage ../development/python-modules/pycryptodome { };
+
+  pycryptodome-test-vectors = callPackage ../development/python-modules/pycryptodome-test-vectors { };
+
+  pycryptodomex = callPackage ../development/python-modules/pycryptodomex { };
+
+  pyct = callPackage ../development/python-modules/pyct { };
+
+  pyctr = callPackage ../development/python-modules/pyctr { };
+
+  pycuda = callPackage ../development/python-modules/pycuda {
+    cudatoolkit = pkgs.cudatoolkit;
+    inherit (pkgs.stdenv) mkDerivation;
+  };
+
+  pycups = callPackage ../development/python-modules/pycups { };
+
+  pycurl = callPackage ../development/python-modules/pycurl { };
+
+  pycxx = callPackage ../development/python-modules/pycxx { };
+
+  pydaikin = callPackage ../development/python-modules/pydaikin { };
+
+  pydal = callPackage ../development/python-modules/pydal { };
+
+  pydanfossair = callPackage ../development/python-modules/pydanfossair { };
+
+  pydantic = callPackage ../development/python-modules/pydantic { };
+
+  pydash = callPackage ../development/python-modules/pydash { };
+
+  pydbus = callPackage ../development/python-modules/pydbus { };
+
+  pydeck = callPackage ../development/python-modules/pydeck { };
+
+  pydeconz = callPackage ../development/python-modules/pydeconz { };
+
+  pydelijn = callPackage ../development/python-modules/pydelijn { };
+
+  pydenticon = callPackage ../development/python-modules/pydenticon { };
+
+  pydes = callPackage ../development/python-modules/pydes { };
+
+  py-desmume = callPackage ../development/python-modules/py-desmume { };
+
+  pydevccu = callPackage ../development/python-modules/pydevccu { };
+
+  pydexcom = callPackage ../development/python-modules/pydexcom { };
+
+  pydicom = callPackage ../development/python-modules/pydicom { };
+
+  pydispatcher = callPackage ../development/python-modules/pydispatcher { };
+
+  pydmd = callPackage ../development/python-modules/pydmd { };
+
+  pydns = callPackage ../development/python-modules/py3dns { };
+
+  pydocstyle = callPackage ../development/python-modules/pydocstyle { };
+
+  pydocumentdb = callPackage ../development/python-modules/pydocumentdb { };
+
+  pydoods = callPackage ../development/python-modules/pydoods { };
+
+  pydot = callPackage ../development/python-modules/pydot {
+    inherit (pkgs) graphviz;
+  };
+
+  pydrive = callPackage ../development/python-modules/pydrive { };
+
+  pydrive2 = callPackage ../development/python-modules/pydrive2 { };
+
+  pydroid-ipcam = callPackage ../development/python-modules/pydroid-ipcam  { };
+
+  pydsdl = callPackage ../development/python-modules/pydsdl { };
+
+  pydub = callPackage ../development/python-modules/pydub { };
+
+  pyduke-energy = callPackage ../development/python-modules/pyduke-energy { };
+
+  pydy = callPackage ../development/python-modules/pydy { };
+
+  pydyf = callPackage ../development/python-modules/pydyf { };
+
+  pyebus = callPackage ../development/python-modules/pyebus { };
+
+  pyechonest = callPackage ../development/python-modules/pyechonest { };
+
+  pyeclib = callPackage ../development/python-modules/pyeclib { };
+
+  pyeconet = callPackage ../development/python-modules/pyeconet { };
+
+  pyecowitt = callPackage ../development/python-modules/pyecowitt { };
+
+  pyedimax = callPackage ../development/python-modules/pyedimax { };
+
+  pyee = callPackage ../development/python-modules/pyee { };
+
+  pyefergy = callPackage ../development/python-modules/pyefergy { };
+
+  pyeight = callPackage ../development/python-modules/pyeight { };
+
+  pyelftools = callPackage ../development/python-modules/pyelftools { };
+
+  pyemby = callPackage ../development/python-modules/pyemby { };
+
+  pyemd = callPackage ../development/python-modules/pyemd { };
+
+  pyenchant = callPackage ../development/python-modules/pyenchant {
+    inherit (pkgs) enchant2;
+  };
+
+  pyenvisalink = callPackage ../development/python-modules/pyenvisalink { };
+
+  pyephember = callPackage ../development/python-modules/pyephember { };
+
+  pyepsg = callPackage ../development/python-modules/pyepsg { };
+
+  pyerfa = callPackage ../development/python-modules/pyerfa { };
+
+  pyevmasm = callPackage ../development/python-modules/pyevmasm { };
+
+  pyevilgenius = callPackage ../development/python-modules/pyevilgenius { };
+
+  pyexcel = callPackage ../development/python-modules/pyexcel { };
+
+  pyexcel-io = callPackage ../development/python-modules/pyexcel-io { };
+
+  pyexcel-ods = callPackage ../development/python-modules/pyexcel-ods { };
+
+  pyexcel-xls = callPackage ../development/python-modules/pyexcel-xls { };
+
+  pyext = callPackage ../development/python-modules/pyext { };
+
+  pyezviz = callPackage ../development/python-modules/pyezviz { };
+
+  pyface = callPackage ../development/python-modules/pyface { };
+
+  pyfaidx = callPackage ../development/python-modules/pyfaidx { };
+
+  pyfakefs = callPackage ../development/python-modules/pyfakefs { };
+
+  pyfakewebcam = callPackage ../development/python-modules/pyfakewebcam { };
+
+  pyfantom = callPackage ../development/python-modules/pyfantom { };
+
+  pyfcm = callPackage ../development/python-modules/pyfcm { };
+
+  pyfftw = callPackage ../development/python-modules/pyfftw { };
+
+  pyfido = callPackage ../development/python-modules/pyfido { };
+
+  pyfiglet = callPackage ../development/python-modules/pyfiglet { };
+
+  pyfnip = callPackage ../development/python-modules/pyfnip { };
+
+  pyflakes = callPackage ../development/python-modules/pyflakes { };
+
+  pyflic = callPackage ../development/python-modules/pyflic { };
+
+  pyflume = callPackage ../development/python-modules/pyflume { };
+
+  pyflunearyou = callPackage ../development/python-modules/pyflunearyou { };
+
+  pyfma = callPackage ../development/python-modules/pyfma { };
+
+  pyfribidi = callPackage ../development/python-modules/pyfribidi { };
+
+  pyfritzhome = callPackage ../development/python-modules/pyfritzhome { };
+
+  pyfronius = callPackage ../development/python-modules/pyfronius { };
+
+  pyftdi = callPackage ../development/python-modules/pyftdi { };
+
+  pyftgl = callPackage ../development/python-modules/pyftgl { };
+
+  pyftpdlib = callPackage ../development/python-modules/pyftpdlib { };
+
+  pyfttt = callPackage ../development/python-modules/pyfttt { };
+
+  pyfuse3 = callPackage ../development/python-modules/pyfuse3 { };
+
+  pyfxa = callPackage ../development/python-modules/pyfxa { };
+
+  pygal = callPackage ../development/python-modules/pygal { };
+
+  pygame = callPackage ../development/python-modules/pygame {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AppKit;
+  };
+
+  pygame_sdl2 = callPackage ../development/python-modules/pygame_sdl2 { };
+
+  pygame-gui = callPackage ../development/python-modules/pygame-gui { };
+
+  pygatt = callPackage ../development/python-modules/pygatt { };
+
+  pygbm = callPackage ../development/python-modules/pygbm { };
+
+  pygccxml = callPackage ../development/python-modules/pygccxml { };
+
+  pygdbmi = callPackage ../development/python-modules/pygdbmi { };
+
+  pygeoip = callPackage ../development/python-modules/pygeoip { };
+
+  pygeos = callPackage ../development/python-modules/pygeos { };
+
+  pygetwindow = callPackage ../development/python-modules/pygetwindow { };
+
+  pygit2 = callPackage ../development/python-modules/pygit2 {
+    libgit2 = pkgs.libgit2_1_3_0;
+  };
+
+  PyGithub = callPackage ../development/python-modules/pyGithub { };
+
+  pyglet = callPackage ../development/python-modules/pyglet { };
+
+  pygls = callPackage ../development/python-modules/pygls { };
+
+  pygmars = callPackage ../development/python-modules/pygmars { };
+
+  pygments-better-html = callPackage ../development/python-modules/pygments-better-html { };
+
+  pygments = callPackage ../development/python-modules/Pygments { };
+
+  pygments-markdown-lexer = callPackage ../development/python-modules/pygments-markdown-lexer { };
+
+  pygmo = callPackage ../development/python-modules/pygmo { };
+
+  pygmt = callPackage ../development/python-modules/pygmt { };
+
+  pygobject2 = callPackage ../development/python-modules/pygobject { };
+
+  pygobject3 = callPackage ../development/python-modules/pygobject/3.nix {
+    inherit (pkgs) meson;
+  };
+
+  pygogo = callPackage ../development/python-modules/pygogo { };
+
+  pygpgme = callPackage ../development/python-modules/pygpgme { };
+
+  pygraphviz = callPackage ../development/python-modules/pygraphviz {
+    inherit (pkgs) graphviz;
+  };
+
+  pygreat = callPackage ../development/python-modules/pygreat { };
+
+  pygrok = callPackage ../development/python-modules/pygrok { };
+
+  pygtfs = callPackage ../development/python-modules/pygtfs { };
+
+  pygtail = callPackage ../development/python-modules/pygtail { };
+
+  pygtkspellcheck = callPackage ../development/python-modules/pygtkspellcheck { };
+
+  pygtrie = callPackage ../development/python-modules/pygtrie { };
+
+  pyhamcrest = callPackage ../development/python-modules/pyhamcrest { };
+
+  pyhaversion = callPackage ../development/python-modules/pyhaversion { };
+
+  pyhcl = callPackage ../development/python-modules/pyhcl { };
+
+  pyhocon = callPackage ../development/python-modules/pyhocon { };
+
+  pyhomematic = callPackage ../development/python-modules/pyhomematic { };
+
+  pyhomepilot = callPackage ../development/python-modules/pyhomepilot { };
+
+  pyhomeworks = callPackage ../development/python-modules/pyhomeworks { };
+
+  pyhs100 = callPackage ../development/python-modules/pyhs100 { };
+
+  pyi2cflash = callPackage ../development/python-modules/pyi2cflash { };
+
+  pyialarm = callPackage ../development/python-modules/pyialarm { };
+
+  pyicloud = callPackage ../development/python-modules/pyicloud { };
+
+  PyICU = callPackage ../development/python-modules/pyicu { };
+
+  pyimpfuzzy = callPackage ../development/python-modules/pyimpfuzzy {
+    inherit (pkgs) ssdeep;
+  };
+
+  pyinotify = callPackage ../development/python-modules/pyinotify { };
+
+  pyinputevent = callPackage ../development/python-modules/pyinputevent { };
+
+  pyinsteon = callPackage ../development/python-modules/pyinsteon { };
+
+  pyintesishome = callPackage ../development/python-modules/pyintesishome { };
+
+  pyipma = callPackage ../development/python-modules/pyipma { };
+
+  pyipp = callPackage ../development/python-modules/pyipp { };
+
+  pyiqvia = callPackage ../development/python-modules/pyiqvia { };
+
+  pyjet = callPackage ../development/python-modules/pyjet { };
+
+  pyjks = callPackage ../development/python-modules/pyjks { };
+
+  pyjson5 = callPackage ../development/python-modules/pyjson5 { };
+
+  pyjwkest = callPackage ../development/python-modules/pyjwkest { };
+
+  pyjwt = callPackage ../development/python-modules/pyjwt { };
+
+  pykakasi = callPackage ../development/python-modules/pykakasi { };
+
+  pykdl = callPackage ../development/python-modules/pykdl { };
+
+  pykdtree = callPackage ../development/python-modules/pykdtree {
+    inherit (pkgs.llvmPackages) openmp;
+  };
+
+  pykeepass = callPackage ../development/python-modules/pykeepass { };
+
+  pykerberos = callPackage ../development/python-modules/pykerberos { };
+
+  pykeyatome = callPackage ../development/python-modules/pykeyatome { };
+
+  pykira = callPackage ../development/python-modules/pykira { };
+
+  pykka = callPackage ../development/python-modules/pykka { };
+
+  pykmtronic = callPackage ../development/python-modules/pykmtronic { };
+
+  pykodi = callPackage ../development/python-modules/pykodi { };
+
+  pykoplenti = callPackage ../development/python-modules/pykoplenti { };
+
+  pykulersky = callPackage ../development/python-modules/pykulersky { };
+
+  pykwalify = callPackage ../development/python-modules/pykwalify { };
+
+  pylacrosse = callPackage ../development/python-modules/pylacrosse { };
+
+  pylama = callPackage ../development/python-modules/pylama { };
+
+  pylast = callPackage ../development/python-modules/pylast { };
+
+  pylatexenc = callPackage ../development/python-modules/pylatexenc { };
+
+  pylaunches = callPackage ../development/python-modules/pylaunches { };
+
+  PyLD = callPackage ../development/python-modules/PyLD { };
+
+  pylev = callPackage ../development/python-modules/pylev { };
+
+  pylgnetcast = callPackage ../development/python-modules/pylgnetcast { };
+
+  pylibacl = callPackage ../development/python-modules/pylibacl { };
+
+  pylibconfig2 = callPackage ../development/python-modules/pylibconfig2 { };
+
+  pylibftdi = callPackage ../development/python-modules/pylibftdi {
+    inherit (pkgs) libusb1;
+  };
+
+  pyliblo = callPackage ../development/python-modules/pyliblo { };
+
+  pylibmc = callPackage ../development/python-modules/pylibmc { };
+
+  pylink-square = callPackage ../development/python-modules/pylink-square { };
+
+  pylint-celery = callPackage ../development/python-modules/pylint-celery { };
+
+  pylint-django = callPackage ../development/python-modules/pylint-django { };
+
+  pylint-flask = callPackage ../development/python-modules/pylint-flask { };
+
+  pylint = callPackage ../development/python-modules/pylint { };
+
+  pylint-plugin-utils = callPackage ../development/python-modules/pylint-plugin-utils { };
+
+  pylitterbot = callPackage ../development/python-modules/pylitterbot { };
+
+  py-lru-cache = callPackage ../development/python-modules/py-lru-cache { };
+
+  pylru = callPackage ../development/python-modules/pylru { };
+
+  pyls-black = callPackage ../development/python-modules/pyls-black { };
+
+  pyls-flake8 = callPackage ../development/python-modules/pyls-flake8 { };
+
+  pyls-isort = callPackage ../development/python-modules/pyls-isort { };
+
+  pyls-mypy = callPackage ../development/python-modules/pyls-mypy { };
+
+  pyls-spyder = callPackage ../development/python-modules/pyls-spyder { };
+
+  pylsp-mypy = callPackage ../development/python-modules/pylsp-mypy { };
+
+  PyLTI = callPackage ../development/python-modules/pylti { };
+
+  pylutron = callPackage ../development/python-modules/pylutron { };
+
+  pylutron-caseta = callPackage ../development/python-modules/pylutron-caseta { };
+
+  pylyrics = callPackage ../development/python-modules/pylyrics { };
+
+  pylxd = callPackage ../development/python-modules/pylxd { };
+
+  pylzma = callPackage ../development/python-modules/pylzma { };
+
+  pymacaroons = callPackage ../development/python-modules/pymacaroons { };
+
+  pymaging = callPackage ../development/python-modules/pymaging { };
+
+  pymaging_png = callPackage ../development/python-modules/pymaging_png { };
+
+  pymanopt = callPackage ../development/python-modules/pymanopt { };
+
+  pymarshal = callPackage ../development/python-modules/pymarshal { };
+
+  pymata-express = callPackage ../development/python-modules/pymata-express { };
+
+  pymatgen = callPackage ../development/python-modules/pymatgen { };
+
+  pymatgen-lammps = callPackage ../development/python-modules/pymatgen-lammps { };
+
+  pymaven-patch = callPackage ../development/python-modules/pymaven-patch { };
+
+  pymavlink = callPackage ../development/python-modules/pymavlink { };
+
+  pymazda = callPackage ../development/python-modules/pymazda { };
+
+  pymbolic = callPackage ../development/python-modules/pymbolic { };
+
+  pymc3 = callPackage ../development/python-modules/pymc3 { };
+
+  pymdstat = callPackage ../development/python-modules/pymdstat { };
+
+  pymdown-extensions = callPackage ../development/python-modules/pymdown-extensions { };
+
+  pymediainfo = callPackage ../development/python-modules/pymediainfo { };
+
+  pymediaroom = callPackage ../development/python-modules/pymediaroom { };
+
+  pymeeus = callPackage ../development/python-modules/pymeeus { };
+
+  pymelcloud = callPackage ../development/python-modules/pymelcloud { };
+
+  pymemcache = callPackage ../development/python-modules/pymemcache { };
+
+  pymemoize = callPackage ../development/python-modules/pymemoize { };
+
+  pyment = callPackage ../development/python-modules/pyment { };
+
+  pymetar = callPackage ../development/python-modules/pymetar { };
+
+  pymeteireann = callPackage ../development/python-modules/pymeteireann { };
+
+  pymeteoclimatic = callPackage ../development/python-modules/pymeteoclimatic { };
+
+  pymetno = callPackage ../development/python-modules/pymetno { };
+
+  pymitv = callPackage ../development/python-modules/pymitv { };
+
+  pymfy = callPackage ../development/python-modules/pymfy { };
+
+  pymodbus = callPackage ../development/python-modules/pymodbus { };
+
+  pymongo = callPackage ../development/python-modules/pymongo { };
+
+  pymorphy2 = callPackage ../development/python-modules/pymorphy2 { };
+
+  pymorphy2-dicts-ru = callPackage ../development/python-modules/pymorphy2/dicts-ru.nix { };
+
+  pympler = callPackage ../development/python-modules/pympler { };
+
+  pymsgbox = callPackage ../development/python-modules/pymsgbox { };
+
+  pymsteams = callPackage ../development/python-modules/pymsteams { };
+
+  py-multiaddr = callPackage ../development/python-modules/py-multiaddr { };
+
+  py-multibase = callPackage ../development/python-modules/py-multibase { };
+
+  py-multicodec = callPackage ../development/python-modules/py-multicodec { };
+
+  py-multihash = callPackage ../development/python-modules/py-multihash { };
+
+  pymumble = callPackage ../development/python-modules/pymumble { };
+
+  pymunk = callPackage ../development/python-modules/pymunk {
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  pymupdf = callPackage ../development/python-modules/pymupdf { };
+
+  PyMVGLive = callPackage ../development/python-modules/pymvglive { };
+
+  pymyq = callPackage ../development/python-modules/pymyq { };
+
+  pymysensors = callPackage ../development/python-modules/pymysensors { };
+
+  pymysql = callPackage ../development/python-modules/pymysql { };
+
+  pymysqlsa = callPackage ../development/python-modules/pymysqlsa { };
+
+  pymystem3 = callPackage ../development/python-modules/pymystem3 { };
+
+  pynac = callPackage ../development/python-modules/pynac { };
+
+  pynacl = callPackage ../development/python-modules/pynacl { };
+
+  pynamecheap = callPackage ../development/python-modules/pynamecheap { };
+
+  pynamodb = callPackage ../development/python-modules/pynamodb { };
+
+  pynanoleaf = callPackage ../development/python-modules/pynanoleaf { };
+
+  pync = callPackage ../development/python-modules/pync {
+    inherit (pkgs) coreutils which;
+  };
+
+  pynello = callPackage ../development/python-modules/pynello { };
+
+  pynest2d = callPackage ../development/python-modules/pynest2d { };
+
+  pynetbox = callPackage ../development/python-modules/pynetbox { };
+
+  pynetdicom = callPackage ../development/python-modules/pynetdicom { };
+
+  pynetgear = callPackage ../development/python-modules/pynetgear { };
+
+  pynina = callPackage ../development/python-modules/pynina { };
+
+  pynisher = callPackage ../development/python-modules/pynisher { };
+
+  pynmea2 = callPackage ../development/python-modules/pynmea2 { };
+
+  pynput = callPackage ../development/python-modules/pynput { };
+
+  pynrrd = callPackage ../development/python-modules/pynrrd { };
+
+  pynvim = callPackage ../development/python-modules/pynvim { };
+
+  pynvml = callPackage ../development/python-modules/pynvml { };
+
+  pynzb = callPackage ../development/python-modules/pynzb { };
+
+  pyobihai = callPackage ../development/python-modules/pyobihai { };
+
+  pyocr = callPackage ../development/python-modules/pyocr {
+    tesseract = pkgs.tesseract4;
+  };
+
+  pyoctoprintapi = callPackage ../development/python-modules/pyoctoprintapi { };
+
+  pyodbc = callPackage ../development/python-modules/pyodbc { };
+
+  pyogg = callPackage ../development/python-modules/pyogg { };
+
+  pyombi = callPackage ../development/python-modules/pyombi { };
+
+  pyomo = callPackage ../development/python-modules/pyomo { };
+
+  pyp = callPackage ../development/python-modules/pyp {
+    inherit (pkgs) jq;
+  };
+
+  phonemizer = callPackage ../development/python-modules/phonemizer { };
+
+  pyopencl = callPackage ../development/python-modules/pyopencl {
+    mesa_drivers = pkgs.mesa.drivers;
+  };
+
+  pyopengl = callPackage ../development/python-modules/pyopengl { };
+
+  pyopengl-accelerate = callPackage ../development/python-modules/pyopengl-accelerate { };
+
+  pyopenssl = callPackage ../development/python-modules/pyopenssl { };
+
+  pyopenuv = callPackage ../development/python-modules/pyopenuv { };
+
+  pyopnsense = callPackage ../development/python-modules/pyopnsense { };
+
+  pyosf = callPackage ../development/python-modules/pyosf { };
+
+  pyosmium = callPackage ../development/python-modules/pyosmium {
+    inherit (pkgs) lz4;
+  };
+
+  pyotgw = callPackage ../development/python-modules/pyotgw { };
+
+  pyotp = callPackage ../development/python-modules/pyotp { };
+
+  pyowm = callPackage ../development/python-modules/pyowm { };
+
+  pypamtest = pkgs.libpam-wrapper.override {
+    enablePython = true;
+    inherit python;
+  };
+
+  pypandoc = callPackage ../development/python-modules/pypandoc { };
+
+  pyparser = callPackage ../development/python-modules/pyparser { };
+
+  pyparsing = callPackage ../development/python-modules/pyparsing { };
+
+  pyparted = callPackage ../development/python-modules/pyparted { };
+
+  pypass = callPackage ../development/python-modules/pypass { };
+
+  pypblib = callPackage ../development/python-modules/pypblib { };
+
+  pypca = callPackage ../development/python-modules/pypca { };
+
+  pypcap = callPackage ../development/python-modules/pypcap { };
+
+  pypck = callPackage ../development/python-modules/pypck { };
+
+  pypdf2 = callPackage ../development/python-modules/pypdf2 { };
+
+  pypdf3 = callPackage ../development/python-modules/pypdf3 { };
+
+  pypeg2 = callPackage ../development/python-modules/pypeg2 { };
+
+  pyperclip = callPackage ../development/python-modules/pyperclip { };
+
+  pyperf = callPackage ../development/python-modules/pyperf { };
+
+  pyphen = callPackage ../development/python-modules/pyphen { };
+
+  pyphotonfile = callPackage ../development/python-modules/pyphotonfile { };
+
+  pypillowfight = callPackage ../development/python-modules/pypillowfight { };
+
+  pypinyin = callPackage ../development/python-modules/pypinyin { };
+
+  pypiserver = callPackage ../development/python-modules/pypiserver { };
+
+  pyplaato  = callPackage ../development/python-modules/pyplaato { };
+
+  pyplatec = callPackage ../development/python-modules/pyplatec { };
+
+  pyppeteer = callPackage ../development/python-modules/pyppeteer { };
+
+  pypresence = callPackage ../development/python-modules/pypresence { };
+
+  pyprind = callPackage ../development/python-modules/pyprind { };
+
+  pyprof2calltree = callPackage ../development/python-modules/pyprof2calltree { };
+
+  pyproj = callPackage ../development/python-modules/pyproj { };
+
+  pyprosegur = callPackage ../development/python-modules/pyprosegur { };
+
+  pyptlib = callPackage ../development/python-modules/pyptlib { };
+
+  pypubsub = callPackage ../development/python-modules/pypubsub { };
+
+  pypugjs = callPackage ../development/python-modules/pypugjs { };
+
+  pypykatz = callPackage ../development/python-modules/pypykatz { };
+
+  pypytools = callPackage ../development/python-modules/pypytools { };
+
+  pyqrcode = callPackage ../development/python-modules/pyqrcode { };
+
+  pyqt-builder = callPackage ../development/python-modules/pyqt-builder { };
+
+  pyqt4 = callPackage ../development/python-modules/pyqt/4.x.nix { };
+
+  pyqt5 = callPackage ../development/python-modules/pyqt/5.x.nix { };
+
+  pyqt5_sip = callPackage ../development/python-modules/pyqt/sip.nix { };
+
+  pyqt5_with_qtmultimedia = self.pyqt5.override {
+    withMultimedia = true;
+  };
+
+  /*
+    `pyqt5_with_qtwebkit` should not be used by python libraries in
+    pkgs/development/python-modules/*. Putting this attribute in
+    `propagatedBuildInputs` may cause collisions.
+  */
+  pyqt5_with_qtwebkit = self.pyqt5.override {
+    withWebKit = true;
+  };
+
+  pyqtgraph = callPackage ../development/python-modules/pyqtgraph { };
+
+  pyqtwebengine = pkgs.libsForQt5.callPackage ../development/python-modules/pyqtwebengine {
+    pythonPackages = self;
+  };
+
+  pyquery = callPackage ../development/python-modules/pyquery { };
+
+  pyquaternion = callPackage ../development/python-modules/pyquaternion { };
+
+  pyquil = callPackage ../development/python-modules/pyquil { };
+
+  pyqvrpro = callPackage ../development/python-modules/pyqvrpro { };
+
+  pyrabbit2 = callPackage ../development/python-modules/pyrabbit2 { };
+
+  pyrad = callPackage ../development/python-modules/pyrad { };
+
+  pyradios = callPackage ../development/python-modules/pyradios { };
+
+  py-radix = callPackage ../development/python-modules/py-radix { };
+
+  pyramid_beaker = callPackage ../development/python-modules/pyramid_beaker { };
+
+  pyramid = callPackage ../development/python-modules/pyramid { };
+
+  pyramid_chameleon = callPackage ../development/python-modules/pyramid_chameleon { };
+
+  pyramid_exclog = callPackage ../development/python-modules/pyramid_exclog { };
+
+  pyramid_hawkauth = callPackage ../development/python-modules/pyramid_hawkauth { };
+
+  pyramid_jinja2 = callPackage ../development/python-modules/pyramid_jinja2 { };
+
+  pyramid_mako = callPackage ../development/python-modules/pyramid_mako { };
+
+  pyramid_multiauth = callPackage ../development/python-modules/pyramid_multiauth { };
+
+  pyreadability = callPackage ../development/python-modules/pyreadability { };
+
+  pyrealsense2 = toPythonModule (pkgs.librealsense.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  pyrealsense2WithCuda = toPythonModule (pkgs.librealsenseWithCuda.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  pyrealsense2WithoutCuda = toPythonModule (pkgs.librealsenseWithoutCuda.override {
+    enablePython = true;
+    pythonPackages = self;
+  });
+
+  pyrect = callPackage ../development/python-modules/pyrect { };
+
+  pyregion = callPackage ../development/python-modules/pyregion { };
+
+  pyres = callPackage ../development/python-modules/pyres { };
+
+  pyrisco = callPackage ../development/python-modules/pyrisco { };
+
+  pyrituals = callPackage ../development/python-modules/pyrituals { };
+
+  pyRFC3339 = callPackage ../development/python-modules/pyrfc3339 { };
+
+  pyrmvtransport = callPackage ../development/python-modules/pyrmvtransport { };
+
+  Pyro4 = callPackage ../development/python-modules/pyro4 { };
+
+  Pyro5 = callPackage ../development/python-modules/pyro5 { };
+
+  pyroma = callPackage ../development/python-modules/pyroma { };
+
+  pyro-api = callPackage ../development/python-modules/pyro-api { };
+
+  pyro-ppl = callPackage ../development/python-modules/pyro-ppl { };
+
+  pyroute2 = callPackage ../development/python-modules/pyroute2 { };
+
+  pyroute2-core = callPackage ../development/python-modules/pyroute2-core { };
+
+  pyroute2-ethtool = callPackage ../development/python-modules/pyroute2-ethtool { };
+
+  pyroute2-ipdb = callPackage ../development/python-modules/pyroute2-ipdb { };
+
+  pyroute2-ipset = callPackage ../development/python-modules/pyroute2-ipset { };
+
+  pyroute2-ndb = callPackage ../development/python-modules/pyroute2-ndb { };
+
+  pyroute2-nftables = callPackage ../development/python-modules/pyroute2-nftables { };
+
+  pyroute2-nslink = callPackage ../development/python-modules/pyroute2-nslink { };
+
+  pyroute2-protocols = callPackage ../development/python-modules/pyroute2-protocols { };
+
+  pyrr = callPackage ../development/python-modules/pyrr { };
+
+  pyrsistent = callPackage ../development/python-modules/pyrsistent { };
+
+  PyRSS2Gen = callPackage ../development/python-modules/pyrss2gen { };
+
+  pyrtlsdr = callPackage ../development/python-modules/pyrtlsdr { };
+
+  pyruckus = callPackage ../development/python-modules/pyruckus { };
+
+  pysam = callPackage ../development/python-modules/pysam { };
+
+  pysaml2 = callPackage ../development/python-modules/pysaml2 {
+    inherit (pkgs) xmlsec;
+  };
+
+  pysatochip = callPackage ../development/python-modules/pysatochip { };
+
+  pysc2 = callPackage ../development/python-modules/pysc2 { };
+
+  pyscard = callPackage ../development/python-modules/pyscard {
+    inherit (pkgs.darwin.apple_sdk.frameworks) PCSC;
+  };
+
+  pyscf = callPackage ../development/python-modules/pyscf { };
+
+  pyschedule = callPackage ../development/python-modules/pyschedule { };
+
+  pyscreenshot = callPackage ../development/python-modules/pyscreenshot { };
+
+  pyscreeze = callPackage ../development/python-modules/pyscreeze { };
+
+  py_scrypt = callPackage ../development/python-modules/py_scrypt { };
+
+  pyscrypt = callPackage ../development/python-modules/pyscrypt { };
+
+  pyscss = callPackage ../development/python-modules/pyscss { };
+
+  pysdcp = callPackage ../development/python-modules/pysdcp { };
+
+  pysdl2 = callPackage ../development/python-modules/pysdl2 { };
+
+  pysearpc = toPythonModule (pkgs.libsearpc.override {
+    python3 = self.python;
+  });
+
+  pysecuritas = callPackage ../development/python-modules/pysecuritas { };
+
+  pysendfile = callPackage ../development/python-modules/pysendfile { };
+
+  pysensors = callPackage ../development/python-modules/pysensors { };
+
+  pyserial-asyncio = callPackage ../development/python-modules/pyserial-asyncio { };
+
+  pyserial = callPackage ../development/python-modules/pyserial { };
+
+  pysftp = callPackage ../development/python-modules/pysftp { };
+
+  pysha3 = callPackage ../development/python-modules/pysha3 { };
+
+  pyshp = callPackage ../development/python-modules/pyshp { };
+
+  pyside2-tools = toPythonModule (callPackage ../development/python-modules/pyside2-tools {
+    inherit (pkgs) cmake qt5;
+  });
+
+  pyside2 = toPythonModule (callPackage ../development/python-modules/pyside2 {
+    inherit (pkgs) cmake ninja qt5;
+  });
+
+  pyside = callPackage ../development/python-modules/pyside {
+    inherit (pkgs) mesa;
+  };
+
+  pysideShiboken = callPackage ../development/python-modules/pyside/shiboken.nix {
+    inherit (pkgs) libxml2 libxslt;
+  };
+
+  pysideTools = callPackage ../development/python-modules/pyside/tools.nix { };
+
+  pysigma = callPackage ../development/python-modules/pysigma { };
+
+  pysigma-backend-splunk = callPackage ../development/python-modules/pysigma-backend-splunk { };
+
+  pysigma-pipeline-crowdstrike = callPackage ../development/python-modules/pysigma-pipeline-crowdstrike { };
+
+  pysigma-pipeline-sysmon = callPackage ../development/python-modules/pysigma-pipeline-sysmon { };
+
+  pysignalclirestapi = callPackage ../development/python-modules/pysignalclirestapi { };
+
+  pysigset = callPackage ../development/python-modules/pysigset { };
+
+  pysimplegui = callPackage ../development/python-modules/pysimplegui { };
+
+  pysingleton = callPackage ../development/python-modules/pysingleton { };
+
+  pyslurm = callPackage ../development/python-modules/pyslurm {
+    inherit (pkgs) slurm;
+  };
+
+  pysma = callPackage ../development/python-modules/pysma { };
+
+  pysmappee = callPackage ../development/python-modules/pysmappee { };
+
+  pysmart = callPackage ../development/python-modules/pysmart { };
+
+  pysmartapp = callPackage ../development/python-modules/pysmartapp { };
+
+  pysmartthings = callPackage ../development/python-modules/pysmartthings { };
+
+  pysmb = callPackage ../development/python-modules/pysmb { };
+
+  pysmbc = callPackage ../development/python-modules/pysmbc { };
+
+  pysmf = callPackage ../development/python-modules/pysmf { };
+
+  pysmi = callPackage ../development/python-modules/pysmi { };
+
+  pysml = callPackage ../development/python-modules/pysml { };
+
+  pysmt = callPackage ../development/python-modules/pysmt { };
+
+  pysnmp = callPackage ../development/python-modules/pysnmp { };
+
+  pysnooper = callPackage ../development/python-modules/pysnooper { };
+
+  pysnow = callPackage ../development/python-modules/pysnow { };
+
+  pysocks = callPackage ../development/python-modules/pysocks { };
+
+  pysolr = callPackage ../development/python-modules/pysolr { };
+
+  pysoma = callPackage ../development/python-modules/pysoma { };
+
+  py-sonic = callPackage ../development/python-modules/py-sonic { };
+
+  pysonos = callPackage ../development/python-modules/pysonos { };
+
+  pysoundfile = self.soundfile; # Alias added 23-06-2019
+
+  pyspark = callPackage ../development/python-modules/pyspark { };
+
+  pysparse = callPackage ../development/python-modules/pysparse { };
+
+  pyspcwebgw = callPackage ../development/python-modules/pyspcwebgw { };
+
+  pyspf = callPackage ../development/python-modules/pyspf { };
+
+  pyspice = callPackage ../development/python-modules/pyspice { };
+
+  pyspiflash = callPackage ../development/python-modules/pyspiflash { };
+
+  pyspinel = callPackage ../development/python-modules/pyspinel { };
+
+  pyspnego = callPackage ../development/python-modules/pyspnego { };
+
+  pyspotify = callPackage ../development/python-modules/pyspotify { };
+
+  pysptk = callPackage ../development/python-modules/pysptk { };
+
+  pysqlcipher3 = callPackage ../development/python-modules/pysqlcipher3 {
+    inherit (pkgs) sqlcipher;
+  };
+
+  pysqueezebox = callPackage ../development/python-modules/pysqueezebox { };
+
+  pysrim = callPackage ../development/python-modules/pysrim { };
+
+  pysrt = callPackage ../development/python-modules/pysrt { };
+
+  pyssim = callPackage ../development/python-modules/pyssim { };
+
+  pystache = callPackage ../development/python-modules/pystache { };
+
+  pystemd = callPackage ../development/python-modules/pystemd {
+    inherit (pkgs) systemd;
+  };
+
+  PyStemmer = callPackage ../development/python-modules/pystemmer { };
+
+  pystray = callPackage ../development/python-modules/pystray { };
+
+  py_stringmatching = callPackage ../development/python-modules/py_stringmatching { };
+
+  pysvg-py3 = callPackage ../development/python-modules/pysvg-py3 { };
+
+  pysvn = callPackage ../development/python-modules/pysvn {
+    inherit (pkgs) bash subversion apr aprutil expat neon openssl;
+  };
+
+  pyswitchbot = callPackage ../development/python-modules/pyswitchbot { };
+
+  pysychonaut = callPackage ../development/python-modules/pysychonaut { };
+
+  pysyncobj = callPackage ../development/python-modules/pysyncobj { };
+
+  pytabix = callPackage ../development/python-modules/pytabix { };
+
+  pytado = callPackage ../development/python-modules/pytado { };
+
+  pytaglib = callPackage ../development/python-modules/pytaglib { };
+
+  pytankerkoenig = callPackage ../development/python-modules/pytankerkoenig { };
+
+  pytap2 = callPackage ../development/python-modules/pytap2 { };
+
+  pytautulli = callPackage ../development/python-modules/pytautulli { };
+
+  pyte = callPackage ../development/python-modules/pyte { };
+
+  pytenable = callPackage ../development/python-modules/pytenable { };
+
+  pytelegrambotapi = callPackage ../development/python-modules/pyTelegramBotAPI { };
+
+  pytesseract = callPackage ../development/python-modules/pytesseract { };
+
+  pytest = self.pytest_6;
+
+  pytest_6 =
+    callPackage ../development/python-modules/pytest {
+      # hypothesis tests require pytest that causes dependency cycle
+      hypothesis = self.hypothesis.override {
+        doCheck = false;
+      };
+    };
+
+  pytest_6_1 = self.pytest_6.overridePythonAttrs (oldAttrs: rec {
+    version = "6.1.2";
+    src = oldAttrs.src.override {
+      inherit version;
+      sha256 = "c0a7e94a8cdbc5422a51ccdad8e6f1024795939cc89159a0ae7f0b316ad3823e";
+    };
+
+    postPatch = ''
+      substituteInPlace setup.cfg \
+        --replace "pluggy>=0.12,<1.0" "pluggy>=0.12,<2.0"
+    '';
+  });
+
+  pytest-aio = callPackage ../development/python-modules/pytest-aio { };
+
+  pytest-aiohttp = callPackage ../development/python-modules/pytest-aiohttp { };
+
+  pytest-annotate = callPackage ../development/python-modules/pytest-annotate { };
+
+  pytest-ansible = callPackage ../development/python-modules/pytest-ansible { };
+
+  pytest-arraydiff = callPackage ../development/python-modules/pytest-arraydiff { };
+
+  pytest-astropy = callPackage ../development/python-modules/pytest-astropy { };
+
+  pytest-astropy-header = callPackage ../development/python-modules/pytest-astropy-header { };
+
+  pytest-asyncio = callPackage ../development/python-modules/pytest-asyncio { };
+
+  pytest-bdd = callPackage ../development/python-modules/pytest-bdd { };
+
+  pytest-benchmark = callPackage ../development/python-modules/pytest-benchmark { };
+
+  pytest-black = callPackage ../development/python-modules/pytest-black { };
+
+  pytest-cache = self.pytestcache; # added 2021-01-04
+  pytestcache = callPackage ../development/python-modules/pytestcache { };
+
+  pytest-cases = callPackage ../development/python-modules/pytest-cases{ };
+
+  pytest-catchlog = callPackage ../development/python-modules/pytest-catchlog { };
+
+  pytest-celery = callPackage ../development/python-modules/pytest-celery { };
+
+  pytest-check = callPackage ../development/python-modules/pytest-check { };
+
+  pytest-cid = callPackage ../development/python-modules/pytest-cid { };
+
+  pytest-click = callPackage ../development/python-modules/pytest-click { };
+
+  pytest-console-scripts = callPackage ../development/python-modules/pytest-console-scripts { };
+
+  pytest-cov = callPackage ../development/python-modules/pytest-cov { };
+
+  pytest-cram = callPackage ../development/python-modules/pytest-cram { };
+
+  pytest-datadir = callPackage ../development/python-modules/pytest-datadir { };
+
+  pytest-datafiles = callPackage ../development/python-modules/pytest-datafiles { };
+
+  pytest-dependency = callPackage ../development/python-modules/pytest-dependency { };
+
+  pytest-django = callPackage ../development/python-modules/pytest-django { };
+
+  pytest-doctestplus = callPackage ../development/python-modules/pytest-doctestplus { };
+
+  pytest-dotenv = callPackage ../development/python-modules/pytest-dotenv { };
+
+  pytest-env = callPackage ../development/python-modules/pytest-env { };
+
+  pytest-error-for-skips = callPackage ../development/python-modules/pytest-error-for-skips { };
+
+  pytest-expect = callPackage ../development/python-modules/pytest-expect { };
+
+  pytest-factoryboy = callPackage ../development/python-modules/pytest-factoryboy { };
+
+  pytest-filter-subpackage = callPackage ../development/python-modules/pytest-filter-subpackage { };
+
+  pytest-fixture-config = callPackage ../development/python-modules/pytest-fixture-config { };
+
+  pytest-flake8 = callPackage ../development/python-modules/pytest-flake8 { };
+
+  pytest-flakes = callPackage ../development/python-modules/pytest-flakes { };
+
+  pytest-flask = callPackage ../development/python-modules/pytest-flask { };
+
+  pytest-forked = callPackage ../development/python-modules/pytest-forked { };
+
+  pytest-freezegun = callPackage ../development/python-modules/pytest-freezegun { };
+
+  pytest-helpers-namespace = callPackage ../development/python-modules/pytest-helpers-namespace { };
+
+  pytest-html = callPackage ../development/python-modules/pytest-html { };
+
+  pytest-httpbin = callPackage ../development/python-modules/pytest-httpbin { };
+
+  pytest-httpserver = callPackage ../development/python-modules/pytest-httpserver { };
+
+  pytest-httpx = callPackage ../development/python-modules/pytest-httpx { };
+
+  pytest-instafail = callPackage ../development/python-modules/pytest-instafail { };
+
+  pytest-isort = callPackage ../development/python-modules/pytest-isort { };
+
+  pytest-json-report = callPackage ../development/python-modules/pytest-json-report { };
+
+  pytest-lazy-fixture = callPackage ../development/python-modules/pytest-lazy-fixture { };
+
+  pytest-localserver = callPackage ../development/python-modules/pytest-localserver { };
+
+  pytest-logdog = callPackage ../development/python-modules/pytest-logdog{ };
+
+  pytest-metadata = callPackage ../development/python-modules/pytest-metadata { };
+
+  pytest-mock = callPackage ../development/python-modules/pytest-mock { };
+
+  pytest-mockservers = callPackage ../development/python-modules/pytest-mockservers { };
+
+  pytest-mpl = callPackage ../development/python-modules/pytest-mpl { };
+
+  pytest-mypy = callPackage ../development/python-modules/pytest-mypy { };
+
+  pytest-mypy-plugins = callPackage ../development/python-modules/pytest-mypy-plugins { };
+
+  pytest-openfiles = callPackage ../development/python-modules/pytest-openfiles { };
+
+  pytest-order = callPackage ../development/python-modules/pytest-order { };
+
+  pytest-ordering = callPackage ../development/python-modules/pytest-ordering { };
+
+  pytest-pep257 = callPackage ../development/python-modules/pytest-pep257 { };
+
+  pytest-pylint = callPackage ../development/python-modules/pytest-pylint { };
+
+  pytest-pythonpath = callPackage ../development/python-modules/pytest-pythonpath { };
+
+  pytest-qt = callPackage ../development/python-modules/pytest-qt { };
+
+  pytest-quickcheck = callPackage ../development/python-modules/pytest-quickcheck { };
+
+  pytest-raises = callPackage ../development/python-modules/pytest-raises { };
+
+  pytest-raisesregexp = callPackage ../development/python-modules/pytest-raisesregexp { };
+
+  pytest-raisin = callPackage ../development/python-modules/pytest-raisin { };
+
+  pytest-randomly = callPackage ../development/python-modules/pytest-randomly { };
+
+  pytest-random-order = callPackage ../development/python-modules/pytest-random-order { };
+
+  pytest-regressions = callPackage ../development/python-modules/pytest-regressions { };
+
+  pytest-relaxed = callPackage ../development/python-modules/pytest-relaxed { };
+
+  pytest-remotedata = callPackage ../development/python-modules/pytest-remotedata { };
+
+  pytest-repeat = callPackage ../development/python-modules/pytest-repeat { };
+
+  pytest-rerunfailures = callPackage ../development/python-modules/pytest-rerunfailures { };
+
+  pytest-resource-path = callPackage ../development/python-modules/pytest-resource-path { };
+
+  pytest-runner = callPackage ../development/python-modules/pytest-runner { };
+
+  pytest-sanic = callPackage ../development/python-modules/pytest-sanic {
+    sanic = self.sanic.override { doCheck = false; };
+  };
+
+  pytest-server-fixtures = callPackage ../development/python-modules/pytest-server-fixtures { };
+
+  pytest-services = callPackage ../development/python-modules/pytest-services { };
+
+  pytest-snapshot = callPackage ../development/python-modules/pytest-snapshot { };
+
+  pytest-shutil = callPackage ../development/python-modules/pytest-shutil { };
+
+  python-status = callPackage ../development/python-modules/python-status { };
+
+  python-string-utils = callPackage ../development/python-modules/python-string-utils { };
+
+  pytest-socket = callPackage ../development/python-modules/pytest-socket { };
+
+  pytest-subprocess = callPackage ../development/python-modules/pytest-subprocess { };
+
+  pytest-subtesthack = callPackage ../development/python-modules/pytest-subtesthack { };
+
+  pytest-subtests = callPackage ../development/python-modules/pytest-subtests { };
+
+  pytest-sugar = callPackage ../development/python-modules/pytest-sugar { };
+
+  pytest-testmon = callPackage ../development/python-modules/pytest-testmon { };
+
+  pytest-timeout = callPackage ../development/python-modules/pytest-timeout { };
+
+  pytest-tornado = callPackage ../development/python-modules/pytest-tornado { };
+
+  pytest-tornasync = callPackage ../development/python-modules/pytest-tornasync { };
+
+  pytest-trio = callPackage ../development/python-modules/pytest-trio { };
+
+  pytest-twisted = callPackage ../development/python-modules/pytest-twisted { };
+
+  pytest-vcr = callPackage ../development/python-modules/pytest-vcr { };
+
+  pytest-virtualenv = callPackage ../development/python-modules/pytest-virtualenv { };
+
+  pytest-warnings = callPackage ../development/python-modules/pytest-warnings { };
+
+  pytest-watch = callPackage ../development/python-modules/pytest-watch { };
+
+  pytest-xdist = callPackage ../development/python-modules/pytest-xdist { };
+
+  pytest-xprocess = callPackage ../development/python-modules/pytest-xprocess { };
+
+  pytest-xvfb = callPackage ../development/python-modules/pytest-xvfb { };
+
+  python3-application = callPackage ../development/python-modules/python3-application { };
+
+  python3-eventlib = callPackage ../development/python-modules/python3-eventlib { };
+
+  python3-gnutls = callPackage ../development/python-modules/python3-gnutls { };
+
+  python3-openid = callPackage ../development/python-modules/python3-openid { };
+
+  python-awair = callPackage ../development/python-modules/python-awair { };
+
+  python3-saml = callPackage ../development/python-modules/python3-saml { };
+
+  python-axolotl = callPackage ../development/python-modules/python-axolotl { };
+
+  python-axolotl-curve25519 = callPackage ../development/python-modules/python-axolotl-curve25519 { };
+
+  python-baseconv = callPackage ../development/python-modules/python-baseconv { };
+
+  python-benedict = callPackage ../development/python-modules/python-benedict { };
+
+  python-bidi = callPackage ../development/python-modules/python-bidi { };
+
+  python-binance = callPackage ../development/python-modules/python-binance { };
+
+  python-box = callPackage ../development/python-modules/python-box { };
+
+  python-cinderclient = callPackage ../development/python-modules/python-cinderclient { };
+
+  python-constraint = callPackage ../development/python-modules/python-constraint { };
+
+  python-crontab = callPackage ../development/python-modules/python-crontab { };
+
+  python-ctags3 = callPackage ../development/python-modules/python-ctags3 { };
+
+  python-daemon = callPackage ../development/python-modules/python-daemon { };
+
+  python-datemath = callPackage ../development/python-modules/python-datemath { };
+
+  python-dateutil = callPackage ../development/python-modules/dateutil { };
+
+  python-dbusmock = callPackage ../development/python-modules/python-dbusmock { };
+
+  pythondialog = callPackage ../development/python-modules/pythondialog { };
+
+  python-didl-lite = callPackage ../development/python-modules/python-didl-lite { };
+
+  python-docx = callPackage ../development/python-modules/python-docx { };
+
+  python-doi = callPackage ../development/python-modules/python-doi { };
+
+  python-dotenv = callPackage ../development/python-modules/python-dotenv { };
+
+  python-editor = callPackage ../development/python-modules/python-editor { };
+
+  python-fsutil = callPackage ../development/python-modules/python-fsutil { };
+
+  pythonefl = callPackage ../development/python-modules/python-efl { };
+
+  pythonegardia = callPackage ../development/python-modules/pythonegardia { };
+
+  python-engineio = callPackage ../development/python-modules/python-engineio { };
+
+  python-etcd = callPackage ../development/python-modules/python-etcd { };
+
+  python-ethtool = callPackage ../development/python-modules/python-ethtool { };
+
+  python_fedora = callPackage ../development/python-modules/python_fedora { };
+
+  python-fontconfig = callPackage ../development/python-modules/python-fontconfig { };
+
+  python-forecastio = callPackage ../development/python-modules/python-forecastio { };
+
+  python-frontmatter = callPackage ../development/python-modules/python-frontmatter { };
+
+  python-gammu = callPackage ../development/python-modules/python-gammu { };
+
+  python-gitlab = callPackage ../development/python-modules/python-gitlab { };
+
+  python-gnupg = callPackage ../development/python-modules/python-gnupg { };
+
+  python-gvm = callPackage ../development/python-modules/python-gvm { };
+
+  python-hglib = callPackage ../development/python-modules/python-hglib { };
+
+  python-hosts = callPackage ../development/python-modules/python-hosts { };
+
+  python-hpilo = callPackage ../development/python-modules/python-hpilo { };
+
+  python-http-client = callPackage ../development/python-modules/python-http-client { };
+
+  python-i18n = callPackage ../development/python-modules/python-i18n { };
+
+  pythonix = callPackage ../development/python-modules/pythonix {
+    nix = pkgs.nixVersions.nix_2_3;
+    meson = pkgs.meson.override { python3 = self.python; };
+  };
+
+  python-jenkins = callPackage ../development/python-modules/python-jenkins { };
+
+  python-jose = callPackage ../development/python-modules/python-jose { };
+
+  python-json-logger = callPackage ../development/python-modules/python-json-logger { };
+
+  python-jsonrpc-server = callPackage ../development/python-modules/python-jsonrpc-server { };
+
+  python_keyczar = callPackage ../development/python-modules/python_keyczar { };
+
+  python-language-server = callPackage ../development/python-modules/python-language-server { };
+
+  python-ldap-test = callPackage ../development/python-modules/python-ldap-test { };
+
+  python-Levenshtein = callPackage ../development/python-modules/python-levenshtein { };
+
+  python-linux-procfs = callPackage ../development/python-modules/python-linux-procfs { };
+
+  python-logstash = callPackage ../development/python-modules/python-logstash { };
+
+  python-louvain = callPackage ../development/python-modules/python-louvain { };
+
+  python-lsp-jsonrpc = callPackage ../development/python-modules/python-lsp-jsonrpc { };
+
+  python-lsp-server = callPackage ../development/python-modules/python-lsp-server { };
+
+  python-ly = callPackage ../development/python-modules/python-ly { };
+
+  python-lzf = callPackage ../development/python-modules/python-lzf { };
+
+  python-lzo = callPackage ../development/python-modules/python-lzo {
+    inherit (pkgs) lzo;
+  };
+
+  python_magic = callPackage ../development/python-modules/python-magic { };
+
+  python-manilaclient = callPackage ../development/python-modules/python-manilaclient { };
+
+  python-mapnik = let
+    boost = pkgs.boost175.override {
+      enablePython = true;
+      inherit python;
+    };
+  in callPackage ../development/python-modules/python-mapnik {
+    inherit (pkgs) pkg-config cairo harfbuzz icu libjpeg libpng libtiff libwebp proj zlib;
+    inherit boost;
+    mapnik = pkgs.mapnik.override {
+      inherit python boost;
+    };
+  };
+
+  python-markdown-math = callPackage ../development/python-modules/python-markdown-math { };
+
+  python-miio = callPackage ../development/python-modules/python-miio { };
+
+  python-mimeparse = callPackage ../development/python-modules/python-mimeparse { };
+
+  python-mnist = callPackage ../development/python-modules/python-mnist { };
+
+  python-mpv-jsonipc = callPackage ../development/python-modules/python-mpv-jsonipc { };
+
+  python-multipart = callPackage ../development/python-modules/python-multipart { };
+
+  python-mystrom = callPackage ../development/python-modules/python-mystrom { };
+
+  python-nest = callPackage ../development/python-modules/python-nest { };
+
+  pythonnet = callPackage
+    ../development/python-modules/pythonnet {
+      # Using `mono > 5`, tests are failing..
+      mono = pkgs.mono5;
+    };
+
+  python-nmap = callPackage ../development/python-modules/python-nmap { };
+
+  python-nomad = callPackage ../development/python-modules/python-nomad { };
+
+  python-novaclient = callPackage ../development/python-modules/python-novaclient { };
+
+  python-oauth2 = callPackage ../development/python-modules/python-oauth2 { };
+
+  pythonocc-core = toPythonModule (callPackage ../development/python-modules/pythonocc-core {
+    inherit (pkgs) fontconfig rapidjson;
+    inherit (pkgs.xorg) libX11 libXi libXmu libXext;
+    inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa;
+  });
+
+  python-olm = callPackage ../development/python-modules/python-olm { };
+
+  python-opendata-transport = callPackage ../development/python-modules/python-opendata-transport { };
+
+  python-openstackclient = callPackage ../development/python-modules/python-openstackclient { };
+
+  python_openzwave = callPackage ../development/python-modules/python_openzwave { };
+
+  python-osc = callPackage ../development/python-modules/python-osc { };
+
+  python-packer = callPackage ../development/python-modules/python-packer { };
+
+  python-pam = callPackage ../development/python-modules/python-pam {
+    inherit (pkgs) pam;
+  };
+
+  python-periphery = callPackage ../development/python-modules/python-periphery { };
+
+  python-picnic-api = callPackage ../development/python-modules/python-picnic-api { };
+
+  python-pidfile = callPackage ../development/python-modules/python-pidfile { };
+
+  python-pipedrive = callPackage ../development/python-modules/python-pipedrive { };
+
+  python-pkcs11 = callPackage ../development/python-modules/python-pkcs11 { };
+
+  python-prctl = callPackage ../development/python-modules/python-prctl { };
+
+  python-ptrace = callPackage ../development/python-modules/python-ptrace { };
+
+  python-pushover = callPackage ../development/python-modules/pushover { };
+
+  python-rapidjson = callPackage ../development/python-modules/python-rapidjson { };
+
+  python-redis-lock = callPackage ../development/python-modules/python-redis-lock { };
+
+  python-registry = callPackage ../development/python-modules/python-registry { };
+
+  python-rtmidi = callPackage ../development/python-modules/python-rtmidi {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreAudio CoreMIDI CoreServices;
+  };
+
+  python-sat = callPackage ../development/python-modules/python-sat { };
+
+  python-simple-hipchat = callPackage ../development/python-modules/python-simple-hipchat { };
+
+  python-slugify = callPackage ../development/python-modules/python-slugify { };
+
+  python-smarttub = callPackage ../development/python-modules/python-smarttub { };
+
+  python-snap7 = callPackage ../development/python-modules/python-snap7 {
+    inherit (pkgs) snap7;
+  };
+
+  python-snappy = callPackage ../development/python-modules/python-snappy {
+    inherit (pkgs) snappy;
+  };
+
+  python-socketio = callPackage ../development/python-modules/python-socketio { };
+
+  python-socks = callPackage ../development/python-modules/python-socks { };
+
+  python-sql = callPackage ../development/python-modules/python-sql { };
+
+  python-stdnum = callPackage ../development/python-modules/python-stdnum { };
+
+  python-telegram-bot = callPackage ../development/python-modules/python-telegram-bot { };
+
+  python-toolbox = callPackage ../development/python-modules/python-toolbox { };
+
+  python-trovo = callPackage ../development/python-modules/python-trovo { };
+
+  python-twitch-client = callPackage ../development/python-modules/python-twitch-client { };
+
+  python-twitter = callPackage ../development/python-modules/python-twitter { };
+
+  python-u2flib-host = callPackage ../development/python-modules/python-u2flib-host { };
+
+  python-uinput = callPackage ../development/python-modules/python-uinput { };
+
+  python-unshare = callPackage ../development/python-modules/python-unshare { };
+
+  python-utils = callPackage ../development/python-modules/python-utils { };
+
+  python-vagrant = callPackage ../development/python-modules/python-vagrant { };
+
+  python-velbus = callPackage ../development/python-modules/python-velbus { };
+
+  python-vipaccess = callPackage ../development/python-modules/python-vipaccess { };
+
+  python-vlc = callPackage ../development/python-modules/python-vlc { };
+
+  python-whois = callPackage ../development/python-modules/python-whois { };
+
+  python-wifi = callPackage ../development/python-modules/python-wifi { };
+
+  python-wink = callPackage ../development/python-modules/python-wink { };
+
+  python-xmp-toolkit = callPackage ../development/python-modules/python-xmp-toolkit { };
+
+  python-zbar = callPackage ../development/python-modules/python-zbar { };
+
+  pythran = callPackage ../development/python-modules/pythran {
+    inherit (pkgs.llvmPackages) openmp;
+  };
+
+  pyeapi = callPackage ../development/python-modules/pyeapi { };
+
+  pyeverlights = callPackage ../development/python-modules/pyeverlights { };
+
+  pytibber = callPackage ../development/python-modules/pytibber { };
+
+  pytile = callPackage ../development/python-modules/pytile { };
+
+  pytimeparse = callPackage ../development/python-modules/pytimeparse { };
+
+  pytm = callPackage ../development/python-modules/pytm { };
+
+  pytmx = callPackage ../development/python-modules/pytmx { };
+
+  pytoml = callPackage ../development/python-modules/pytoml { };
+
+  pytomlpp = callPackage ../development/python-modules/pytomlpp { };
+
+  pytools = callPackage ../development/python-modules/pytools { };
+
+  pytorch = callPackage ../development/python-modules/pytorch {
+    cudaSupport = pkgs.config.cudaSupport or false;
+  };
+
+  pytorch-bin = callPackage ../development/python-modules/pytorch/bin.nix { };
+
+  pytorch-lightning = callPackage ../development/python-modules/pytorch-lightning { };
+
+  pytorch-metric-learning = callPackage ../development/python-modules/pytorch-metric-learning { };
+
+  pytorch-pfn-extras = callPackage ../development/python-modules/pytorch-pfn-extras { };
+
+  pytorchWithCuda = self.pytorch.override {
+    cudaSupport = true;
+  };
+
+  pytorchWithoutCuda = self.pytorch.override {
+    cudaSupport = false;
+  };
+
+  pytraccar = callPackage ../development/python-modules/pytraccar { };
+
+  pytradfri = callPackage ../development/python-modules/pytradfri { };
+
+  pytrafikverket = callPackage ../development/python-modules/pytrafikverket { };
+
+  pytransportnsw = callPackage ../development/python-modules/pytransportnsw { };
+
+  pytransportnswv2 = callPackage ../development/python-modules/pytransportnswv2 { };
+
+  pytrends = callPackage ../development/python-modules/pytrends { };
+
+  pytricia = callPackage ../development/python-modules/pytricia { };
+
+  pytube = callPackage ../development/python-modules/pytube { };
+
+  pytun = callPackage ../development/python-modules/pytun { };
+
+  pyturbojpeg = callPackage ../development/python-modules/pyturbojpeg { };
+
+  pytweening = callPackage ../development/python-modules/pytweening { };
+
+  pytz = callPackage ../development/python-modules/pytz { };
+
+  pytz-deprecation-shim = callPackage ../development/python-modules/pytz-deprecation-shim { };
+
+  pytzdata = callPackage ../development/python-modules/pytzdata { };
+
+  pyu2f = callPackage ../development/python-modules/pyu2f { };
+
+  pyuavcan = callPackage
+    ../development/python-modules/pyuavcan { # this version pinpoint to anold version is necessary due to a regression
+      nunavut = self.nunavut.overridePythonAttrs (old: rec {
+        version = "0.2.3";
+        src = old.src.override {
+          inherit version;
+          sha256 = "0x8a9h4mc2r2yz49s9arsbs4bn3h25mvmg4zbgksm9hcyi9536x5";
+        };
+      });
+    };
+
+  pyudev = callPackage ../development/python-modules/pyudev {
+    inherit (pkgs) systemd;
+  };
+
+  pyunbound = callPackage ../tools/networking/unbound/python.nix { };
+
+  pyunifi = callPackage ../development/python-modules/pyunifi { };
+
+  pyupdate = callPackage ../development/python-modules/pyupdate { };
+
+  pyupgrade = callPackage ../development/python-modules/pyupgrade { };
+
+  pyuptimerobot = callPackage ../development/python-modules/pyuptimerobot { };
+
+  pyusb = callPackage ../development/python-modules/pyusb {
+    inherit (pkgs) libusb1;
+  };
+
+  pyuseragents = callPackage ../development/python-modules/pyuseragents { };
+
+  pyutilib = callPackage ../development/python-modules/pyutilib { };
+
+  pyuv = callPackage ../development/python-modules/pyuv { };
+
+  py-vapid = callPackage ../development/python-modules/py-vapid { };
+
+  pyvcd = callPackage ../development/python-modules/pyvcd { };
+
+  pyvcf = callPackage ../development/python-modules/pyvcf { };
+
+  pyvera = callPackage ../development/python-modules/pyvera { };
+
+  pyverilog = callPackage ../development/python-modules/pyverilog { };
+
+  pyversasense = callPackage ../development/python-modules/pyversasense { };
+
+  pyvesync = callPackage ../development/python-modules/pyvesync { };
+
+  pyvex = callPackage ../development/python-modules/pyvex { };
+
+  pyvicare = callPackage ../development/python-modules/pyvicare { };
+
+  pyvis = callPackage ../development/python-modules/pyvis { };
+
+  pyvisa = callPackage ../development/python-modules/pyvisa { };
+
+  pyvisa-py = callPackage ../development/python-modules/pyvisa-py { };
+
+  pyviz-comms = callPackage ../development/python-modules/pyviz-comms { };
+
+  pyvizio = callPackage ../development/python-modules/pyvizio { };
+
+  pyvips = callPackage ../development/python-modules/pyvips {
+    inherit (pkgs) vips glib;
+  };
+
+  pyvlx = callPackage ../development/python-modules/pyvlx { };
+
+  pyvmomi = callPackage ../development/python-modules/pyvmomi { };
+
+  pyvolumio = callPackage ../development/python-modules/pyvolumio { };
+
+  pyvoro = callPackage ../development/python-modules/pyvoro { };
+
+  pywal = callPackage ../development/python-modules/pywal { };
+
+  pywatchman = callPackage ../development/python-modules/pywatchman { };
+
+  pywavelets = callPackage ../development/python-modules/pywavelets { };
+
+  pywayland = callPackage ../development/python-modules/pywayland { };
+
+  pywbem = callPackage ../development/python-modules/pywbem {
+    inherit (pkgs) libxml2;
+  };
+
+  pyweatherflowrest = callPackage ../development/python-modules/pyweatherflowrest { };
+
+  pywebpush = callPackage ../development/python-modules/pywebpush { };
+
+  pywebview = callPackage ../development/python-modules/pywebview { };
+
+  pywemo = callPackage ../development/python-modules/pywemo { };
+
+  pywick = callPackage ../development/python-modules/pywick { };
+
+  pywilight = callPackage ../development/python-modules/pywilight { };
+
+  pywinrm = callPackage ../development/python-modules/pywinrm { };
+
+  pywizlight = callPackage ../development/python-modules/pywizlight { };
+
+  pywlroots = callPackage ../development/python-modules/pywlroots { };
+
+  pyxattr = callPackage ../development/python-modules/pyxattr { };
+
+  pyworld = callPackage ../development/python-modules/pyworld { };
+
+  pyx = callPackage ../development/python-modules/pyx { };
+
+  pyxb = callPackage ../development/python-modules/pyxb { };
+
+  pyxbe = callPackage ../development/python-modules/pyxbe { };
+
+  pyxdg = callPackage ../development/python-modules/pyxdg { };
+
+  pyxeoma = callPackage ../development/python-modules/pyxeoma { };
+
+  pyxiaomigateway = callPackage ../development/python-modules/pyxiaomigateway { };
+
+  pyxl3 = callPackage ../development/python-modules/pyxl3 { };
+
+  pyxnat = callPackage ../development/python-modules/pyxnat { };
+
+  pyyaml = callPackage ../development/python-modules/pyyaml { };
+
+  pyyaml-env-tag = callPackage ../development/python-modules/pyyaml-env-tag { };
+
+  pyzerproc = callPackage ../development/python-modules/pyzerproc { };
+
+  pyzmq = callPackage ../development/python-modules/pyzmq { };
+
+  pyzufall = callPackage ../development/python-modules/pyzufall { };
+
+  qcelemental = callPackage ../development/python-modules/qcelemental { };
+
+  qcengine = callPackage ../development/python-modules/qcengine { };
+
+  qcs-api-client = callPackage ../development/python-modules/qcs-api-client { };
+
+  qdarkstyle = callPackage ../development/python-modules/qdarkstyle { };
+
+  qdldl = callPackage ../development/python-modules/qdldl { };
+
+  qds_sdk = callPackage ../development/python-modules/qds_sdk { };
+
+  qiling = callPackage ../development/python-modules/qiling { };
+
+  qimage2ndarray = callPackage ../development/python-modules/qimage2ndarray { };
+
+  qiskit = callPackage ../development/python-modules/qiskit { };
+
+  qiskit-aer = callPackage ../development/python-modules/qiskit-aer { };
+
+  qiskit-finance = callPackage ../development/python-modules/qiskit-finance { };
+
+  qiskit-ibmq-provider = callPackage ../development/python-modules/qiskit-ibmq-provider { };
+
+  qiskit-ignis = callPackage ../development/python-modules/qiskit-ignis { };
+
+  qiskit-machine-learning = callPackage ../development/python-modules/qiskit-machine-learning { };
+
+  qiskit-nature = callPackage ../development/python-modules/qiskit-nature { };
+
+  qiskit-optimization = callPackage ../development/python-modules/qiskit-optimization { };
+
+  qiskit-terra = callPackage ../development/python-modules/qiskit-terra { };
+
+  qnap-qsw = callPackage ../development/python-modules/qnap-qsw{ };
+
+  qrcode = callPackage ../development/python-modules/qrcode { };
+
+  qreactor = callPackage ../development/python-modules/qreactor { };
+
+  qscintilla-qt4 = callPackage ../development/python-modules/qscintilla-qt4 { };
+
+  qscintilla-qt5 = pkgs.libsForQt5.callPackage ../development/python-modules/qscintilla-qt5 {
+    pythonPackages = self;
+  };
+
+  qscintilla = self.qscintilla-qt5;
+
+  qt5reactor = callPackage ../development/python-modules/qt5reactor { };
+
+  qtawesome = callPackage ../development/python-modules/qtawesome { };
+
+  qtconsole = callPackage ../development/python-modules/qtconsole { };
+
+  qtpy = callPackage ../development/python-modules/qtpy { };
+
+  qualysclient = callPackage ../development/python-modules/qualysclient { };
+
+  quamash = callPackage ../development/python-modules/quamash { };
+
+  quandl = callPackage ../development/python-modules/quandl { };
+
+  # TODO: rename this
+  Quandl = callPackage ../development/python-modules/quandl { }; # alias for an older package which did not support Python 3
+
+  quantities = callPackage ../development/python-modules/quantities { };
+
+  quantum-gateway = callPackage ../development/python-modules/quantum-gateway { };
+
+  querystring_parser = callPackage ../development/python-modules/querystring-parser { };
+
+  questionary = callPackage ../development/python-modules/questionary { };
+
+  queuelib = callPackage ../development/python-modules/queuelib { };
+
+  qutip = callPackage ../development/python-modules/qutip { };
+
+  qmk-dotty-dict = callPackage ../development/python-modules/qmk-dotty-dict { };
+
+  r2pipe = callPackage ../development/python-modules/r2pipe { };
+
+  rabbitpy = callPackage ../development/python-modules/rabbitpy { };
+
+  rachiopy = callPackage ../development/python-modules/rachiopy { };
+
+  radicale_infcloud = callPackage ../development/python-modules/radicale_infcloud { };
+
+  radio_beam = callPackage ../development/python-modules/radio_beam { };
+
+  radios = callPackage ../development/python-modules/radios { };
+
+  radiotherm = callPackage ../development/python-modules/radiotherm { };
+
+  radish-bdd = callPackage ../development/python-modules/radish-bdd { };
+
+  railroad-diagrams = callPackage ../development/python-modules/railroad-diagrams { };
+
+  rainbowstream = callPackage ../development/python-modules/rainbowstream { };
+
+  ramlfications = callPackage ../development/python-modules/ramlfications { };
+
+  random2 = callPackage ../development/python-modules/random2 { };
+
+  rangehttpserver = callPackage ../development/python-modules/rangehttpserver { };
+
+  rapidfuzz = callPackage ../development/python-modules/rapidfuzz { };
+
+  rarfile = callPackage ../development/python-modules/rarfile {
+    inherit (pkgs) libarchive;
+  };
+
+  rasterio = callPackage ../development/python-modules/rasterio { };
+
+  ratelim = callPackage ../development/python-modules/ratelim { };
+
+  ratelimit = callPackage ../development/python-modules/ratelimit { };
+
+  ratelimiter = callPackage ../development/python-modules/ratelimiter { };
+
+  raven = callPackage ../development/python-modules/raven { };
+
+  rawkit = callPackage ../development/python-modules/rawkit { };
+
+  rbtools = callPackage ../development/python-modules/rbtools { };
+
+  rcssmin = callPackage ../development/python-modules/rcssmin { };
+
+  rdflib = callPackage ../development/python-modules/rdflib { };
+
+  rdkit = callPackage ../development/python-modules/rdkit { };
+
+  re-assert = callPackage ../development/python-modules/re-assert { };
+
+  readability-lxml = callPackage ../development/python-modules/readability-lxml { };
+
+  readchar = callPackage ../development/python-modules/readchar { };
+
+  readlike = callPackage ../development/python-modules/readlike { };
+
+  readme = callPackage ../development/python-modules/readme { };
+
+  readme_renderer = callPackage ../development/python-modules/readme_renderer { };
+
+  readthedocs-sphinx-ext = callPackage ../development/python-modules/readthedocs-sphinx-ext { };
+
+  rebulk = callPackage ../development/python-modules/rebulk { };
+
+  recaptcha_client = callPackage ../development/python-modules/recaptcha_client { };
+
+  recoll = toPythonModule (pkgs.recoll.override {
+    python3Packages = self;
+  });
+
+  recommonmark = callPackage ../development/python-modules/recommonmark { };
+
+  redbaron = callPackage ../development/python-modules/redbaron { };
+
+  redis = callPackage ../development/python-modules/redis { };
+
+  rednose = callPackage ../development/python-modules/rednose { };
+
+  reedsolo = callPackage ../development/python-modules/reedsolo { };
+
+  reflink = callPackage ../development/python-modules/reflink { };
+
+  regenmaschine = callPackage ../development/python-modules/regenmaschine { };
+
+  regex = callPackage ../development/python-modules/regex { };
+
+  regional = callPackage ../development/python-modules/regional { };
+
+  reikna = callPackage ../development/python-modules/reikna { };
+
+  related = callPackage ../development/python-modules/related { };
+
+  relatorio = callPackage ../development/python-modules/relatorio { };
+
+  remarshal = callPackage ../development/python-modules/remarshal { };
+
+  renault-api = callPackage ../development/python-modules/renault-api { };
+
+  rencode = callPackage ../development/python-modules/rencode { };
+
+  reolink = callPackage ../development/python-modules/reolink { };
+
+  reparser = callPackage ../development/python-modules/reparser { };
+
+  repocheck = callPackage ../development/python-modules/repocheck { };
+
+  reportlab = callPackage ../development/python-modules/reportlab { };
+
+  repoze_lru = callPackage ../development/python-modules/repoze_lru { };
+
+  repoze_sphinx_autointerface = callPackage ../development/python-modules/repoze_sphinx_autointerface { };
+
+  repoze_who = callPackage ../development/python-modules/repoze_who { };
+
+  reproject = callPackage ../development/python-modules/reproject { };
+
+  requests-aws4auth = callPackage ../development/python-modules/requests-aws4auth { };
+
+  requests-cache = callPackage ../development/python-modules/requests-cache { };
+
+  requests-hawk = callPackage ../development/python-modules/requests-hawk { };
+
+  requests = callPackage ../development/python-modules/requests { };
+
+  requests_download = callPackage ../development/python-modules/requests_download { };
+
+  requestsexceptions = callPackage ../development/python-modules/requestsexceptions { };
+
+  requests-file = callPackage ../development/python-modules/requests-file { };
+
+  requests-futures = callPackage ../development/python-modules/requests-futures { };
+
+  requests-http-signature = callPackage ../development/python-modules/requests-http-signature { };
+
+  requests-kerberos = callPackage ../development/python-modules/requests-kerberos { };
+
+  requests-mock = callPackage ../development/python-modules/requests-mock { };
+
+  requests_ntlm = callPackage ../development/python-modules/requests_ntlm { };
+
+  requests_oauthlib = callPackage ../development/python-modules/requests-oauthlib { };
+
+  requests-pkcs12 = callPackage ../development/python-modules/requests-pkcs12 { };
+
+  requests-toolbelt = callPackage ../development/python-modules/requests-toolbelt { };
+
+  requests-unixsocket = callPackage ../development/python-modules/requests-unixsocket { };
+
+  requirements-detector = callPackage ../development/python-modules/requirements-detector { };
+
+  requirements-parser = callPackage ../development/python-modules/requirements-parser { };
+
+  resampy = callPackage ../development/python-modules/resampy { };
+
+  resolvelib = callPackage ../development/python-modules/resolvelib { };
+
+  responses = callPackage ../development/python-modules/responses { };
+
+  respx = callPackage ../development/python-modules/respx { };
+
+  restfly = callPackage ../development/python-modules/restfly { };
+
+  restrictedpython = callPackage ../development/python-modules/restrictedpython { };
+
+  restructuredtext_lint = callPackage ../development/python-modules/restructuredtext_lint { };
+
+  restview = callPackage ../development/python-modules/restview { };
+
+  rethinkdb = callPackage ../development/python-modules/rethinkdb { };
+
+  retry = callPackage ../development/python-modules/retry { };
+
+  retry_decorator = callPackage ../development/python-modules/retry_decorator { };
+
+  retrying = callPackage ../development/python-modules/retrying { };
+
+  retworkx = callPackage ../development/python-modules/retworkx { };
+
+  rfc3339 = callPackage ../development/python-modules/rfc3339 { };
+
+  rfc3339-validator = callPackage ../development/python-modules/rfc3339-validator { };
+
+  rfc3986 = callPackage ../development/python-modules/rfc3986 { };
+
+  rfc3987 = callPackage ../development/python-modules/rfc3987 { };
+
+  rfc6555 = callPackage ../development/python-modules/rfc6555 { };
+
+  rfc7464 = callPackage ../development/python-modules/rfc7464 { };
+
+  rfcat = callPackage ../development/python-modules/rfcat { };
+
+  rflink = callPackage ../development/python-modules/rflink { };
+
+  rich = callPackage ../development/python-modules/rich { };
+
+  rich-rst = callPackage ../development/python-modules/rich-rst { };
+
+  rig = callPackage ../development/python-modules/rig { };
+
+  ring-doorbell = callPackage ../development/python-modules/ring-doorbell { };
+
+  riprova = callPackage ../development/python-modules/riprova { };
+
+  ripser = callPackage ../development/python-modules/ripser { };
+
+  rising = callPackage ../development/python-modules/rising { };
+
+  ritassist = callPackage ../development/python-modules/ritassist { };
+
+  rivet = toPythonModule (pkgs.rivet.override {
+    python3 = python;
+  });
+
+  rjsmin = callPackage ../development/python-modules/rjsmin { };
+
+  rki-covid-parser = callPackage ../development/python-modules/rki-covid-parser { };
+
+  rl-coach = callPackage ../development/python-modules/rl-coach { };
+
+  rlp = callPackage ../development/python-modules/rlp { };
+
+  rnc2rng = callPackage ../development/python-modules/rnc2rng { };
+
+  rnginline = callPackage ../development/python-modules/rnginline { };
+
+  robomachine = callPackage ../development/python-modules/robomachine { };
+
+  robot-detection = callPackage ../development/python-modules/robot-detection { };
+
+  robotframework = callPackage ../development/python-modules/robotframework { };
+
+  robotframework-databaselibrary = callPackage ../development/python-modules/robotframework-databaselibrary { };
+
+  robotframework-requests = callPackage ../development/python-modules/robotframework-requests { };
+
+  robotframework-selenium2library = callPackage ../development/python-modules/robotframework-selenium2library { };
+
+  robotframework-seleniumlibrary = callPackage ../development/python-modules/robotframework-seleniumlibrary { };
+
+  robotframework-sshlibrary = callPackage ../development/python-modules/robotframework-sshlibrary { };
+
+  robotframework-tools = callPackage ../development/python-modules/robotframework-tools { };
+
+  robotstatuschecker = callPackage ../development/python-modules/robotstatuschecker { };
+
+  robotsuite = callPackage ../development/python-modules/robotsuite { };
+
+  rocket-errbot = callPackage ../development/python-modules/rocket-errbot { };
+
+  roku = callPackage ../development/python-modules/roku { };
+
+  rokuecp = callPackage ../development/python-modules/rokuecp { };
+
+  rollbar = callPackage ../development/python-modules/rollbar { };
+
+  roman = callPackage ../development/python-modules/roman { };
+
+  roombapy = callPackage ../development/python-modules/roombapy { };
+
+  roonapi = callPackage ../development/python-modules/roonapi { };
+
+  ronin = callPackage ../development/python-modules/ronin { };
+
+  rope = callPackage ../development/python-modules/rope { };
+
+  ropgadget = callPackage ../development/python-modules/ropgadget { };
+
+  ropper = callPackage ../development/python-modules/ropper { };
+
+  routes = callPackage ../development/python-modules/routes { };
+
+  rpcq = callPackage ../development/python-modules/rpcq { };
+
+  rpdb = callPackage ../development/python-modules/rpdb { };
+
+  rpi-bad-power = callPackage ../development/python-modules/rpi-bad-power { };
+
+  rply = callPackage ../development/python-modules/rply { };
+
+  rpm = toPythonModule (pkgs.rpm.override {
+    inherit python;
+  });
+
+  rpmfile = callPackage ../development/python-modules/rpmfile { };
+
+  rpmfluff = callPackage ../development/python-modules/rpmfluff { };
+
+  rpy2 = callPackage ../development/python-modules/rpy2 { };
+
+  rpyc = callPackage ../development/python-modules/rpyc { };
+
+  rq = callPackage ../development/python-modules/rq { };
+
+  rsa = callPackage ../development/python-modules/rsa { };
+
+  rst2ansi = callPackage ../development/python-modules/rst2ansi { };
+
+  rstcheck = callPackage ../development/python-modules/rstcheck { };
+
+  rtmidi-python = callPackage ../development/python-modules/rtmidi-python {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreAudio CoreMIDI CoreServices;
+  };
+
+  rtoml = callPackage ../development/python-modules/rtoml { };
+
+  Rtree = callPackage ../development/python-modules/Rtree {
+    inherit (pkgs) libspatialindex;
+  };
+
+  rtslib = callPackage ../development/python-modules/rtslib { };
+
+  rtsp-to-webrtc = callPackage ../development/python-modules/rtsp-to-webrtc { };
+
+  ruamel-base = callPackage ../development/python-modules/ruamel-base { };
+
+  ruamel-yaml = callPackage ../development/python-modules/ruamel-yaml { };
+
+  ruamel-yaml-clib = callPackage ../development/python-modules/ruamel-yaml-clib { };
+
+  rubymarshal = callPackage ../development/python-modules/rubymarshal { };
+
+  ruffus = callPackage ../development/python-modules/ruffus { };
+
+  runway-python = callPackage ../development/python-modules/runway-python { };
+
+  ruyaml = callPackage ../development/python-modules/ruyaml { };
+
+  rx = callPackage ../development/python-modules/rx { };
+
+  rxv = callPackage ../development/python-modules/rxv { };
+
+  rzpipe = callPackage ../development/python-modules/rzpipe { };
+
+  s2clientprotocol = callPackage ../development/python-modules/s2clientprotocol { };
+
+  s3fs = callPackage ../development/python-modules/s3fs { };
+
+  s3transfer = callPackage ../development/python-modules/s3transfer { };
+
+  sabyenc3 = callPackage ../development/python-modules/sabyenc3 { };
+
+  sabyenc = callPackage ../development/python-modules/sabyenc { };
+
+  sacn = callPackage ../development/python-modules/sacn { };
+
+  sacremoses = callPackage ../development/python-modules/sacremoses { };
+
+  safe = callPackage ../development/python-modules/safe { };
+
+  safety = callPackage ../development/python-modules/safety { };
+
+  sagemaker = callPackage ../development/python-modules/sagemaker { };
+
+  salmon-mail = callPackage ../development/python-modules/salmon-mail { };
+
+  sane = callPackage ../development/python-modules/sane {
+    inherit (pkgs) sane-backends;
+  };
+
+  saneyaml = callPackage ../development/python-modules/saneyaml { };
+
+  sampledata = callPackage ../development/python-modules/sampledata { };
+
+  samplerate = callPackage ../development/python-modules/samplerate { };
+
+  samsungctl = callPackage ../development/python-modules/samsungctl { };
+
+  samsungtvws = callPackage ../development/python-modules/samsungtvws { };
+
+  sanic = callPackage ../development/python-modules/sanic {
+    # Don't pass any `sanic` to avoid dependency loops.  `sanic-testing`
+    # has special logic to disable tests when this is the case.
+    sanic-testing = self.sanic-testing.override { sanic = null; };
+  };
+
+  sanic-auth = callPackage ../development/python-modules/sanic-auth { };
+
+  sanic-routing = callPackage ../development/python-modules/sanic-routing { };
+
+  sanic-testing = callPackage ../development/python-modules/sanic-testing { };
+
+  sapi-python-client = callPackage ../development/python-modules/sapi-python-client { };
+
+  sarif-om = callPackage ../development/python-modules/sarif-om { };
+
+  sarge = callPackage ../development/python-modules/sarge { };
+
+  sasmodels = callPackage ../development/python-modules/sasmodels { };
+
+  scales = callPackage ../development/python-modules/scales { };
+
+  scancode-toolkit = callPackage ../development/python-modules/scancode-toolkit { };
+
+  scapy = callPackage ../development/python-modules/scapy { };
+
+  schedule = callPackage ../development/python-modules/schedule { };
+
+  schema = callPackage ../development/python-modules/schema { };
+
+  schema-salad = callPackage ../development/python-modules/schema-salad { };
+
+  schiene = callPackage ../development/python-modules/schiene { };
+
+  scikit-bio = callPackage ../development/python-modules/scikit-bio { };
+
+  scikit-build = callPackage ../development/python-modules/scikit-build { };
+
+  scikit-fmm = callPackage ../development/python-modules/scikit-fmm { };
+
+  scikit-fuzzy = callPackage ../development/python-modules/scikit-fuzzy { };
+
+  scikit-hep-testdata = callPackage ../development/python-modules/scikit-hep-testdata { };
+
+  scikitimage = callPackage ../development/python-modules/scikit-image { };
+
+  scikit-learn = callPackage ../development/python-modules/scikit-learn {
+    inherit (pkgs) gfortran glibcLocales;
+  };
+
+  scikit-learn-extra = callPackage ../development/python-modules/scikit-learn-extra { };
+
+  scikit-optimize = callPackage ../development/python-modules/scikit-optimize { };
+
+  scikits-odes = callPackage ../development/python-modules/scikits-odes { };
+
+  scikit-tda = callPackage ../development/python-modules/scikit-tda { };
+
+  scipy = callPackage ../development/python-modules/scipy { };
+
+  scmrepo = callPackage ../development/python-modules/scmrepo { };
+
+  scour = callPackage ../development/python-modules/scour { };
+
+  scp = callPackage ../development/python-modules/scp { };
+
+  scramp = callPackage ../development/python-modules/scramp { };
+
+  scrapy = callPackage ../development/python-modules/scrapy { };
+
+  scrapy-deltafetch = callPackage ../development/python-modules/scrapy-deltafetch { };
+
+  scrapy-fake-useragent = callPackage ../development/python-modules/scrapy-fake-useragent { };
+
+  scrapy-splash = callPackage ../development/python-modules/scrapy-splash { };
+
+  screeninfo = callPackage ../development/python-modules/screeninfo { };
+
+  screenlogicpy = callPackage ../development/python-modules/screenlogicpy { };
+
+  scripttest = callPackage ../development/python-modules/scripttest { };
+
+  scikit-survival = callPackage ../development/python-modules/scikit-survival { };
+
+  scs = callPackage ../development/python-modules/scs { };
+
+  sdnotify = callPackage ../development/python-modules/sdnotify { };
+
+  seaborn = callPackage ../development/python-modules/seaborn { };
+
+  seabreeze = callPackage ../development/python-modules/seabreeze { };
+
+  seaserv = toPythonModule (pkgs.seafile-server.override {
+    python3 = self.python;
+  });
+
+  seatconnect = callPackage ../development/python-modules/seatconnect { };
+
+  seccomp = callPackage ../development/python-modules/seccomp { };
+
+  secp256k1 = callPackage ../development/python-modules/secp256k1 {
+    inherit (pkgs) secp256k1;
+  };
+
+  secretstorage = callPackage ../development/python-modules/secretstorage { };
+
+  secure = callPackage ../development/python-modules/secure { };
+
+  seekpath = callPackage ../development/python-modules/seekpath { };
+
+  segments = callPackage ../development/python-modules/segments { };
+
+  selectors2 = callPackage ../development/python-modules/selectors2 { };
+
+  selenium = callPackage ../development/python-modules/selenium { };
+
+  semantic-version = callPackage ../development/python-modules/semantic-version { };
+
+  semver = callPackage ../development/python-modules/semver { };
+
+  send2trash = callPackage ../development/python-modules/send2trash { };
+
+  sendgrid = callPackage ../development/python-modules/sendgrid { };
+
+  sense-energy = callPackage ../development/python-modules/sense-energy { };
+
+  sentencepiece = callPackage ../development/python-modules/sentencepiece {
+    inherit (pkgs) sentencepiece;
+  };
+
+  sentinel = callPackage ../development/python-modules/sentinel { };
+
+  sentinels = callPackage ../development/python-modules/sentinels { };
+
+  sentry-sdk = callPackage ../development/python-modules/sentry-sdk { };
+
+  sepaxml = callPackage ../development/python-modules/sepaxml { };
+
+  seqdiag = callPackage ../development/python-modules/seqdiag { };
+
+  seqeval = callPackage ../development/python-modules/seqeval { };
+
+  sequoia = disabledIf isPyPy (toPythonModule (pkgs.sequoia.override {
+    pythonPackages = self;
+    pythonSupport = true;
+  }));
+
+  serpent = callPackage ../development/python-modules/serpent { };
+
+  serpy = callPackage ../development/python-modules/serpy { };
+
+  serverlessrepo = callPackage ../development/python-modules/serverlessrepo { };
+
+  service-identity = callPackage ../development/python-modules/service_identity { };
+
+  setproctitle = callPackage ../development/python-modules/setproctitle { };
+
+  setupmeta = callPackage ../development/python-modules/setupmeta { };
+
+  setuptools-declarative-requirements = callPackage ../development/python-modules/setuptools-declarative-requirements { };
+
+  setuptools-git = callPackage ../development/python-modules/setuptools-git { };
+
+  setuptools-lint = callPackage ../development/python-modules/setuptools-lint { };
+
+  setuptools-rust = callPackage ../development/python-modules/setuptools-rust { };
+
+  setuptools-scm = callPackage ../development/python-modules/setuptools-scm { };
+
+  setuptools-scm-git-archive = callPackage ../development/python-modules/setuptools-scm-git-archive { };
+
+  setuptoolsTrial = callPackage ../development/python-modules/setuptoolstrial { };
+
+  sexpdata = callPackage ../development/python-modules/sexpdata { };
+
+  sfepy = callPackage ../development/python-modules/sfepy { };
+
+  sgmllib3k = callPackage ../development/python-modules/sgmllib3k { };
+
+  shamir-mnemonic = callPackage ../development/python-modules/shamir-mnemonic { };
+
+  shap = callPackage ../development/python-modules/shap { };
+
+  shapely = callPackage ../development/python-modules/shapely { };
+
+  sharedmem = callPackage ../development/python-modules/sharedmem { };
+
+  sharkiqpy = callPackage ../development/python-modules/sharkiqpy { };
+
+  sh = callPackage ../development/python-modules/sh { };
+
+  shellescape = callPackage ../development/python-modules/shellescape { };
+
+  shellingham = callPackage ../development/python-modules/shellingham { };
+
+  shiboken2 = toPythonModule (callPackage ../development/python-modules/shiboken2 {
+    inherit (pkgs) cmake llvmPackages qt5;
+  });
+
+  shippai = callPackage ../development/python-modules/shippai { };
+
+  shodan = callPackage ../development/python-modules/shodan { };
+
+  shortuuid = callPackage ../development/python-modules/shortuuid { };
+
+  shouldbe = callPackage ../development/python-modules/shouldbe { };
+
+  should-dsl = callPackage ../development/python-modules/should-dsl { };
+
+  showit = callPackage ../development/python-modules/showit { };
+
+  shtab = callPackage ../development/python-modules/shtab { };
+
+  shutilwhich = callPackage ../development/python-modules/shutilwhich { };
+
+  sievelib = callPackage ../development/python-modules/sievelib { };
+
+  signedjson = callPackage ../development/python-modules/signedjson { };
+
+  sigrok = callPackage ../development/python-modules/sigrok { };
+
+  sigtools = callPackage ../development/python-modules/sigtools { };
+
+  simanneal = callPackage ../development/python-modules/simanneal { };
+
+  simber = callPackage ../development/python-modules/simber { };
+
+  simpleaudio = callPackage ../development/python-modules/simpleaudio { };
+
+  simplebayes = callPackage ../development/python-modules/simplebayes { };
+
+  simpleeval = callPackage ../development/python-modules/simpleeval { };
+
+  simplefix = callPackage ../development/python-modules/simplefix { };
+
+  simplegeneric = callPackage ../development/python-modules/simplegeneric { };
+
+  simplehound = callPackage ../development/python-modules/simplehound { };
+
+  simplejson = callPackage ../development/python-modules/simplejson { };
+
+  simplekml = callPackage ../development/python-modules/simplekml { };
+
+  simplenote = callPackage ../development/python-modules/simplenote { };
+
+  simple-di = callPackage ../development/python-modules/simple-di { };
+
+  simple-rest-client = callPackage ../development/python-modules/simple-rest-client { };
+
+  simple-salesforce = callPackage ../development/python-modules/simple-salesforce { };
+
+  simple-websocket-server = callPackage ../development/python-modules/simple-websocket-server { };
+
+  simplisafe-python = callPackage ../development/python-modules/simplisafe-python { };
+
+  simpy = callPackage ../development/python-modules/simpy { };
+
+  single-version = callPackage ../development/python-modules/single-version { };
+
+  signify = callPackage ../development/python-modules/signify { };
+
+  siosocks = callPackage ../development/python-modules/siosocks { };
+
+  sip = callPackage ../development/python-modules/sip { };
+
+  sip_4 = callPackage ../development/python-modules/sip/4.x.nix { };
+
+  six = callPackage ../development/python-modules/six { };
+
+  skein = callPackage ../development/python-modules/skein {
+    jre = pkgs.jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
+  };
+
+  skidl = callPackage ../development/python-modules/skidl { };
+
+  sklearn-deap = callPackage ../development/python-modules/sklearn-deap { };
+
+  skodaconnect = callPackage ../development/python-modules/skodaconnect { };
+
+  skorch = callPackage ../development/python-modules/skorch { };
+
+  skybellpy = callPackage ../development/python-modules/skybellpy { };
+
+  skytemple-dtef = callPackage ../development/python-modules/skytemple-dtef { };
+
+  skytemple-eventserver = callPackage ../development/python-modules/skytemple-eventserver { };
+
+  skytemple-files = callPackage ../development/python-modules/skytemple-files { };
+
+  skytemple-icons = callPackage ../development/python-modules/skytemple-icons { };
+
+  skytemple-rust = callPackage ../development/python-modules/skytemple-rust { };
+
+  skytemple-ssb-debugger = callPackage ../development/python-modules/skytemple-ssb-debugger { };
+
+  slack-sdk = callPackage ../development/python-modules/slack-sdk { };
+
+  slackclient = callPackage ../development/python-modules/slackclient { };
+
+  sleekxmpp = callPackage ../development/python-modules/sleekxmpp { };
+
+  sleepyq = callPackage ../development/python-modules/sleepyq { };
+
+  slicedimage = callPackage ../development/python-modules/slicedimage { };
+
+  slicer = callPackage ../development/python-modules/slicer { };
+
+  slicerator = callPackage ../development/python-modules/slicerator { };
+
+  slither-analyzer = callPackage ../development/python-modules/slither-analyzer { };
+
+  slixmpp = callPackage ../development/python-modules/slixmpp {
+    inherit (pkgs) gnupg;
+  };
+
+  slob = callPackage ../development/python-modules/slob { };
+
+  slowapi = callPackage ../development/python-modules/slowapi { };
+
+  slugid = callPackage ../development/python-modules/slugid { };
+
+  sly = callPackage ../development/python-modules/sly { };
+
+  smart-meter-texas = callPackage ../development/python-modules/smart-meter-texas { };
+
+  smart-open = callPackage ../development/python-modules/smart-open { };
+
+  smarthab = callPackage ../development/python-modules/smarthab { };
+
+  smartypants = callPackage ../development/python-modules/smartypants { };
+
+  smbprotocol = callPackage ../development/python-modules/smbprotocol { };
+
+  smbus-cffi = callPackage ../development/python-modules/smbus-cffi { };
+
+  smbus2 = callPackage ../development/python-modules/smbus2 { };
+
+  smdebug-rulesconfig = callPackage ../development/python-modules/smdebug-rulesconfig { };
+
+  smhi-pkg = callPackage ../development/python-modules/smhi-pkg { };
+
+  smmap = callPackage ../development/python-modules/smmap { };
+
+  smpplib = callPackage ../development/python-modules/smpplib { };
+
+  snack = toPythonModule (pkgs.newt.override {
+    inherit (self) python;
+  });
+
+  snakebite = callPackage ../development/python-modules/snakebite { };
+
+  snakeviz = callPackage ../development/python-modules/snakeviz { };
+
+  snapcast = callPackage ../development/python-modules/snapcast { };
+
+  snapshottest = callPackage ../development/python-modules/snapshottest { };
+
+  sniffio = callPackage ../development/python-modules/sniffio { };
+
+  snitun = callPackage ../development/python-modules/snitun { };
+
+  snowballstemmer = callPackage ../development/python-modules/snowballstemmer { };
+
+  snowflake-connector-python = callPackage ../development/python-modules/snowflake-connector-python { };
+
+  snowflake-sqlalchemy = callPackage ../development/python-modules/snowflake-sqlalchemy { };
+
+  snscrape = callPackage ../development/python-modules/snscrape { };
+
+  snuggs = callPackage ../development/python-modules/snuggs { };
+
+  soapysdr = toPythonModule (pkgs.soapysdr.override {
+    python = self.python;
+    usePython = true;
+  });
+
+  soapysdr-with-plugins = toPythonModule (pkgs.soapysdr-with-plugins.override {
+    python = self.python;
+    usePython = true;
+  });
+
+  socketio-client = callPackage ../development/python-modules/socketio-client { };
+
+  socialscan = callPackage ../development/python-modules/socialscan { };
+
+  socid-extractor =  callPackage ../development/python-modules/socid-extractor { };
+
+  sockjs = callPackage ../development/python-modules/sockjs { };
+
+  sockjs-tornado = callPackage ../development/python-modules/sockjs-tornado { };
+
+  socksipy-branch = callPackage ../development/python-modules/socksipy-branch { };
+
+  soco = callPackage ../development/python-modules/soco { };
+
+  softlayer = callPackage ../development/python-modules/softlayer { };
+
+  solaredge = callPackage ../development/python-modules/solaredge { };
+
+  solax = callPackage ../development/python-modules/solax { };
+
+  solc-select = callPackage ../development/python-modules/solc-select { };
+
+  solo-python = disabledIf (!pythonAtLeast "3.6") (callPackage ../development/python-modules/solo-python { });
+
+  somajo = callPackage ../development/python-modules/somajo { };
+
+  somecomfort = callPackage ../development/python-modules/somecomfort { };
+
+  somfy-mylink-synergy = callPackage ../development/python-modules/somfy-mylink-synergy { };
+
+  sonarr = callPackage ../development/python-modules/sonarr { };
+
+  sopel = callPackage ../development/python-modules/sopel { };
+
+  sorl_thumbnail = callPackage ../development/python-modules/sorl_thumbnail { };
+
+  sortedcollections = callPackage ../development/python-modules/sortedcollections { };
+
+  sortedcontainers = callPackage ../development/python-modules/sortedcontainers { };
+
+  sounddevice = callPackage ../development/python-modules/sounddevice { };
+
+  soundfile = callPackage ../development/python-modules/soundfile { };
+
+  soupsieve = callPackage ../development/python-modules/soupsieve { };
+
+  spacy = callPackage ../development/python-modules/spacy { };
+
+  spacy-alignments = callPackage ../development/python-modules/spacy-alignments { };
+
+  spacy-legacy = callPackage ../development/python-modules/spacy/legacy.nix { };
+
+  spacy-loggers = callPackage ../development/python-modules/spacy-loggers { };
+
+  spacy_models = callPackage ../development/python-modules/spacy/models.nix { };
+
+  spacy-pkuseg = callPackage ../development/python-modules/spacy-pkuseg { };
+
+  spacy-transformers = callPackage ../development/python-modules/spacy-transformers { };
+
+  spake2 = callPackage ../development/python-modules/spake2 { };
+
+  spark_parser = callPackage ../development/python-modules/spark_parser { };
+
+  sparklines = callPackage ../development/python-modules/sparklines { };
+
+  SPARQLWrapper = callPackage ../development/python-modules/sparqlwrapper { };
+
+  sparse = callPackage ../development/python-modules/sparse { };
+
+  spdx-tools = callPackage ../development/python-modules/spdx-tools { };
+
+  speaklater = callPackage ../development/python-modules/speaklater { };
+
+  speaklater3 = callPackage ../development/python-modules/speaklater3 { };
+
+  spectral-cube = callPackage ../development/python-modules/spectral-cube { };
+
+  speedtest-cli = callPackage ../development/python-modules/speedtest-cli { };
+
+  spglib = callPackage ../development/python-modules/spglib { };
+
+  sphfile = callPackage ../development/python-modules/sphfile { };
+
+  spiderpy = callPackage ../development/python-modules/spiderpy { };
+
+  spinners = callPackage ../development/python-modules/spinners { };
+
+  sphinxcontrib-actdiag = callPackage ../development/python-modules/sphinxcontrib-actdiag { };
+
+  sphinxcontrib-apidoc = callPackage ../development/python-modules/sphinxcontrib-apidoc { };
+
+  sphinxcontrib-applehelp = callPackage ../development/python-modules/sphinxcontrib-applehelp { };
+
+  sphinxcontrib-autoapi = callPackage ../development/python-modules/sphinxcontrib-autoapi { };
+
+  sphinxcontrib-bayesnet = callPackage ../development/python-modules/sphinxcontrib-bayesnet { };
+
+  sphinxcontrib-bibtex = callPackage ../development/python-modules/sphinxcontrib-bibtex { };
+
+  sphinxcontrib-blockdiag = callPackage ../development/python-modules/sphinxcontrib-blockdiag { };
+
+  sphinxcontrib-devhelp = callPackage ../development/python-modules/sphinxcontrib-devhelp { };
+
+  sphinxcontrib-excel-table = callPackage ../development/python-modules/sphinxcontrib-excel-table { };
+
+  sphinxcontrib-fulltoc = callPackage ../development/python-modules/sphinxcontrib-fulltoc { };
+
+  sphinxcontrib-htmlhelp = callPackage ../development/python-modules/sphinxcontrib-htmlhelp { };
+
+  sphinxcontrib_httpdomain = callPackage ../development/python-modules/sphinxcontrib_httpdomain { };
+
+  sphinxcontrib-jsmath = callPackage ../development/python-modules/sphinxcontrib-jsmath { };
+
+  sphinxcontrib-katex = callPackage ../development/python-modules/sphinxcontrib-katex { };
+
+  sphinxcontrib-nwdiag = callPackage ../development/python-modules/sphinxcontrib-nwdiag { };
+
+  sphinxcontrib_newsfeed = callPackage ../development/python-modules/sphinxcontrib_newsfeed { };
+
+  sphinxcontrib-openapi = callPackage ../development/python-modules/sphinxcontrib-openapi { };
+
+  sphinxcontrib-plantuml = callPackage ../development/python-modules/sphinxcontrib-plantuml {
+    inherit (pkgs) plantuml;
+  };
+
+  sphinxcontrib-programoutput = callPackage ../development/python-modules/sphinxcontrib-programoutput { };
+
+  sphinxcontrib-qthelp = callPackage ../development/python-modules/sphinxcontrib-qthelp { };
+
+  sphinxcontrib-serializinghtml = callPackage ../development/python-modules/sphinxcontrib-serializinghtml { };
+
+  sphinxcontrib-seqdiag = callPackage ../development/python-modules/sphinxcontrib-seqdiag { };
+
+  sphinxcontrib-spelling = callPackage ../development/python-modules/sphinxcontrib-spelling { };
+
+  sphinxcontrib-tikz = callPackage ../development/python-modules/sphinxcontrib-tikz {
+    texLive = pkgs.texlive.combine { inherit (pkgs.texlive) scheme-small standalone pgfplots; };
+  };
+
+  sphinxcontrib-websupport = callPackage ../development/python-modules/sphinxcontrib-websupport { };
+
+  sphinx = callPackage ../development/python-modules/sphinx { };
+
+  sphinx-argparse = callPackage ../development/python-modules/sphinx-argparse { };
+
+  sphinx-autobuild = callPackage ../development/python-modules/sphinx-autobuild { };
+
+  sphinx-copybutton = callPackage ../development/python-modules/sphinx-copybutton { };
+
+  sphinx-inline-tabs = callPackage ../development/python-modules/sphinx-inline-tabs { };
+
+  sphinx-jinja = callPackage ../development/python-modules/sphinx-jinja { };
+
+  sphinx-markdown-parser = callPackage ../development/python-modules/sphinx-markdown-parser { };
+
+  sphinx-material = callPackage ../development/python-modules/sphinx-material { };
+
+  sphinx-navtree = callPackage ../development/python-modules/sphinx-navtree { };
+
+  sphinx_pypi_upload = callPackage ../development/python-modules/sphinx_pypi_upload { };
+
+  sphinx_rtd_theme = callPackage ../development/python-modules/sphinx_rtd_theme { };
+
+  sphinx-serve = callPackage ../development/python-modules/sphinx-serve { };
+
+  sphinx-testing = callPackage ../development/python-modules/sphinx-testing { };
+
+  sphinxext-opengraph = callPackage ../development/python-modules/sphinxext-opengraph { };
+
+  spidev = callPackage ../development/python-modules/spidev { };
+
+  splinter = callPackage ../development/python-modules/splinter { };
+
+  spotipy = callPackage ../development/python-modules/spotipy { };
+
+  spur = callPackage ../development/python-modules/spur { };
+
+  spyder = callPackage ../development/python-modules/spyder { };
+
+  spyder-kernels = callPackage ../development/python-modules/spyder-kernels { };
+
+  spyse-python = callPackage ../development/python-modules/spyse-python { };
+
+  sqlalchemy = callPackage ../development/python-modules/sqlalchemy { };
+
+  sqlalchemy-citext = callPackage ../development/python-modules/sqlalchemy-citext { };
+
+  sqlalchemy-continuum = callPackage ../development/python-modules/sqlalchemy-continuum { };
+
+  sqlalchemy-i18n = callPackage ../development/python-modules/sqlalchemy-i18n { };
+
+  SQLAlchemy-ImageAttach = callPackage ../development/python-modules/sqlalchemy-imageattach { };
+
+  sqlalchemy-jsonfield = callPackage ../development/python-modules/sqlalchemy-jsonfield { };
+
+  sqlalchemy-migrate = callPackage ../development/python-modules/sqlalchemy-migrate { };
+
+  sqlalchemy-mixins = callPackage ../development/python-modules/sqlalchemy-mixins { };
+
+  sqlalchemy-utils = callPackage ../development/python-modules/sqlalchemy-utils { };
+
+  sqlitedict = callPackage ../development/python-modules/sqlitedict { };
+
+  sqlite-fts4 = callPackage ../development/python-modules/sqlite-fts4 { };
+
+  sqlite-utils = callPackage ../development/python-modules/sqlite-utils { };
+
+  sqlmap = callPackage ../development/python-modules/sqlmap { };
+
+  sqlobject = callPackage ../development/python-modules/sqlobject { };
+
+  sqlparse = callPackage ../development/python-modules/sqlparse { };
+
+  sqlsoup = callPackage ../development/python-modules/sqlsoup { };
+
+  srp = callPackage ../development/python-modules/srp { };
+
+  srpenergy = callPackage ../development/python-modules/srpenergy { };
+
+  srptools = callPackage ../development/python-modules/srptools { };
+
+  srsly = callPackage ../development/python-modules/srsly { };
+
+  srvlookup = callPackage ../development/python-modules/srvlookup { };
+
+  ssdeep = callPackage ../development/python-modules/ssdeep {
+    inherit (pkgs) ssdeep;
+  };
+
+  ssdp = callPackage ../development/python-modules/ssdp { };
+
+  sseclient = callPackage ../development/python-modules/sseclient { };
+
+  sseclient-py = callPackage ../development/python-modules/sseclient-py { };
+
+  sshpubkeys = callPackage ../development/python-modules/sshpubkeys { };
+
+  sshtunnel = callPackage ../development/python-modules/sshtunnel { };
+
+  sslib = callPackage ../development/python-modules/sslib { };
+
+  sslyze = callPackage ../development/python-modules/sslyze { };
+
+  stack-data = callPackage ../development/python-modules/stack-data { };
+
+  stanza = callPackage ../development/python-modules/stanza { };
+
+  starlette = callPackage ../development/python-modules/starlette {
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices;
+  };
+
+  starkbank-ecdsa = callPackage ../development/python-modules/starkbank-ecdsa { };
+
+  starline = callPackage ../development/python-modules/starline { };
+
+  stashy = callPackage ../development/python-modules/stashy { };
+
+  staticjinja = callPackage ../development/python-modules/staticjinja { };
+
+  statistics = callPackage ../development/python-modules/statistics { };
+
+  statmake = callPackage ../development/python-modules/statmake { };
+
+  statsd = callPackage ../development/python-modules/statsd { };
+
+  statsmodels = callPackage ../development/python-modules/statsmodels { };
+
+  stdiomask = callPackage ../development/python-modules/stdiomask { };
+
+  stdlib-list = callPackage ../development/python-modules/stdlib-list { };
+
+  stem = callPackage ../development/python-modules/stem { };
+
+  stestr = callPackage ../development/python-modules/stestr { };
+
+  stevedore = callPackage ../development/python-modules/stevedore { };
+
+  stickytape = callPackage ../development/python-modules/stickytape { };
+
+  stm32loader = callPackage ../development/python-modules/stm32loader { };
+
+  stone = callPackage ../development/python-modules/stone { };
+
+  stopit = callPackage ../development/python-modules/stopit { };
+
+  strategies = callPackage ../development/python-modules/strategies { };
+
+  stravalib = callPackage ../development/python-modules/stravalib { };
+
+  streaming-form-data = callPackage ../development/python-modules/streaming-form-data { };
+
+  streamlabswater = callPackage ../development/python-modules/streamlabswater { };
+
+  streamz = callPackage ../development/python-modules/streamz { };
+
+  strenum =  callPackage ../development/python-modules/strenum { };
+
+  strict-rfc3339 = callPackage ../development/python-modules/strict-rfc3339 { };
+
+  strictyaml = callPackage ../development/python-modules/strictyaml { };
+
+  stringcase = callPackage ../development/python-modules/stringcase { };
+
+  stripe = callPackage ../development/python-modules/stripe { };
+
+  striprtf = callPackage ../development/python-modules/striprtf { };
+
+  structlog = callPackage ../development/python-modules/structlog { };
+
+  stumpy = callPackage ../development/python-modules/stumpy { };
+
+  stups-cli-support = callPackage ../development/python-modules/stups-cli-support { };
+
+  stups-fullstop = callPackage ../development/python-modules/stups-fullstop { };
+
+  stups-pierone = callPackage ../development/python-modules/stups-pierone { };
+
+  stups-tokens = callPackage ../development/python-modules/stups-tokens { };
+
+  stups-zign = callPackage ../development/python-modules/stups-zign { };
+
+  stytra = callPackage ../development/python-modules/stytra { };
+
+  subarulink = callPackage ../development/python-modules/subarulink { };
+
+  subdownloader = callPackage ../development/python-modules/subdownloader { };
+
+  subliminal = callPackage ../development/python-modules/subliminal { };
+
+  subprocess-tee = callPackage ../development/python-modules/subprocess-tee { };
+
+  subunit = callPackage ../development/python-modules/subunit {
+    inherit (pkgs) subunit cppunit check;
+  };
+
+  subunit2sql = callPackage ../development/python-modules/subunit2sql { };
+
+  subzerod = callPackage ../development/python-modules/subzerod { };
+
+  suds-jurko = callPackage ../development/python-modules/suds-jurko { };
+
+  sumo = callPackage ../development/python-modules/sumo { };
+
+  sumtypes = callPackage ../development/python-modules/sumtypes { };
+
+  sunpy = callPackage ../development/python-modules/sunpy { };
+
+  sunwatcher = callPackage ../development/python-modules/sunwatcher { };
+
+  supervise_api = callPackage ../development/python-modules/supervise_api { };
+
+  supervisor = callPackage ../development/python-modules/supervisor { };
+
+  superqt = callPackage ../development/python-modules/superqt { };
+
+  sure = callPackage ../development/python-modules/sure { };
+
+  surepy = callPackage ../development/python-modules/surepy { };
+
+  surt = callPackage ../development/python-modules/surt { };
+
+  survey = callPackage ../development/python-modules/survey { };
+
+  suseapi = callPackage ../development/python-modules/suseapi { };
+
+  svdtools = callPackage ../development/python-modules/svdtools { };
+
+  svg2tikz = callPackage ../development/python-modules/svg2tikz { };
+
+  svglib = callPackage ../development/python-modules/svglib { };
+
+  svg-path = callPackage ../development/python-modules/svg-path { };
+
+  svgwrite = callPackage ../development/python-modules/svgwrite { };
+
+  swagger-spec-validator = callPackage ../development/python-modules/swagger-spec-validator { };
+
+  swagger-ui-bundle = callPackage ../development/python-modules/swagger-ui-bundle { };
+
+  swift = callPackage ../development/python-modules/swift { };
+
+  swisshydrodata = callPackage ../development/python-modules/swisshydrodata { };
+
+  swspotify = callPackage ../development/python-modules/swspotify { };
+
+  sybil = callPackage ../development/python-modules/sybil { };
+
+  symengine = callPackage ../development/python-modules/symengine {
+    inherit (pkgs) symengine;
+  };
+
+  sympy = callPackage ../development/python-modules/sympy { };
+
+  syncer = callPackage ../development/python-modules/syncer { };
+
+  synergy = callPackage ../development/python-modules/synergy { };
+
+  synologydsm-api = callPackage ../development/python-modules/synologydsm-api { };
+
+  syslog-rfc5424-formatter = callPackage ../development/python-modules/syslog-rfc5424-formatter { };
+
+  systembridge = callPackage ../development/python-modules/systembridge { };
+
+  systemd = callPackage ../development/python-modules/systemd {
+    inherit (pkgs) systemd;
+  };
+
+  sysv_ipc = callPackage ../development/python-modules/sysv_ipc { };
+
+  tableaudocumentapi = callPackage ../development/python-modules/tableaudocumentapi { };
+
+  tables = callPackage ../development/python-modules/tables {
+    hdf5 = pkgs.hdf5_1_10;
+  };
+
+  tablib = callPackage ../development/python-modules/tablib { };
+
+  tabulate = callPackage ../development/python-modules/tabulate { };
+
+  tabview = callPackage ../development/python-modules/tabview { };
+
+  tadasets = callPackage ../development/python-modules/tadasets { };
+
+  tag-expressions = callPackage ../development/python-modules/tag-expressions { };
+
+  tago = callPackage ../development/python-modules/tago { };
+
+  tahoma-api = callPackage ../development/python-modules/tahoma-api { };
+
+  tailer = callPackage ../development/python-modules/tailer { };
+
+  tailscale = callPackage ../development/python-modules/tailscale { };
+
+  tappy = callPackage ../development/python-modules/tappy { };
+
+  tasklib = callPackage ../development/python-modules/tasklib { };
+
+  taskw = callPackage ../development/python-modules/taskw { };
+
+  tatsu = callPackage ../development/python-modules/tatsu { };
+
+  tblib = callPackage ../development/python-modules/tblib { };
+
+  tbm-utils = callPackage ../development/python-modules/tbm-utils { };
+
+  teamcity-messages = callPackage ../development/python-modules/teamcity-messages { };
+
+  telegram = callPackage ../development/python-modules/telegram { };
+
+  telethon = callPackage ../development/python-modules/telethon {
+    inherit (pkgs) openssl;
+  };
+
+  telethon-session-sqlalchemy = callPackage ../development/python-modules/telethon-session-sqlalchemy { };
+
+  teletype = callPackage ../development/python-modules/teletype { };
+
+  telfhash = callPackage ../development/python-modules/telfhash { };
+
+  temescal = callPackage ../development/python-modules/temescal { };
+
+  tempest = callPackage ../development/python-modules/tempest { };
+
+  tempita = callPackage ../development/python-modules/tempita { };
+
+  tempora = callPackage ../development/python-modules/tempora { };
+
+  tenacity = callPackage ../development/python-modules/tenacity { };
+
+  tensorboard-data-server = callPackage ../development/python-modules/tensorboard-data-server { };
+
+  tensorboard-plugin-profile = callPackage ../development/python-modules/tensorboard-plugin-profile { };
+
+  tensorboard-plugin-wit = callPackage ../development/python-modules/tensorboard-plugin-wit { };
+
+  tensorboardx = callPackage ../development/python-modules/tensorboardx { };
+
+  tensorflow-bin = callPackage ../development/python-modules/tensorflow/bin.nix {
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudatoolkit = tensorflow_compat_cudatoolkit;
+    cudnn = tensorflow_compat_cudnn;
+  };
+
+  tensorflow-build = callPackage ../development/python-modules/tensorflow {
+    inherit (pkgs.darwin) cctools;
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudatoolkit = tensorflow_compat_cudatoolkit;
+    cudnn = tensorflow_compat_cudnn;
+    nccl = tensorflow_compat_nccl;
+    inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
+    flatbuffers-core = pkgs.flatbuffers;
+    flatbuffers-python = self.flatbuffers;
+    protobuf-core = pkgs.protobuf;
+    protobuf-python = self.protobuf;
+    lmdb-core = pkgs.lmdb;
+  };
+
+  tensorflow-datasets = callPackage ../development/python-modules/tensorflow-datasets { };
+
+  tensorflow-estimator = callPackage ../development/python-modules/tensorflow-estimator { };
+
+  tensorflow-metadata = callPackage ../development/python-modules/tensorflow-metadata { };
+
+  tensorflow-probability = callPackage ../development/python-modules/tensorflow-probability { };
+
+  tensorflow = self.tensorflow-build;
+
+  tensorflow-tensorboard = callPackage ../development/python-modules/tensorflow-tensorboard { };
+
+  tensorflowWithCuda = self.tensorflow.override {
+    cudaSupport = true;
+  };
+
+  tensorflowWithoutCuda = self.tensorflow.override {
+    cudaSupport = false;
+  };
+
+  tensorly = callPackage ../development/python-modules/tensorly { };
+
+  tellduslive = callPackage ../development/python-modules/tellduslive { };
+
+  termcolor = callPackage ../development/python-modules/termcolor { };
+
+  terminado = callPackage ../development/python-modules/terminado { };
+
+  terminaltables = callPackage ../development/python-modules/terminaltables { };
+
+  termplotlib = callPackage ../development/python-modules/termplotlib { };
+
+  termstyle = callPackage ../development/python-modules/termstyle { };
+
+  tern = callPackage ../development/python-modules/tern { };
+
+  tesla-wall-connector = callPackage ../development/python-modules/tesla-wall-connector { };
+
+  teslajsonpy = callPackage ../development/python-modules/teslajsonpy { };
+
+  tess = callPackage ../development/python-modules/tess { };
+
+  tesserocr = callPackage ../development/python-modules/tesserocr { };
+
+  testfixtures = callPackage ../development/python-modules/testfixtures { };
+
+  textfsm = callPackage ../development/python-modules/textfsm { };
+
+  textile = callPackage ../development/python-modules/textile { };
+
+  textual = callPackage ../development/python-modules/textual { };
+
+  testing-common-database = callPackage ../development/python-modules/testing-common-database { };
+
+  testing-postgresql = callPackage ../development/python-modules/testing-postgresql { };
+
+  testpath = callPackage ../development/python-modules/testpath { };
+
+  testrepository = callPackage ../development/python-modules/testrepository { };
+
+  testresources = callPackage ../development/python-modules/testresources { };
+
+  testscenarios = callPackage ../development/python-modules/testscenarios { };
+
+  testtools = callPackage ../development/python-modules/testtools { };
+
+  test-tube = callPackage ../development/python-modules/test-tube { };
+
+  textdistance = callPackage ../development/python-modules/textdistance { };
+
+  textacy = callPackage ../development/python-modules/textacy { };
+
+  texttable = callPackage ../development/python-modules/texttable { };
+
+  text-unidecode = callPackage ../development/python-modules/text-unidecode { };
+
+  textwrap3 = callPackage ../development/python-modules/textwrap3 { };
+
+  tflearn = callPackage ../development/python-modules/tflearn { };
+
+  tgcrypto = callPackage ../development/python-modules/tgcrypto { };
+
+  theano-pymc = callPackage ../development/python-modules/theano-pymc { };
+
+  Theano = callPackage ../development/python-modules/Theano rec {
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudnnSupport = cudaSupport;
+  };
+
+  TheanoWithCuda = self.Theano.override {
+    cudaSupport = true;
+    cudnnSupport = true;
+  };
+
+  TheanoWithoutCuda = self.Theano.override {
+    cudaSupport = false;
+    cudnnSupport = false;
+  };
+
+  thespian = callPackage ../development/python-modules/thespian { };
+
+  thinc = callPackage ../development/python-modules/thinc {
+    inherit (pkgs.darwin.apple_sdk.frameworks) Accelerate CoreFoundation CoreGraphics CoreVideo;
+  };
+
+  threadloop = callPackage ../development/python-modules/threadloop { };
+
+  threadpool = callPackage ../development/python-modules/threadpool { };
+
+  threadpoolctl = callPackage ../development/python-modules/threadpoolctl { };
+
+  three-merge = callPackage ../development/python-modules/three-merge { };
+
+  thrift = callPackage ../development/python-modules/thrift { };
+
+  thriftpy2 = callPackage ../development/python-modules/thriftpy2 { };
+
+  thumborPexif = callPackage ../development/python-modules/thumborpexif { };
+
+  tkinter = let
+    py = python.override { x11Support=true; };
+  in callPackage ../development/python-modules/tkinter { py = py; };
+
+  tidylib = callPackage ../development/python-modules/pytidylib { };
+
+  tifffile = callPackage ../development/python-modules/tifffile { };
+
+  tika = callPackage ../development/python-modules/tika { };
+
+  tikzplotlib = callPackage ../development/python-modules/tikzplotlib { };
+
+  tiledb = callPackage ../development/python-modules/tiledb {
+    inherit (pkgs) tiledb;
+  };
+
+  tilequant = callPackage ../development/python-modules/tilequant { };
+
+  tilestache = callPackage ../development/python-modules/tilestache { };
+
+  timeago = callPackage ../development/python-modules/timeago { };
+
+  timecop = callPackage ../development/python-modules/timecop { };
+
+  timelib = callPackage ../development/python-modules/timelib { };
+
+  time-machine = callPackage ../development/python-modules/time-machine { };
+
+  timeout-decorator = callPackage ../development/python-modules/timeout-decorator { };
+
+  timetagger = callPackage ../development/python-modules/timetagger { };
+
+  timezonefinder = callPackage ../development/python-modules/timezonefinder { };
+
+  tinycss2 = callPackage ../development/python-modules/tinycss2 { };
+
+  tinycss = callPackage ../development/python-modules/tinycss { };
+
+  tinydb = callPackage ../development/python-modules/tinydb { };
+
+  tinyobjloader-py = callPackage ../development/python-modules/tinyobjloader-py { };
+
+  tissue = callPackage ../development/python-modules/tissue { };
+
+  titlecase = callPackage ../development/python-modules/titlecase { };
+
+  tld = callPackage ../development/python-modules/tld { };
+
+  tldextract = callPackage ../development/python-modules/tldextract { };
+
+  tlsh = callPackage ../development/python-modules/tlsh { };
+
+  tlslite-ng = callPackage ../development/python-modules/tlslite-ng { };
+
+  tls-parser = callPackage ../development/python-modules/tls-parser { };
+
+  tmb = callPackage ../development/python-modules/tmb { };
+
+  todoist = callPackage ../development/python-modules/todoist { };
+
+  toggl-cli = callPackage ../development/python-modules/toggl-cli { };
+
+  token-bucket = callPackage ../development/python-modules/token-bucket { };
+
+  tokenizers = toPythonModule (callPackage ../development/python-modules/tokenizers { });
+
+  tokenize-rt = toPythonModule (callPackage ../development/python-modules/tokenize-rt { });
+
+  tokenlib = callPackage ../development/python-modules/tokenlib { };
+
+  tololib = callPackage ../development/python-modules/tololib { };
+
+  toml = callPackage ../development/python-modules/toml { };
+
+  tomli = callPackage ../development/python-modules/tomli { };
+
+  tomli-w = callPackage ../development/python-modules/tomli-w { };
+
+  tomlkit = callPackage ../development/python-modules/tomlkit { };
+
+  toolz = callPackage ../development/python-modules/toolz { };
+
+  toonapi = callPackage ../development/python-modules/toonapi { };
+
+  toposort = callPackage ../development/python-modules/toposort { };
+
+  torch-tb-profiler = callPackage ../development/python-modules/torch-tb-profiler/default.nix { };
+
+  torchaudio-bin = callPackage ../development/python-modules/torchaudio/bin.nix { };
+
+  torchgpipe = callPackage ../development/python-modules/torchgpipe { };
+
+  torchinfo = callPackage ../development/python-modules/torchinfo { };
+
+  torchvision = callPackage ../development/python-modules/torchvision { };
+
+  torchvision-bin = callPackage ../development/python-modules/torchvision/bin.nix { };
+
+  tornado = callPackage ../development/python-modules/tornado { };
+
+  # Used by circus and grab-site, 2020-08-29
+  tornado_4 = callPackage ../development/python-modules/tornado/4.nix { };
+
+  # Used by streamlit, graphite_beacon, 2021-01-29
+  tornado_5 = callPackage ../development/python-modules/tornado/5.nix { };
+
+  torrequest = callPackage ../development/python-modules/torrequest { };
+
+  total-connect-client = callPackage ../development/python-modules/total-connect-client { };
+
+  towncrier = callPackage ../development/python-modules/towncrier {
+    inherit (pkgs) git;
+  };
+
+  tox = callPackage ../development/python-modules/tox { };
+
+  tpm2-pytss = callPackage ../development/python-modules/tpm2-pytss { };
+
+  tqdm = callPackage ../development/python-modules/tqdm { };
+
+  traceback2 = callPackage ../development/python-modules/traceback2 { };
+
+  tracing = callPackage ../development/python-modules/tracing { };
+
+  trackpy = callPackage ../development/python-modules/trackpy { };
+
+  traitlets = callPackage ../development/python-modules/traitlets { };
+
+  traits = callPackage ../development/python-modules/traits { };
+
+  traitsui = callPackage ../development/python-modules/traitsui { };
+
+  traittypes = callPackage ../development/python-modules/traittypes { };
+
+  transaction = callPackage ../development/python-modules/transaction { };
+
+  transformers = callPackage ../development/python-modules/transformers { };
+
+  transforms3d = callPackage ../development/python-modules/transforms3d { };
+
+  transip = callPackage ../development/python-modules/transip { };
+
+  transitions = callPackage ../development/python-modules/transitions { };
+
+  translatepy = callPackage ../development/python-modules/translatepy { };
+
+  translationstring = callPackage ../development/python-modules/translationstring { };
+
+  transmission-rpc = callPackage ../development/python-modules/transmission-rpc { };
+
+  transmissionrpc = callPackage ../development/python-modules/transmissionrpc { };
+
+  treeo = callPackage ../development/python-modules/treeo { };
+
+  treex = callPackage ../development/python-modules/treex { };
+
+  treq = callPackage ../development/python-modules/treq { };
+
+  trezor_agent = callPackage ../development/python-modules/trezor_agent { };
+
+  trezor = callPackage ../development/python-modules/trezor { };
+
+  trimesh = callPackage ../development/python-modules/trimesh { };
+
+  trio = callPackage ../development/python-modules/trio { };
+
+  trio-asyncio = callPackage ../development/python-modules/trio-asyncio { };
+
+  trueskill = callPackage ../development/python-modules/trueskill { };
+
+  trustme = callPackage ../development/python-modules/trustme { };
+
+  trytond = callPackage ../development/python-modules/trytond { };
+
+  ttls = callPackage ../development/python-modules/ttls { };
+
+  ttp = callPackage ../development/python-modules/ttp { };
+
+  tubes = callPackage ../development/python-modules/tubes { };
+
+  tunigo = callPackage ../development/python-modules/tunigo { };
+
+  tubeup = callPackage ../development/python-modules/tubeup { };
+
+  tumpa = callPackage ../development/python-modules/tumpa {
+    inherit (pkgs.libsForQt5) wrapQtAppsHook;
+  };
+
+  tuya-iot-py-sdk = callPackage ../development/python-modules/tuya-iot-py-sdk { };
+
+  tuyaha = callPackage ../development/python-modules/tuyaha { };
+
+  tvdb_api = callPackage ../development/python-modules/tvdb_api { };
+
+  tweedledum = callPackage ../development/python-modules/tweedledum { };
+
+  tweepy = callPackage ../development/python-modules/tweepy { };
+
+  twentemilieu = callPackage ../development/python-modules/twentemilieu { };
+
+  twiggy = callPackage ../development/python-modules/twiggy { };
+
+  twilio = callPackage ../development/python-modules/twilio { };
+
+  twill = callPackage ../development/python-modules/twill { };
+
+  twine = callPackage ../development/python-modules/twine { };
+
+  twinkly-client = callPackage ../development/python-modules/twinkly-client { };
+
+  twisted = callPackage ../development/python-modules/twisted { };
+
+  twitch-python = callPackage ../development/python-modules/twitch-python { };
+
+  twitchapi = callPackage ../development/python-modules/twitchapi { };
+
+  twitter = callPackage ../development/python-modules/twitter { };
+
+  twitter-common-collections = callPackage ../development/python-modules/twitter-common-collections { };
+
+  twitter-common-confluence = callPackage ../development/python-modules/twitter-common-confluence { };
+
+  twitter-common-dirutil = callPackage ../development/python-modules/twitter-common-dirutil { };
+
+  twitter-common-lang = callPackage ../development/python-modules/twitter-common-lang { };
+
+  twitter-common-log = callPackage ../development/python-modules/twitter-common-log { };
+
+  twitter-common-options = callPackage ../development/python-modules/twitter-common-options { };
+
+  twitterapi = callPackage ../development/python-modules/twitterapi { };
+
+  twofish = callPackage ../development/python-modules/twofish { };
+
+  txaio = callPackage ../development/python-modules/txaio { };
+
+  txamqp = callPackage ../development/python-modules/txamqp { };
+
+  txdbus = callPackage ../development/python-modules/txdbus { };
+
+  txgithub = callPackage ../development/python-modules/txgithub { };
+
+  txredisapi = callPackage ../development/python-modules/txredisapi { };
+
+  txrequests = callPackage ../development/python-modules/txrequests { };
+
+  txtorcon = callPackage ../development/python-modules/txtorcon { };
+
+  txzmq = callPackage ../development/python-modules/txzmq { };
+
+  typecode = callPackage ../development/python-modules/typecode { };
+
+  typecode-libmagic = callPackage ../development/python-modules/typecode/libmagic.nix {
+    inherit (pkgs) file zlib;
+  };
+
+  typed-ast = callPackage ../development/python-modules/typed-ast { };
+
+  typed-settings = callPackage ../development/python-modules/typed-settings { };
+
+  typeguard = callPackage ../development/python-modules/typeguard { };
+
+  typer = callPackage ../development/python-modules/typer { };
+
+  types-cryptography = callPackage ../development/python-modules/types-cryptography { };
+
+  types-dateutil = callPackage ../development/python-modules/types-dateutil { };
+
+  types-decorator = callPackage ../development/python-modules/types-decorator { };
+
+  types-enum34 = callPackage ../development/python-modules/types-enum34 { };
+
+  types-freezegun = callPackage ../development/python-modules/types-freezegun { };
+
+  types-futures = callPackage ../development/python-modules/types-futures { };
+
+  types-ipaddress = callPackage ../development/python-modules/types-ipaddress { };
+
+  types-paramiko = callPackage ../development/python-modules/types-paramiko { };
+
+  types-protobuf = callPackage ../development/python-modules/types-protobuf { };
+
+  types-pytz = callPackage ../development/python-modules/types-pytz { };
+
+  types-requests = callPackage ../development/python-modules/types-requests { };
+
+  types-setuptools = callPackage ../development/python-modules/types-setuptools { };
+
+  types-tabulate = callPackage ../development/python-modules/types-tabulate { };
+
+  types-toml = callPackage ../development/python-modules/types-toml { };
+
+  types-typed-ast = callPackage ../development/python-modules/types-typed-ast { };
+
+  types-urllib3 = callPackage ../development/python-modules/types-urllib3 { };
+
+  typesentry = callPackage ../development/python-modules/typesentry { };
+
+  typesystem = callPackage ../development/python-modules/typesystem { };
+
+  typical = callPackage ../development/python-modules/typical { };
+
+  typing = null;
+
+  typing-extensions = callPackage ../development/python-modules/typing-extensions { };
+
+  typing-inspect = callPackage ../development/python-modules/typing-inspect { };
+
+  typogrify = callPackage ../development/python-modules/typogrify { };
+
+  tzdata = callPackage ../development/python-modules/tzdata { };
+
+  tzlocal = callPackage ../development/python-modules/tzlocal { };
+
+  uamqp = callPackage ../development/python-modules/uamqp {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CFNetwork CoreFoundation Security;
+  };
+
+  ua-parser = callPackage ../development/python-modules/ua-parser { };
+
+  uarray = callPackage ../development/python-modules/uarray { };
+
+  uc-micro-py = callPackage ../development/python-modules/uc-micro-py { };
+
+  udatetime = callPackage ../development/python-modules/udatetime { };
+
+  ueberzug = callPackage ../development/python-modules/ueberzug {
+    inherit (pkgs.xorg) libX11 libXext;
+  };
+
+  ufo2ft = callPackage ../development/python-modules/ufo2ft { };
+
+  ufoLib2 = callPackage ../development/python-modules/ufoLib2 { };
+
+  ufonormalizer = callPackage ../development/python-modules/ufonormalizer { };
+
+  ufoprocessor = callPackage ../development/python-modules/ufoprocessor { };
+
+  ueagle = callPackage ../development/python-modules/ueagle { };
+
+  ujson = callPackage ../development/python-modules/ujson { };
+
+  ukkonen = callPackage ../development/python-modules/ukkonen { };
+
+  ukpostcodeparser = callPackage ../development/python-modules/ukpostcodeparser { };
+
+  umalqurra = callPackage ../development/python-modules/umalqurra { };
+
+  umap-learn = callPackage ../development/python-modules/umap-learn { };
+
+  u-msgpack-python = callPackage ../development/python-modules/u-msgpack-python { };
+
+  unasync = callPackage ../development/python-modules/unasync { };
+
+  uncertainties = callPackage ../development/python-modules/uncertainties { };
+
+  uncompyle6 = callPackage ../development/python-modules/uncompyle6 { };
+
+  unicodecsv = callPackage ../development/python-modules/unicodecsv { };
+
+  unicodedata2 = callPackage ../development/python-modules/unicodedata2 { };
+
+  unicode-slugify = callPackage ../development/python-modules/unicode-slugify { };
+
+  unicorn = callPackage ../development/python-modules/unicorn {
+    unicorn-emu = pkgs.unicorn;
+  };
+
+  unidecode = callPackage ../development/python-modules/unidecode { };
+
+  unidic-lite = callPackage ../development/python-modules/unidic-lite { };
+
+  unidiff = callPackage ../development/python-modules/unidiff { };
+
+  unifi = callPackage ../development/python-modules/unifi { };
+
+  unify = callPackage ../development/python-modules/unify { };
+
+  unifiled = callPackage ../development/python-modules/unifiled { };
+
+  units = callPackage ../development/python-modules/units { };
+
+  unittest2 = callPackage ../development/python-modules/unittest2 { };
+
+  unittest-data-provider = callPackage ../development/python-modules/unittest-data-provider { };
+
+  unittest-xml-reporting = callPackage ../development/python-modules/unittest-xml-reporting { };
+
+  unpaddedbase64 = callPackage ../development/python-modules/unpaddedbase64 { };
+
+  unrardll = callPackage ../development/python-modules/unrardll { };
+
+  unrpa = callPackage ../development/python-modules/unrpa { };
+
+  untangle = callPackage ../development/python-modules/untangle { };
+
+  untokenize = callPackage ../development/python-modules/untokenize { };
+
+  uonet-request-signer-hebe = callPackage ../development/python-modules/uonet-request-signer-hebe { };
+
+  upass = callPackage ../development/python-modules/upass { };
+
+  upb-lib = callPackage ../development/python-modules/upb-lib { };
+
+  upcloud-api = callPackage ../development/python-modules/upcloud-api { };
+
+  update_checker = callPackage ../development/python-modules/update_checker { };
+
+  update-copyright = callPackage ../development/python-modules/update-copyright { };
+
+  update-dotdee = callPackage ../development/python-modules/update-dotdee { };
+
+  upnpy = callPackage ../development/python-modules/upnpy { };
+
+  uproot = callPackage ../development/python-modules/uproot { };
+
+  uproot3 = callPackage ../development/python-modules/uproot3 { };
+
+  uproot3-methods = callPackage ../development/python-modules/uproot3-methods { };
+
+  uptime = callPackage ../development/python-modules/uptime { };
+
+  uptime-kuma-monitor = callPackage ../development/python-modules/uptime-kuma-monitor { };
+
+  uranium = callPackage ../development/python-modules/uranium { };
+
+  uritemplate = callPackage ../development/python-modules/uritemplate { };
+
+  uritools = callPackage ../development/python-modules/uritools { };
+
+  url-normalize = callPackage ../development/python-modules/url-normalize { };
+
+  urlextract = callPackage ../development/python-modules/urlextract { };
+
+  urlgrabber = callPackage ../development/python-modules/urlgrabber { };
+
+  urllib3 = callPackage ../development/python-modules/urllib3 { };
+
+  urlpy = callPackage ../development/python-modules/urlpy { };
+
+  urwid = callPackage ../development/python-modules/urwid { };
+
+  urwidtrees = callPackage ../development/python-modules/urwidtrees { };
+
+  urwid-readline = callPackage ../development/python-modules/urwid-readline { };
+
+  usbtmc = callPackage ../development/python-modules/usbtmc { };
+
+  us = callPackage ../development/python-modules/us { };
+
+  user-agents = callPackage ../development/python-modules/user-agents { };
+
+  userpath = callPackage ../development/python-modules/userpath { };
+
+  ush = callPackage ../development/python-modules/ush { };
+
+  utils = callPackage ../development/python-modules/utils { };
+
+  uuid = callPackage ../development/python-modules/uuid { };
+
+  uvcclient = callPackage ../development/python-modules/uvcclient { };
+
+  uvicorn = callPackage ../development/python-modules/uvicorn { };
+
+  uvloop = callPackage ../development/python-modules/uvloop {
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
+  };
+
+  validate-email = callPackage ../development/python-modules/validate-email { };
+
+  validators = callPackage ../development/python-modules/validators { };
+
+  validictory = callPackage ../development/python-modules/validictory { };
+
+  variants = callPackage ../development/python-modules/variants { };
+
+  varint = callPackage ../development/python-modules/varint { };
+
+  vcrpy = callPackage ../development/python-modules/vcrpy { };
+
+  vcver = callPackage ../development/python-modules/vcver { };
+
+  vcversioner = callPackage ../development/python-modules/vcversioner { };
+
+  vdf = callPackage ../development/python-modules/vdf { };
+
+  vdirsyncer = callPackage ../development/python-modules/vdirsyncer { };
+
+  vehicle = callPackage ../development/python-modules/vehicle { };
+
+  vega = callPackage ../development/python-modules/vega { };
+
+  vega_datasets = callPackage ../development/python-modules/vega_datasets { };
+
+  venstarcolortouch = callPackage ../development/python-modules/venstarcolortouch { };
+
+  venusian = callPackage ../development/python-modules/venusian { };
+
+  velbus-aio = callPackage ../development/python-modules/velbus-aio { };
+
+  verboselogs = callPackage ../development/python-modules/verboselogs { };
+
+  versioneer = callPackage ../development/python-modules/versioneer { };
+
+  versionfinder = callPackage ../development/python-modules/versionfinder { };
+
+  versiontag = callPackage ../development/python-modules/versiontag { };
+
+  versiontools = callPackage ../development/python-modules/versiontools { };
+
+  vertica-python = callPackage ../development/python-modules/vertica-python { };
+
+  veryprettytable = callPackage ../development/python-modules/veryprettytable { };
+
+  videocr = callPackage ../development/python-modules/videocr { };
+
+  vidstab = callPackage ../development/python-modules/vidstab { };
+
+  ViennaRNA = toPythonModule pkgs.ViennaRNA;
+
+  viewstate = callPackage ../development/python-modules/viewstate { };
+
+  vilfo-api-client = callPackage ../development/python-modules/vilfo-api-client { };
+
+  vincenty = callPackage ../development/python-modules/vincenty { };
+
+  vine = callPackage ../development/python-modules/vine { };
+
+  virtkey = callPackage ../development/python-modules/virtkey { };
+
+  virtual-display = callPackage ../development/python-modules/virtual-display { };
+
+  virtualenv = callPackage ../development/python-modules/virtualenv { };
+
+  virtualenv-clone = callPackage ../development/python-modules/virtualenv-clone { };
+
+  virtualenvwrapper = callPackage ../development/python-modules/virtualenvwrapper { };
+
+  visitor = callPackage ../development/python-modules/visitor { };
+
+  vispy = callPackage ../development/python-modules/vispy { };
+
+  vivisect = callPackage ../development/python-modules/vivisect { };
+
+  viv-utils = callPackage ../development/python-modules/viv-utils { };
+
+  vmprof = callPackage ../development/python-modules/vmprof { };
+
+  vncdo = callPackage ../development/python-modules/vncdo { };
+
+  vobject = callPackage ../development/python-modules/vobject { };
+
+  volkszaehler = callPackage ../development/python-modules/volkszaehler { };
+
+  voluptuous = callPackage ../development/python-modules/voluptuous { };
+
+  voluptuous-serialize = callPackage ../development/python-modules/voluptuous-serialize { };
+
+  volvooncall = callPackage ../development/python-modules/volvooncall { };
+
+  vowpalwabbit = callPackage ../development/python-modules/vowpalwabbit { };
+
+  vpk = callPackage ../development/python-modules/vpk { };
+
+  vsts = callPackage ../development/python-modules/vsts { };
+
+  vsts-cd-manager = callPackage ../development/python-modules/vsts-cd-manager { };
+
+  vsure = callPackage ../development/python-modules/vsure { };
+
+  vt-py = callPackage ../development/python-modules/vt-py { };
+
+  vtk = toPythonModule (pkgs.vtk.override {
+    pythonInterpreter = python;
+    enablePython = true;
+  });
+
+  vulcan-api = callPackage ../development/python-modules/vulcan-api { };
+
+  vultr = callPackage ../development/python-modules/vultr { };
+
+  vulture = callPackage ../development/python-modules/vulture { };
+
+  vxi11 = callPackage ../development/python-modules/vxi11 { };
+
+  vyper = callPackage ../development/compilers/vyper { };
+
+  w3lib = callPackage ../development/python-modules/w3lib { };
+
+  wadllib = callPackage ../development/python-modules/wadllib { };
+
+  waitress = callPackage ../development/python-modules/waitress { };
+
+  waitress-django = callPackage ../development/python-modules/waitress-django { };
+
+  wakeonlan = callPackage ../development/python-modules/wakeonlan { };
+
+  wallbox = callPackage ../development/python-modules/wallbox { };
+
+  Wand = callPackage ../development/python-modules/Wand { };
+
+  wandb = callPackage ../development/python-modules/wandb { };
+
+  warcio = callPackage ../development/python-modules/warcio { };
+
+  warlock = callPackage ../development/python-modules/warlock { };
+
+  warrant = callPackage ../development/python-modules/warrant { };
+
+  warrant-lite = callPackage ../development/python-modules/warrant-lite { };
+
+  waqiasync = callPackage ../development/python-modules/waqiasync { };
+
+  wasabi = callPackage ../development/python-modules/wasabi { };
+
+  wasm = callPackage ../development/python-modules/wasm { };
+
+  wasmerPackages = pkgs.recurseIntoAttrs (callPackage ../development/python-modules/wasmer { });
+  inherit (self.wasmerPackages) wasmer wasmer-compiler-cranelift wasmer-compiler-llvm wasmer-compiler-singlepass;
+
+  watchdog = callPackage ../development/python-modules/watchdog {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices;
+  };
+
+  watchgod = callPackage ../development/python-modules/watchgod { };
+
+  waterfurnace = callPackage ../development/python-modules/waterfurnace { };
+
+  watermark = callPackage ../development/python-modules/watermark { };
+
+  wavedrom = callPackage ../development/python-modules/wavedrom { };
+
+  wavefile = callPackage ../development/python-modules/wavefile { };
+
+  wavinsentio = callPackage ../development/python-modules/wavinsentio { };
+
+  wazeroutecalculator = callPackage ../development/python-modules/wazeroutecalculator { };
+
+  wcmatch = callPackage ../development/python-modules/wcmatch { };
+
+  wcwidth = callPackage ../development/python-modules/wcwidth { };
+
+  weasyprint = callPackage ../development/python-modules/weasyprint { };
+
+  webargs = callPackage ../development/python-modules/webargs { };
+
+  webapp2 = callPackage ../development/python-modules/webapp2 { };
+
+  webassets = callPackage ../development/python-modules/webassets { };
+
+  web = callPackage ../development/python-modules/web { };
+
+  web-cache = callPackage ../development/python-modules/web-cache { };
+
+  webcolors = callPackage ../development/python-modules/webcolors { };
+
+  webdavclient3 = callPackage ../development/python-modules/webdavclient3 { };
+
+  webencodings = callPackage ../development/python-modules/webencodings { };
+
+  webexteamssdk = callPackage ../development/python-modules/webexteamssdk { };
+
+  webhelpers = callPackage ../development/python-modules/webhelpers { };
+
+  webob = callPackage ../development/python-modules/webob { };
+
+  weboob = callPackage ../development/python-modules/weboob { };
+
+  webrtcvad = callPackage ../development/python-modules/webrtcvad { };
+
+  websocket-client = callPackage ../development/python-modules/websocket-client { };
+
+  websockets = callPackage ../development/python-modules/websockets { };
+
+  websockify = callPackage ../development/python-modules/websockify { };
+
+  webssh = callPackage ../development/python-modules/webssh { };
+
+  webtest = callPackage ../development/python-modules/webtest { };
+
+  webtest-aiohttp = callPackage ../development/python-modules/webtest-aiohttp { };
+
+  webthing = callPackage ../development/python-modules/webthing { };
+
+  weconnect = callPackage ../development/python-modules/weconnect { };
+
+  weconnect-mqtt = callPackage ../development/python-modules/weconnect-mqtt { };
+
+  werkzeug = callPackage ../development/python-modules/werkzeug { };
+
+  west = callPackage ../development/python-modules/west { };
+
+  wfuzz = callPackage ../development/python-modules/wfuzz { };
+
+  wget = callPackage ../development/python-modules/wget { };
+
+  wheel = callPackage ../development/python-modules/wheel { };
+
+  wheel-filename = callPackage ../development/python-modules/wheel-filename { };
+
+  wheel-inspect = callPackage ../development/python-modules/wheel-inspect { };
+
+  whichcraft = callPackage ../development/python-modules/whichcraft { };
+
+  whirlpool-sixth-sense = callPackage ../development/python-modules/whirlpool-sixth-sense { };
+
+  whisper = callPackage ../development/python-modules/whisper { };
+
+  whitenoise = callPackage ../development/python-modules/whitenoise { };
+
+  whodap = callPackage ../development/python-modules/whodap { };
+
+  whois = callPackage ../development/python-modules/whois { };
+
+  whoosh = callPackage ../development/python-modules/whoosh { };
+
+  widgetsnbextension = callPackage ../development/python-modules/widgetsnbextension { };
+
+  wiffi = callPackage ../development/python-modules/wiffi { };
+
+  willow = callPackage ../development/python-modules/willow { };
+
+  winacl = callPackage ../development/python-modules/winacl { };
+
+  winsspi = callPackage ../development/python-modules/winsspi { };
+
+  wled = callPackage ../development/python-modules/wled { };
+
+  woob = callPackage ../development/python-modules/woob { };
+
+  woodblock = callPackage ../development/python-modules/woodblock { };
+
+  word2vec = callPackage ../development/python-modules/word2vec { };
+
+  wordcloud = callPackage ../development/python-modules/wordcloud { };
+
+  wordfreq = callPackage ../development/python-modules/wordfreq { };
+
+  worldengine = callPackage ../development/python-modules/worldengine { };
+
+  wrapio = callPackage ../development/python-modules/wrapio { };
+
+  wrapt = callPackage ../development/python-modules/wrapt { };
+
+  wrf-python = callPackage ../development/python-modules/wrf-python { };
+
+  ws4py = callPackage ../development/python-modules/ws4py { };
+
+  wsdiscovery = callPackage ../development/python-modules/wsdiscovery { };
+
+  wsgi-intercept = callPackage ../development/python-modules/wsgi-intercept { };
+
+  wsgiprox = callPackage ../development/python-modules/wsgiprox { };
+
+  wsgiproxy2 = callPackage ../development/python-modules/wsgiproxy2 { };
+
+  wsgitools = callPackage ../development/python-modules/wsgitools { };
+
+  WSME = callPackage ../development/python-modules/WSME { };
+
+  wsnsimpy = callPackage ../development/python-modules/wsnsimpy { };
+
+  wsproto = callPackage ../development/python-modules/wsproto { };
+
+  wtforms = callPackage ../development/python-modules/wtforms { };
+
+  wtf-peewee = callPackage ../development/python-modules/wtf-peewee { };
+
+  wurlitzer = callPackage ../development/python-modules/wurlitzer { };
+
+  wxPython_4_0 = callPackage ../development/python-modules/wxPython/4.0.nix {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AudioToolbox Carbon Cocoa CoreFoundation IOKit OpenGL;
+    wxGTK = pkgs.wxGTK30.override {
+      withGtk2 = false;
+      withWebKit = true;
+    };
+  };
+
+  wxPython_4_1 = callPackage ../development/python-modules/wxPython/4.1.nix {
+    wxGTK = pkgs.wxGTK31.override {
+      withGtk2 = false;
+      withWebKit = true;
+    };
+  };
+
+  x11_hash = callPackage ../development/python-modules/x11_hash { };
+
+  x256 = callPackage ../development/python-modules/x256 { };
+
+  xapian = callPackage ../development/python-modules/xapian {
+    inherit (pkgs) xapian;
+  };
+
+  xapp = callPackage ../development/python-modules/xapp {
+    inherit (pkgs) gtk3 gobject-introspection polkit;
+    inherit (pkgs.cinnamon) xapps;
+  };
+
+  xarray = callPackage ../development/python-modules/xarray { };
+
+  xattr = callPackage ../development/python-modules/xattr { };
+
+  xbox-webapi = callPackage ../development/python-modules/xbox-webapi { };
+
+  xboxapi = callPackage ../development/python-modules/xboxapi { };
+
+  xcffib = callPackage ../development/python-modules/xcffib { };
+
+  xdg = callPackage ../development/python-modules/xdg { };
+
+  xdis = callPackage ../development/python-modules/xdis { };
+
+  xdot = callPackage ../development/python-modules/xdot {
+    inherit (pkgs) graphviz;
+  };
+
+  xgboost = callPackage ../development/python-modules/xgboost {
+    inherit (pkgs) xgboost;
+  };
+
+  xhtml2pdf = callPackage ../development/python-modules/xhtml2pdf { };
+
+  xkbcommon = callPackage ../development/python-modules/xkbcommon { };
+
+  xkcdpass = callPackage ../development/python-modules/xkcdpass { };
+
+  xknx = callPackage ../development/python-modules/xknx { };
+
+  xlib = callPackage ../development/python-modules/xlib { };
+
+  xlrd = callPackage ../development/python-modules/xlrd { };
+
+  xlsx2csv = callPackage ../development/python-modules/xlsx2csv { };
+
+  XlsxWriter = callPackage ../development/python-modules/XlsxWriter { };
+
+  xlwt = callPackage ../development/python-modules/xlwt { };
+
+  xmind = callPackage ../development/python-modules/xmind { };
+
+  xml2rfc = callPackage ../development/python-modules/xml2rfc { };
+
+  xmldiff = callPackage ../development/python-modules/xmldiff { };
+
+  xmljson = callPackage ../development/python-modules/xmljson { };
+
+  xmlschema = callPackage ../development/python-modules/xmlschema { };
+
+  xmlsec = callPackage ../development/python-modules/xmlsec {
+    inherit (pkgs) libxslt libxml2 libtool pkg-config xmlsec;
+  };
+
+  xmltodict = callPackage ../development/python-modules/xmltodict { };
+
+  xml-marshaller = callPackage ../development/python-modules/xml-marshaller { };
+
+  xmodem = callPackage ../development/python-modules/xmodem { };
+
+  xnd = callPackage ../development/python-modules/xnd { };
+
+  xpath-expressions = callPackage ../development/python-modules/xpath-expressions { };
+
+  xpybutil = callPackage ../development/python-modules/xpybutil { };
+
+  xstatic-bootbox = callPackage ../development/python-modules/xstatic-bootbox { };
+
+  xstatic-bootstrap = callPackage ../development/python-modules/xstatic-bootstrap { };
+
+  xstatic = callPackage ../development/python-modules/xstatic { };
+
+  xstatic-jquery = callPackage ../development/python-modules/xstatic-jquery { };
+
+  xstatic-jquery-file-upload = callPackage ../development/python-modules/xstatic-jquery-file-upload { };
+
+  xstatic-jquery-ui = callPackage ../development/python-modules/xstatic-jquery-ui { };
+
+  xstatic-pygments = callPackage ../development/python-modules/xstatic-pygments { };
+
+  xtensor-python = callPackage ../development/python-modules/xtensor-python { };
+
+  xvfbwrapper = callPackage ../development/python-modules/xvfbwrapper {
+    inherit (pkgs.xorg) xorgserver;
+  };
+
+  xxh = callPackage ../tools/networking/xxh { };
+
+  xxhash = callPackage ../development/python-modules/xxhash { };
+
+  yahooweather = callPackage ../development/python-modules/yahooweather { };
+
+  yalesmartalarmclient = callPackage ../development/python-modules/yalesmartalarmclient { };
+
+  yalexs = callPackage ../development/python-modules/yalexs { };
+
+  yamale = callPackage ../development/python-modules/yamale { };
+
+  yamlfix = callPackage ../development/python-modules/yamlfix { };
+
+  yamllint = callPackage ../development/python-modules/yamllint { };
+
+  yamlloader = callPackage ../development/python-modules/yamlloader { };
+
+  yamlordereddictloader = callPackage ../development/python-modules/yamlordereddictloader { };
+
+  yanc = callPackage ../development/python-modules/yanc { };
+
+  yangson = callPackage ../development/python-modules/yangson { };
+
+  yapf = callPackage ../development/python-modules/yapf { };
+
+  yappi = callPackage ../development/python-modules/yappi { };
+
+  Yapsy = callPackage ../development/python-modules/yapsy { };
+
+  yara-python = callPackage ../development/python-modules/yara-python { };
+
+  yarg = callPackage ../development/python-modules/yarg { };
+
+  yarl = callPackage ../development/python-modules/yarl { };
+
+  yaspin = callPackage ../development/python-modules/yaspin { };
+
+  yaswfp = callPackage ../development/python-modules/yaswfp { };
+
+  yattag = callPackage ../development/python-modules/yattag { };
+
+  yacs = callPackage ../development/python-modules/yacs { };
+
+  ydiff = callPackage ../development/python-modules/ydiff { };
+
+  yeelight = callPackage ../development/python-modules/yeelight { };
+
+  yfinance = callPackage ../development/python-modules/yfinance { };
+
+  yoda = toPythonModule (pkgs.yoda.override { inherit python; });
+
+  youless-api = callPackage ../development/python-modules/youless-api { };
+
+  youtube-dl = callPackage ../tools/misc/youtube-dl { };
+
+  youtube-dl-light = callPackage ../tools/misc/youtube-dl {
+    ffmpegSupport = false;
+    phantomjsSupport = false;
+  };
+
+  yt-dlp = callPackage ../tools/misc/yt-dlp { };
+
+  yt-dlp-light = callPackage ../tools/misc/yt-dlp {
+    ffmpegSupport = false;
+    phantomjsSupport = false;
+  };
+
+  youtube-search = callPackage ../development/python-modules/youtube-search { };
+
+  youtube-search-python = callPackage ../development/python-modules/youtube-search-python { };
+
+  youtube-transcript-api = callPackage ../development/python-modules/youtube-transcript-api { };
+
+  yowsup = callPackage ../development/python-modules/yowsup { };
+
+  yq = callPackage ../development/python-modules/yq {
+    inherit (pkgs) jq;
+  };
+
+  ytmusicapi = callPackage ../development/python-modules/ytmusicapi { };
+
+  yubico-client = callPackage ../development/python-modules/yubico-client { };
+
+  z3c-checkversions = callPackage ../development/python-modules/z3c-checkversions { };
+
+  z3 = (toPythonModule (pkgs.z3.override {
+    inherit python;
+  })).python;
+
+  zake = callPackage ../development/python-modules/zake { };
+
+  zarr = callPackage ../development/python-modules/zarr { };
+
+  zc-buildout = callPackage ../development/python-modules/buildout { };
+
+  zc_lockfile = callPackage ../development/python-modules/zc_lockfile { };
+
+  zconfig = callPackage ../development/python-modules/zconfig { };
+
+  zcs = callPackage ../development/python-modules/zcs { };
+
+  zdaemon = callPackage ../development/python-modules/zdaemon { };
+
+  zeek = toPythonModule (pkgs.zeek.override {
+    python3 = python;
+  }).py;
+
+  zeep = callPackage ../development/python-modules/zeep { };
+
+  zeitgeist = (toPythonModule (pkgs.zeitgeist.override {
+    python3 = python;
+  })).py;
+
+  zeroc-ice = callPackage ../development/python-modules/zeroc-ice { };
+
+  zeroconf = callPackage ../development/python-modules/zeroconf { };
+
+  zerorpc = callPackage ../development/python-modules/zerorpc { };
+
+  zetup = callPackage ../development/python-modules/zetup { };
+
+  zeversolarlocal = callPackage ../development/python-modules/zeversolarlocal { };
+
+  zfec = callPackage ../development/python-modules/zfec { };
+
+  zha-quirks = callPackage ../development/python-modules/zha-quirks { };
+
+  zict = callPackage ../development/python-modules/zict { };
+
+  zigpy = callPackage ../development/python-modules/zigpy { };
+
+  zigpy-cc = callPackage ../development/python-modules/zigpy-cc { };
+
+  zigpy-deconz = callPackage ../development/python-modules/zigpy-deconz { };
+
+  zigpy-xbee = callPackage ../development/python-modules/zigpy-xbee { };
+
+  zigpy-zigate = callPackage ../development/python-modules/zigpy-zigate { };
+
+  zigpy-znp = callPackage ../development/python-modules/zigpy-znp { };
+
+  zimports = callPackage ../development/python-modules/zimports { };
+
+  zipfile36 = callPackage ../development/python-modules/zipfile36 { };
+
+  zipp = callPackage ../development/python-modules/zipp { };
+
+  zipstream = callPackage ../development/python-modules/zipstream { };
+
+  zipstream-new = callPackage ../development/python-modules/zipstream-new { };
+
+  zm-py = callPackage ../development/python-modules/zm-py { };
+
+  zodb = callPackage ../development/python-modules/zodb { };
+
+  zodbpickle = callPackage ../development/python-modules/zodbpickle { };
+
+  zope_broken = callPackage ../development/python-modules/zope_broken { };
+
+  zope_component = callPackage ../development/python-modules/zope_component { };
+
+  zope_configuration = callPackage ../development/python-modules/zope_configuration { };
+
+  zope_contenttype = callPackage ../development/python-modules/zope_contenttype { };
+
+  zope_copy = callPackage ../development/python-modules/zope_copy { };
+
+  zope-deferredimport = callPackage ../development/python-modules/zope-deferredimport { };
+
+  zope_deprecation = callPackage ../development/python-modules/zope_deprecation { };
+
+  zope_dottedname = callPackage ../development/python-modules/zope_dottedname { };
+
+  zope_event = callPackage ../development/python-modules/zope_event { };
+
+  zope_exceptions = callPackage ../development/python-modules/zope_exceptions { };
+
+  zope_filerepresentation = callPackage ../development/python-modules/zope_filerepresentation { };
+
+  zope-hookable = callPackage ../development/python-modules/zope-hookable { };
+
+  zope_i18nmessageid = callPackage ../development/python-modules/zope_i18nmessageid { };
+
+  zope_interface = callPackage ../development/python-modules/zope_interface { };
+
+  zope_lifecycleevent = callPackage ../development/python-modules/zope_lifecycleevent { };
+
+  zope_location = callPackage ../development/python-modules/zope_location { };
+
+  zope_proxy = callPackage ../development/python-modules/zope_proxy { };
+
+  zope_schema = callPackage ../development/python-modules/zope_schema { };
+
+  zope_size = callPackage ../development/python-modules/zope_size { };
+
+  zope_testing = callPackage ../development/python-modules/zope_testing { };
+
+  zope_testrunner = callPackage ../development/python-modules/zope_testrunner { };
+
+  zopfli = callPackage ../development/python-modules/zopfli {
+    inherit (pkgs) zopfli;
+  };
+
+  zstandard = callPackage ../development/python-modules/zstandard { };
+
+  zstd = callPackage ../development/python-modules/zstd {
+    inherit (pkgs) zstd;
+  };
+
+  zulip = callPackage ../development/python-modules/zulip { };
+
+  zwave-js-server-python = callPackage ../development/python-modules/zwave-js-server-python { };
+
+  zxcvbn = callPackage ../development/python-modules/zxcvbn { };
+}
diff --git a/nixpkgs/pkgs/top-level/python2-packages.nix b/nixpkgs/pkgs/top-level/python2-packages.nix
new file mode 100644
index 000000000000..224acec1625f
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/python2-packages.nix
@@ -0,0 +1,183 @@
+# Extension with Python 2 packages that is overlayed on top
+# of the Python 3 packages set. This way, Python 2+3 compatible
+# packages can still be used.
+
+self: super:
+
+with self; with super; {
+
+  bootstrapped-pip = callPackage ../development/python2-modules/bootstrapped-pip { };
+
+  boto3 = callPackage ../development/python2-modules/boto3 {};
+
+  botocore = callPackage ../development/python2-modules/botocore {};
+
+  certifi = callPackage ../development/python2-modules/certifi { };
+
+  chardet = callPackage ../development/python2-modules/chardet { };
+
+  cheetah = callPackage ../development/python2-modules/cheetah { };
+
+  click = callPackage ../development/python2-modules/click { };
+
+  configparser = callPackage ../development/python2-modules/configparser { };
+
+  construct = callPackage ../development/python2-modules/construct { };
+
+  contextlib2 = callPackage ../development/python2-modules/contextlib2 { };
+
+  coverage = callPackage ../development/python2-modules/coverage { };
+
+  cryptography = callPackage ../development/python2-modules/cryptography { };
+
+  cryptography_vectors = callPackage ../development/python2-modules/cryptography-vectors { };
+
+  decorator = callPackage ../development/python2-modules/decorator { };
+
+  enum = callPackage ../development/python2-modules/enum { };
+
+  filelock =  callPackage ../development/python2-modules/filelock { };
+
+  flask = callPackage ../development/python2-modules/flask { };
+
+  freezegun = callPackage ../development/python2-modules/freezegun { };
+
+  futures = callPackage ../development/python2-modules/futures { };
+
+  google-apputils = callPackage ../development/python2-modules/google-apputils { };
+
+  gtkme = callPackage ../development/python2-modules/gtkme { };
+
+  httpretty = callPackage ../development/python2-modules/httpretty { };
+
+  hypothesis = callPackage ../development/python2-modules/hypothesis { };
+
+  idna = callPackage ../development/python2-modules/idna { };
+
+  importlib-metadata = callPackage ../development/python2-modules/importlib-metadata { };
+
+  ipaddr = callPackage ../development/python2-modules/ipaddr { };
+
+  itsdangerous = callPackage ../development/python2-modules/itsdangerous { };
+
+  jinja2 = callPackage ../development/python2-modules/jinja2 { };
+
+  libcloud = callPackage ../development/python2-modules/libcloud { };
+
+  lpod = callPackage ../development/python2-modules/lpod { };
+
+  marisa = callPackage ../development/python2-modules/marisa {
+    inherit (pkgs) marisa;
+  };
+
+  markdown = callPackage ../development/python2-modules/markdown { };
+
+  markupsafe = callPackage ../development/python2-modules/markupsafe { };
+
+  mock = callPackage ../development/python2-modules/mock { };
+
+  more-itertools = callPackage ../development/python2-modules/more-itertools { };
+
+  mutagen = callPackage ../development/python2-modules/mutagen { };
+
+  numpy = callPackage ../development/python2-modules/numpy { };
+
+  packaging = callPackage ../development/python2-modules/packaging { };
+
+  pillow = callPackage ../development/python2-modules/pillow {
+    inherit (pkgs) freetype libjpeg zlib libtiff libwebp tcl lcms2 tk;
+    inherit (pkgs.xorg) libX11;
+  };
+
+  pip = callPackage ../development/python2-modules/pip { };
+
+  pluggy = callPackage ../development/python2-modules/pluggy { };
+
+  prettytable = callPackage ../development/python2-modules/prettytable { };
+
+  protobuf = callPackage ../development/python2-modules/protobuf {
+    disabled = isPyPy;
+    protobuf = pkgs.protobuf3_17; # last version compatible with Python 2
+  };
+
+  pycairo = callPackage ../development/python2-modules/pycairo {
+    inherit (pkgs.buildPackages) meson;
+  };
+
+  pygments = callPackage ../development/python2-modules/Pygments { };
+
+  pygobject3 = callPackage ../development/python2-modules/pygobject {
+    inherit (pkgs) meson;
+  };
+
+  pygtk = callPackage ../development/python2-modules/pygtk { };
+
+  pyjwt = callPackage ../development/python2-modules/pyjwt { };
+
+  pyparsing = callPackage ../development/python2-modules/pyparsing { };
+
+  pyroma = callPackage ../development/python2-modules/pyroma { };
+
+  pysqlite = callPackage ../development/python2-modules/pysqlite { };
+
+  pytest = pytest_4;
+
+  pytest_4 = callPackage
+    ../development/python2-modules/pytest {
+      # hypothesis tests require pytest that causes dependency cycle
+      hypothesis = self.hypothesis.override {
+        doCheck = false;
+      };
+    };
+
+  pytest-runner = callPackage ../development/python2-modules/pytest-runner { };
+
+  pytest-xdist = callPackage ../development/python2-modules/pytest-xdist { };
+
+  pyyaml = callPackage ../development/python2-modules/pyyaml { };
+
+  qpid-python = callPackage ../development/python2-modules/qpid-python { };
+
+  recoll = disabled super.recoll;
+
+  rivet = disabled super.rivet;
+
+  rpm = disabled super.rpm;
+
+  s3transfer = callPackage ../development/python2-modules/s3transfer { };
+
+  scandir = callPackage ../development/python2-modules/scandir { };
+
+  sequoia = disabled super.sequoia;
+
+  setuptools = callPackage ../development/python2-modules/setuptools { };
+
+  setuptools-scm = callPackage ../development/python2-modules/setuptools-scm { };
+
+  sphinxcontrib-websupport = callPackage ../development/python2-modules/sphinxcontrib-websupport { };
+
+  sphinx = callPackage ../development/python2-modules/sphinx { };
+
+  TurboCheetah = callPackage ../development/python2-modules/TurboCheetah { };
+
+  typing = callPackage ../development/python2-modules/typing { };
+
+  urllib3 = callPackage ../development/python2-modules/urllib3 { };
+
+  werkzeug = callPackage ../development/python2-modules/werkzeug { };
+
+  wsproto = callPackage ../development/python2-modules/wsproto { };
+
+  wxPython30 = callPackage ../development/python2-modules/wxPython {
+    wxGTK = pkgs.wxGTK30;
+  };
+
+  wxPython = self.wxPython30;
+
+  vcrpy = callPackage ../development/python2-modules/vcrpy { };
+
+  zeek = disabled super.zeek;
+
+  zipp = callPackage ../development/python2-modules/zipp { };
+
+}
diff --git a/nixpkgs/pkgs/top-level/qt5-packages.nix b/nixpkgs/pkgs/top-level/qt5-packages.nix
new file mode 100644
index 000000000000..751236fdcb4b
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/qt5-packages.nix
@@ -0,0 +1,229 @@
+
+# Qt packages set.
+#
+# Attributes in this file are packages requiring Qt and will be made available
+# for every Qt version. Qt applications are called from `all-packages.nix` via
+# this file.
+
+
+{ lib
+, pkgs
+, qt5
+}:
+
+(lib.makeScope pkgs.newScope ( self:
+
+let
+  libsForQt5 = self;
+  callPackage = self.callPackage;
+
+  kdeFrameworks = let
+    mkFrameworks = import ../development/libraries/kde-frameworks;
+    attrs = {
+      inherit libsForQt5;
+      inherit (pkgs) lib fetchurl;
+    };
+  in (lib.makeOverridable mkFrameworks attrs);
+
+  plasma5 = let
+    mkPlasma5 = import ../desktops/plasma-5;
+    attrs = {
+      inherit libsForQt5;
+      inherit (pkgs) config lib fetchurl;
+      gconf = pkgs.gnome2.GConf;
+      inherit (pkgs) gsettings-desktop-schemas;
+    };
+  in (lib.makeOverridable mkPlasma5 attrs);
+
+  kdeGear = let
+    mkGear = import ../applications/kde;
+    attrs = {
+      inherit libsForQt5;
+      inherit (pkgs) lib fetchurl;
+    };
+  in (lib.makeOverridable mkGear attrs);
+
+  plasmaMobileGear = let
+    mkPlamoGear = import ../applications/plasma-mobile;
+    attrs = {
+      inherit libsForQt5;
+      inherit (pkgs) lib fetchurl;
+    };
+  in (lib.makeOverridable mkPlamoGear attrs);
+
+in (kdeFrameworks // plasmaMobileGear // plasma5 // plasma5.thirdParty // kdeGear // qt5 // {
+
+  inherit kdeFrameworks plasmaMobileGear plasma5 kdeGear qt5;
+
+  # Alias for backwards compatibility. Added 2021-05-07.
+  kdeApplications = kdeGear;
+
+  ### LIBRARIES
+
+  accounts-qt = callPackage ../development/libraries/accounts-qt { };
+
+  alkimia = callPackage ../development/libraries/alkimia { };
+
+  applet-window-buttons = callPackage ../development/libraries/applet-window-buttons { };
+
+  appstream-qt = callPackage ../development/libraries/appstream/qt.nix { };
+
+  dxflib = callPackage ../development/libraries/dxflib {};
+
+  drumstick = callPackage ../development/libraries/drumstick { };
+
+  fcitx-qt5 = callPackage ../tools/inputmethods/fcitx/fcitx-qt5.nix { };
+
+  fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { };
+
+  qgpgme = callPackage ../development/libraries/gpgme { };
+
+  grantlee = callPackage ../development/libraries/grantlee/5 { };
+
+  qtcurve = callPackage ../data/themes/qtcurve {};
+
+  herqq = callPackage ../development/libraries/herqq { };
+
+  kdb = callPackage ../development/libraries/kdb { };
+
+  kde2-decoration = callPackage ../data/themes/kde2 { };
+
+  kcolorpicker = callPackage ../development/libraries/kcolorpicker { };
+
+  kdiagram = callPackage ../development/libraries/kdiagram { };
+
+  kdsoap = callPackage ../development/libraries/kdsoap { };
+
+  kf5gpgmepp = callPackage ../development/libraries/kf5gpgmepp { };
+
+  kirigami-addons = libsForQt5.callPackage ../development/libraries/kirigami-addons { };
+
+  kimageannotator = callPackage ../development/libraries/kimageannotator { };
+
+  kproperty = callPackage ../development/libraries/kproperty { };
+
+  kpeoplevcard = callPackage ../development/libraries/kpeoplevcard { };
+
+  kreport = callPackage ../development/libraries/kreport { };
+
+  kquickimageedit = callPackage ../development/libraries/kquickimageedit { };
+
+  kweathercore = libsForQt5.callPackage ../development/libraries/kweathercore { };
+
+  ldutils = callPackage ../development/libraries/ldutils { };
+
+  libcommuni = callPackage ../development/libraries/libcommuni { };
+
+  libdbusmenu = callPackage ../development/libraries/libdbusmenu-qt/qt-5.5.nix { };
+
+  liblastfm = callPackage ../development/libraries/liblastfm { };
+
+  libopenshot = callPackage ../applications/video/openshot-qt/libopenshot.nix { };
+
+  packagekit-qt = callPackage ../tools/package-management/packagekit/qt.nix { };
+
+  libopenshot-audio = callPackage ../applications/video/openshot-qt/libopenshot-audio.nix {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AGL Cocoa Foundation;
+  };
+
+  libqglviewer = callPackage ../development/libraries/libqglviewer {
+    inherit (pkgs.darwin.apple_sdk.frameworks) AGL;
+  };
+
+  libqofono = callPackage ../development/libraries/libqofono { };
+
+  libqtav = callPackage ../development/libraries/libqtav { };
+
+  libqaccessibilityclient = callPackage ../development/libraries/libqaccessibilityclient { };
+
+  kpmcore = callPackage ../development/libraries/kpmcore { };
+
+  mapbox-gl-native = libsForQt5.callPackage ../development/libraries/mapbox-gl-native { };
+
+  mapbox-gl-qml = libsForQt5.callPackage ../development/libraries/mapbox-gl-qml { };
+
+  mauikit = callPackage ../development/libraries/mauikit { };
+
+  mauikit-filebrowsing = callPackage ../development/libraries/mauikit-filebrowsing { };
+
+  mlt = callPackage ../development/libraries/mlt/qt-5.nix { };
+
+  openbr = callPackage ../development/libraries/openbr { };
+
+  phonon = callPackage ../development/libraries/phonon { };
+
+  phonon-backend-gstreamer = callPackage ../development/libraries/phonon/backends/gstreamer.nix { };
+
+  phonon-backend-vlc = callPackage ../development/libraries/phonon/backends/vlc.nix { };
+
+  plasma-wayland-protocols = callPackage ../development/libraries/plasma-wayland-protocols { };
+
+  polkit-qt = callPackage ../development/libraries/polkit-qt-1 { };
+
+  poppler = callPackage ../development/libraries/poppler {
+    lcms = pkgs.lcms2;
+    qt5Support = true;
+    suffix = "qt5";
+  };
+
+  poppler_0_61 = callPackage ../development/libraries/poppler/0.61.nix {
+    lcms = pkgs.lcms2;
+    qt5Support = true;
+    suffix = "qt5";
+  };
+
+  pulseaudio-qt = callPackage ../development/libraries/pulseaudio-qt { };
+
+  qca-qt5 = callPackage ../development/libraries/qca-qt5 { };
+
+  qcoro = callPackage ../development/libraries/qcoro { };
+
+  qcsxcad = callPackage ../development/libraries/science/electronics/qcsxcad { };
+
+  qmltermwidget = callPackage ../development/libraries/qmltermwidget {
+    inherit (pkgs.darwin.apple_sdk.libs) utmp;
+  };
+
+  qmlbox2d = callPackage ../development/libraries/qmlbox2d { };
+
+  qoauth = callPackage ../development/libraries/qoauth { };
+
+  qscintilla = callPackage ../development/libraries/qscintilla { };
+
+  qt5ct = callPackage ../tools/misc/qt5ct { };
+
+  qtfeedback = callPackage ../development/libraries/qtfeedback { };
+
+  qtutilities = callPackage ../development/libraries/qtutilities { };
+
+  qtinstaller = callPackage ../development/libraries/qtinstaller { };
+
+  qtkeychain = callPackage ../development/libraries/qtkeychain {
+    inherit (pkgs.darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  qtpbfimageplugin = callPackage ../development/libraries/qtpbfimageplugin { };
+
+  qtstyleplugins = callPackage ../development/libraries/qtstyleplugins { };
+
+  qtstyleplugin-kvantum = callPackage ../development/libraries/qtstyleplugin-kvantum { };
+
+  quazip = callPackage ../development/libraries/quazip { };
+
+  qwt = callPackage ../development/libraries/qwt/6.nix { };
+
+  soqt = callPackage ../development/libraries/soqt { };
+
+  telepathy = callPackage ../development/libraries/telepathy/qt { };
+
+  qtwebkit-plugins = callPackage ../development/libraries/qtwebkit-plugins { };
+
+  # Not a library, but we do want it to be built for every qt version there
+  # is, to allow users to choose the right build if needed.
+  sddm = callPackage ../applications/display-managers/sddm { };
+
+  signond = callPackage ../development/libraries/signond {};
+
+  soundkonverter = callPackage ../applications/audio/soundkonverter {};
+
+})))
diff --git a/nixpkgs/pkgs/top-level/release-alternatives.nix b/nixpkgs/pkgs/top-level/release-alternatives.nix
new file mode 100644
index 000000000000..5e309a0129c3
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-alternatives.nix
@@ -0,0 +1,91 @@
+{ pkgsFun ? import ../..
+, lib ? import ../../lib
+, supportedSystems ? ["x86_64-linux"]
+, allowUnfree ? false }:
+
+let
+
+  # called BLAS here, but also tests LAPACK
+  blasUsers = [
+    # "julia_07" "julia_10" "julia_11" "julia_13" "octave" "octaveFull"
+    "fflas-ffpack" "linbox" "R" "ipopt" "hpl" "rspamd" "octopus"
+    "sundials" "superlu" "suitesparse_5_3" "suitesparse_4_4"
+    "suitesparse_4_2" "scs" "scalapack" "petsc" "cholmod-extra"
+    "arpack" "qrupdate" "libcint" "iml" "globalarrays" "arrayfire" "armadillo"
+    "xfitter" "lammps" "plink-ng" "quantum-espresso" "siesta"
+    "siesta-mpi" "shogun" "calculix" "csdp" "getdp" "giac" "gmsh" "jags"
+    "lammps" "lammps-mpi"
+
+    # requires openblas
+    # "caffe" "mxnet" "flint" "sage" "sageWithDoc"
+
+    # broken
+    # "gnss-sdr" "octave-jit" "openmodelica" "torch"
+
+    # subpackages
+    ["pythonPackages" "numpy"] ["pythonPackages" "prox-tv"] ["pythonPackages" "scs"]
+    ["pythonPackages" "pysparse"] ["pythonPackages" "cvxopt"]
+    # ["pythonPackages" "fenics"]
+    ["rPackages" "slfm"] ["rPackages" "SamplerCompare"]
+    # ["rPackages" "EMCluster"]
+    # ["ocamlPackages" "lacaml"]
+    # ["ocamlPackages" "owl"]
+    ["haskellPackages" "bindings-levmar"]
+  ] ++ lib.optionals allowUnfree [ "magma" ];
+  blas64Users = [
+    "rspamd" "suitesparse_5_3" "suitesparse_4_4"
+    "suitesparse_4_2" "petsc" "cholmod-extra"
+    "arpack" "qrupdate" "iml" "globalarrays" "arrayfire"
+    "xfitter" "lammps" "plink-ng" "quantum-espresso"
+    "calculix" "csdp" "getdp" "jags"
+    "lammps" "lammps-mpi"
+    # ["ocamlPackages" "lacaml"]
+    ["haskellPackages" "bindings-levmar"]
+  ] ++ lib.optionals allowUnfree [ "magma" ];
+  blasProviders = system: [ "openblasCompat" "lapack-reference" "openblas" ]
+    ++ lib.optionals (allowUnfree && system.isx86) ["mkl" "mkl64"];
+
+  blas64Providers = [ "mkl64" "openblas"];
+
+  mapListToAttrs = xs: f: builtins.listToAttrs (map (name: {
+    name = if builtins.isList name
+           then builtins.elemAt name (builtins.length name - 1)
+           else name;
+    value = f name;
+  }) xs);
+
+in
+
+{
+  blas = mapListToAttrs supportedSystems (system': let system = lib.systems.elaborate { system = system'; };
+    in mapListToAttrs (blasProviders system) (provider: let
+      isILP64 = builtins.elem provider (["mkl64"] ++ lib.optional system.is64bit "openblas");
+      pkgs = pkgsFun {
+        config = { inherit allowUnfree; };
+        system = system';
+        overlays = [(self: super: {
+          lapack = super.lapack.override {
+            lapackProvider = if provider == "mkl64"
+                             then super.mkl
+                             else builtins.getAttr provider super;
+            inherit isILP64;
+          };
+          blas = super.blas.override {
+            blasProvider = if provider == "mkl64"
+                           then super.mkl
+                           else builtins.getAttr provider super;
+            inherit isILP64;
+          };
+        })];
+      };
+    in mapListToAttrs (if builtins.elem provider blas64Providers
+                       then blas64Users else blasUsers)
+                      (attr: if builtins.isList attr
+                             then lib.getAttrFromPath attr pkgs
+                             else builtins.getAttr attr pkgs)
+
+        // { recurseForDerivations = true; })
+      // { recurseForDerivations = true; })
+    // { recurseForDerivations = true; };
+  recurseForDerivations = true;
+}
diff --git a/nixpkgs/pkgs/top-level/release-cross.nix b/nixpkgs/pkgs/top-level/release-cross.nix
new file mode 100644
index 000000000000..205558d666a1
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-cross.nix
@@ -0,0 +1,215 @@
+/* This file defines some basic smoke tests for cross compilation.
+*/
+
+{ # The platforms *from* which we cross compile.
+  supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ]
+, # Strip most of attributes when evaluating to spare memory usage
+  scrubJobs ? true
+, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
+  nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
+}:
+
+with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
+
+let
+  nativePlatforms = all;
+
+  embedded = {
+    buildPackages.binutils = nativePlatforms;
+    buildPackages.gcc = nativePlatforms;
+    libcCross = nativePlatforms;
+  };
+
+  common = {
+    buildPackages.binutils = nativePlatforms;
+    gmp = nativePlatforms;
+    libcCross = nativePlatforms;
+    nix = nativePlatforms;
+    nixUnstable = nativePlatforms;
+    mesa = nativePlatforms;
+  };
+
+  gnuCommon = lib.recursiveUpdate common {
+    buildPackages.gcc = nativePlatforms;
+    coreutils = nativePlatforms;
+    haskell.packages.ghcHEAD.hello = nativePlatforms;
+    haskellPackages.hello = nativePlatforms;
+  };
+
+  linuxCommon = lib.recursiveUpdate gnuCommon {
+    buildPackages.gdb = nativePlatforms;
+
+    bison = nativePlatforms;
+    busybox = nativePlatforms;
+    dropbear = nativePlatforms;
+    ed = nativePlatforms;
+    ncurses = nativePlatforms;
+    patch = nativePlatforms;
+  };
+
+  windowsCommon = lib.recursiveUpdate gnuCommon {
+    boehmgc = nativePlatforms;
+    guile_1_8 = nativePlatforms;
+    libffi = nativePlatforms;
+    libtool = nativePlatforms;
+    libunistring = nativePlatforms;
+    windows.wxMSW = nativePlatforms;
+    windows.mingw_w64_pthreads = nativePlatforms;
+  };
+
+  wasiCommon = {
+    gmp = nativePlatforms;
+    boehmgc = nativePlatforms;
+    hello = nativePlatforms;
+    zlib = nativePlatforms;
+  };
+
+  darwinCommon = {
+    buildPackages.binutils = darwin;
+  };
+
+  rpiCommon = linuxCommon // {
+    vim = nativePlatforms;
+    unzip = nativePlatforms;
+    ddrescue = nativePlatforms;
+    lynx = nativePlatforms;
+    patchelf = nativePlatforms;
+    buildPackages.binutils = nativePlatforms;
+    mpg123 = nativePlatforms;
+  };
+in
+
+{
+  # These derivations from a cross package set's `buildPackages` should be
+  # identical to their vanilla equivalents --- none of these package should
+  # observe the target platform which is the only difference between those
+  # package sets.
+  ensureUnaffected = let
+    # Absurd values are fine here, as we are not building anything. In fact,
+    # there probably a good idea to try to be "more parametric" --- i.e. avoid
+    # any special casing.
+    crossSystem = {
+      config = "mips64el-apple-windows-gnu";
+      libc = "glibc";
+    };
+
+    # Converting to a string (drv path) before checking equality is probably a
+    # good idea lest there be some irrelevant pass-through debug attrs that
+    # cause false negatives.
+    testEqualOne = path: system: let
+      f = path: crossSystem: system: builtins.toString (lib.getAttrFromPath path (pkgsForCross crossSystem system));
+    in assertTrue (
+        f path null system
+        ==
+        f (["buildPackages"] ++ path) crossSystem system
+      );
+
+    testEqual = path: systems: forMatchingSystems systems (testEqualOne path);
+
+    mapTestEqual = lib.mapAttrsRecursive testEqual;
+
+  in mapTestEqual {
+    boehmgc = nativePlatforms;
+    libffi = nativePlatforms;
+    libiconv = nativePlatforms;
+    libtool = nativePlatforms;
+    zlib = nativePlatforms;
+    readline = nativePlatforms;
+    libxml2 = nativePlatforms;
+    guile = nativePlatforms;
+  };
+
+  crossIphone64 = mapTestOnCross lib.systems.examples.iphone64 darwinCommon;
+
+  crossIphone32 = mapTestOnCross lib.systems.examples.iphone32 darwinCommon;
+
+  /* Test some cross builds to the Sheevaplug */
+  crossSheevaplugLinux = mapTestOnCross lib.systems.examples.sheevaplug (linuxCommon // {
+    ubootSheevaplug = nativePlatforms;
+  });
+
+  /* Test some cross builds on 32 bit mingw-w64 */
+  crossMingw32 = mapTestOnCross lib.systems.examples.mingw32 windowsCommon;
+
+  /* Test some cross builds on 64 bit mingw-w64 */
+  crossMingwW64 = mapTestOnCross lib.systems.examples.mingwW64 windowsCommon;
+
+  /* Linux on mipsel */
+  fuloongminipc = mapTestOnCross lib.systems.examples.fuloongminipc linuxCommon;
+  ben-nanonote = mapTestOnCross lib.systems.examples.ben-nanonote linuxCommon;
+
+  /* Javacript */
+  ghcjs = mapTestOnCross lib.systems.examples.ghcjs {
+    haskell.packages.ghcjs.hello = nativePlatforms;
+  };
+
+  /* Linux on Raspberrypi */
+  rpi = mapTestOnCross lib.systems.examples.raspberryPi rpiCommon;
+  rpi-musl = mapTestOnCross lib.systems.examples.muslpi rpiCommon;
+
+  /* Linux on the Remarkable */
+  remarkable1 = mapTestOnCross lib.systems.examples.remarkable1 linuxCommon;
+  remarkable2 = mapTestOnCross lib.systems.examples.remarkable2 linuxCommon;
+
+  /* Linux on armv7l-hf */
+  armv7l-hf = mapTestOnCross lib.systems.examples.armv7l-hf-multiplatform linuxCommon;
+  scaleway-c1 = mapTestOnCross lib.systems.examples.scaleway-c1 linuxCommon;
+
+  pogoplug4 = mapTestOnCross lib.systems.examples.pogoplug4 linuxCommon;
+
+  /* Linux on aarch64 */
+  aarch64 = mapTestOnCross lib.systems.examples.aarch64-multiplatform linuxCommon;
+  aarch64-musl = mapTestOnCross lib.systems.examples.aarch64-multiplatform-musl linuxCommon;
+
+  /* Linux on RISCV */
+  riscv64 = mapTestOnCross lib.systems.examples.riscv64 linuxCommon;
+  riscv32 = mapTestOnCross lib.systems.examples.riscv32 linuxCommon;
+
+  m68k = mapTestOnCross lib.systems.examples.m68k linuxCommon;
+  s390x = mapTestOnCross lib.systems.examples.s390x linuxCommon;
+
+  /* (Cross-compiled) Linux on x86 */
+  x86_64-musl = mapTestOnCross lib.systems.examples.musl64 linuxCommon;
+  x86_64-gnu = mapTestOnCross lib.systems.examples.gnu64 linuxCommon;
+  i686-musl = mapTestOnCross lib.systems.examples.musl32 linuxCommon;
+  i686-gnu = mapTestOnCross lib.systems.examples.gnu32 linuxCommon;
+
+  ppc64le = mapTestOnCross lib.systems.examples.powernv linuxCommon;
+  ppc64le-musl = mapTestOnCross lib.systems.examples.musl-power linuxCommon;
+
+  android64 = mapTestOnCross lib.systems.examples.aarch64-android-prebuilt linuxCommon;
+  android32 = mapTestOnCross lib.systems.examples.armv7a-android-prebuilt linuxCommon;
+
+  wasi32 = mapTestOnCross lib.systems.examples.wasi32 wasiCommon;
+
+  msp430 = mapTestOnCross lib.systems.examples.msp430 embedded;
+  mmix = mapTestOnCross lib.systems.examples.mmix embedded;
+  vc4 = mapTestOnCross lib.systems.examples.vc4 embedded;
+  or1k = mapTestOnCross lib.systems.examples.or1k embedded;
+  avr = mapTestOnCross lib.systems.examples.avr embedded;
+  arm-embedded = mapTestOnCross lib.systems.examples.arm-embedded embedded;
+  armhf-embedded = mapTestOnCross lib.systems.examples.armhf-embedded embedded;
+  aarch64-embedded = mapTestOnCross lib.systems.examples.aarch64-embedded embedded;
+  aarch64be-embedded = mapTestOnCross lib.systems.examples.aarch64be-embedded embedded;
+  powerpc-embedded = mapTestOnCross lib.systems.examples.ppc-embedded embedded;
+  powerpcle-embedded = mapTestOnCross lib.systems.examples.ppcle-embedded embedded;
+  i686-embedded = mapTestOnCross lib.systems.examples.i686-embedded embedded;
+  x86_64-embedded = mapTestOnCross lib.systems.examples.x86_64-embedded embedded;
+  riscv64-embedded = mapTestOnCross lib.systems.examples.riscv64 embedded;
+  riscv32-embedded = mapTestOnCross lib.systems.examples.riscv32 embedded;
+
+  x86_64-netbsd = mapTestOnCross lib.systems.examples.x86_64-netbsd common;
+
+  # we test `embedded` instead of `linuxCommon` because very few packages
+  # successfully cross-compile to Redox so far
+  x86_64-redox = mapTestOnCross lib.systems.examples.x86_64-unknown-redox embedded;
+
+  /* Cross-built bootstrap tools for every supported platform */
+  bootstrapTools = let
+    tools = import ../stdenv/linux/make-bootstrap-tools-cross.nix { system = "x86_64-linux"; };
+    maintainers = [ lib.maintainers.dezgeg ];
+    mkBootstrapToolsJob = drv:
+      assert lib.elem drv.system supportedSystems;
+      hydraJob' (lib.addMetaAttrs { inherit maintainers; } drv);
+  in lib.mapAttrsRecursiveCond (as: !lib.isDerivation as) (name: mkBootstrapToolsJob) tools;
+}
diff --git a/nixpkgs/pkgs/top-level/release-haskell.nix b/nixpkgs/pkgs/top-level/release-haskell.nix
new file mode 100644
index 000000000000..82828a3d611e
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-haskell.nix
@@ -0,0 +1,421 @@
+/*
+  This is the Hydra jobset for the `haskell-updates` branch in Nixpkgs.
+  You can see the status of this jobset at
+  https://hydra.nixos.org/jobset/nixpkgs/haskell-updates.
+
+  To debug this expression you can use `hydra-eval-jobs` from
+  `pkgs.hydra-unstable` which prints the jobset description
+  to `stdout`:
+
+  $ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
+*/
+{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ] }:
+
+let
+
+  releaseLib = import ./release-lib.nix {
+    inherit supportedSystems;
+  };
+
+  inherit (releaseLib)
+    lib
+    mapTestOn
+    packagePlatforms
+    pkgs
+    ;
+
+  # Helper function which traverses a (nested) set
+  # of derivations produced by mapTestOn and flattens
+  # it to a list of derivations suitable to be passed
+  # to `releaseTools.aggregate` as constituents.
+  # Removes all non derivations from the input jobList.
+  #
+  # accumulateDerivations :: [ Either Derivation AttrSet ] -> [ Derivation ]
+  #
+  # > accumulateDerivations [ drv1 "string" { foo = drv2; bar = { baz = drv3; }; } ]
+  # [ drv1 drv2 drv3 ]
+  accumulateDerivations = jobList:
+    lib.concatMap (
+      attrs:
+        if lib.isDerivation attrs
+        then [ attrs ]
+        else if lib.isAttrs attrs
+        then accumulateDerivations (lib.attrValues attrs)
+        else []
+    ) jobList;
+
+  # names of all subsets of `pkgs.haskell.packages`
+  compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
+
+  # list of all compilers to test specific packages on
+  released = with compilerNames; [
+    ghc884
+    ghc8107
+    ghc902
+    ghc921
+  ];
+
+  # packagePlatforms applied to `haskell.packages.*`
+  compilerPlatforms = lib.mapAttrs
+    (_: v: packagePlatforms v)
+    pkgs.haskell.packages;
+
+  # This function lets you specify specific packages
+  # which are to be tested on a list of specific GHC
+  # versions and returns a job set for all specified
+  # combinations. See `jobs` below for an example.
+  versionedCompilerJobs = config: mapTestOn {
+    haskell.packages =
+      (lib.mapAttrs (
+        ghc: jobs:
+        lib.filterAttrs (
+          jobName: platforms:
+          lib.elem ghc (config."${jobName}" or [])
+        ) jobs
+      ) compilerPlatforms);
+  };
+
+  # hydra jobs for `pkgs` of which we import a subset of
+  pkgsPlatforms = packagePlatforms pkgs;
+
+  # names of packages in an attribute set that are maintained
+  maintainedPkgNames = set: builtins.attrNames
+    (lib.filterAttrs (
+      _: v: builtins.length (v.meta.maintainers or []) > 0
+    ) set);
+
+  recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate {};
+
+  # Remove multiple elements from a list at once.
+  #
+  # removeMany
+  #   :: [a]  -- list of elements to remove
+  #   -> [a]  -- list of elements from which to remove
+  #   -> [a]
+  #
+  # > removeMany ["aarch64-linux" "x86_64-darwin"] ["aarch64-linux" "x86_64-darwin" "x86_64-linux"]
+  # ["x86_64-linux"]
+  removeMany = itemsToRemove: list: lib.foldr lib.remove list itemsToRemove;
+
+  # Recursively remove platforms from the values in an attribute set.
+  #
+  # removePlatforms
+  #   :: [String]
+  #   -> AttrSet
+  #   -> AttrSet
+  #
+  # > attrSet = {
+  #     foo = ["aarch64-linux" "x86_64-darwin" "x86_64-linux"];
+  #     bar.baz = ["aarch64-linux" "x86_64-linux"];
+  #     bar.quux = ["aarch64-linux" "x86_64-darwin"];
+  #   }
+  # > removePlatforms ["aarch64-linux" "x86_64-darwin"] attrSet
+  # {
+  #   foo = ["x86_64-linux"];
+  #   bar = {
+  #     baz = ["x86_64-linux"];
+  #     quux = [];
+  #   };
+  # }
+  removePlatforms = platformsToRemove: packageSet:
+    lib.mapAttrsRecursive
+      (_: val:
+        if lib.isList val
+          then removeMany platformsToRemove val
+          else val
+      )
+      packageSet;
+
+  jobs = recursiveUpdateMany [
+    (mapTestOn {
+      haskellPackages = packagePlatforms pkgs.haskellPackages;
+      haskell.compiler = packagePlatforms pkgs.haskell.compiler;
+
+      tests.haskell = packagePlatforms pkgs.tests.haskell;
+
+      nixosTests.agda = (packagePlatforms pkgs.nixosTests).agda;
+      agdaPackages = packagePlatforms pkgs.agdaPackages;
+
+      # top-level packages that depend on haskellPackages
+      inherit (pkgsPlatforms)
+        agda
+        arion
+        bench
+        bustle
+        blucontrol
+        cabal-install
+        cabal2nix
+        cachix
+        carp
+        cedille
+        client-ip-echo
+        darcs
+        dconf2nix
+        dhall
+        dhall-bash
+        dhall-docs
+        dhall-lsp-server
+        dhall-json
+        dhall-nix
+        dhall-text
+        diagrams-builder
+        elm2nix
+        fffuu
+        futhark
+        ghcid
+        git-annex
+        git-brunch
+        gitit
+        glirc
+        hadolint
+        haskell-ci
+        haskell-language-server
+        hasura-graphql-engine
+        hci
+        hercules-ci-agent
+        hinit
+        hedgewars
+        hledger
+        hledger-check-fancyassertions
+        hledger-iadd
+        hledger-interest
+        hledger-ui
+        hledger-web
+        hlint
+        hpack
+        # hyper-haskell  # depends on electron-10.4.7 which is marked as insecure
+        hyper-haskell-server-with-packages
+        icepeak
+        idris
+        ihaskell
+        jacinda
+        jl
+        koka
+        krank
+        lambdabot
+        madlang
+        matterhorn
+        mueval
+        neuron-notes
+        niv
+        nix-delegate
+        nix-deploy
+        nix-diff
+        nix-linter
+        nix-output-monitor
+        nix-script
+        nix-tree
+        nixfmt
+        nota
+        nvfetcher
+        ormolu
+        pandoc
+        pakcs
+        petrinizer
+        place-cursor-at
+        pinboard-notes-backup
+        pretty-simple
+        shake
+        shellcheck
+        sourceAndTags
+        spacecookie
+        spago
+        splot
+        stack
+        stack2nix
+        stutter
+        stylish-haskell
+        taffybar
+        tamarin-prover
+        taskell
+        termonad-with-packages
+        tldr-hs
+        tweet-hs
+        update-nix-fetchgit
+        uusi
+        uqm
+        uuagc
+        vaultenv
+        wstunnel
+        xmobar
+        xmonad-with-packages
+        yi
+        zsh-git-prompt
+        ;
+
+      elmPackages.elm = pkgsPlatforms.elmPackages.elm;
+
+      # GHCs linked to musl.
+      pkgsMusl.haskell.compiler = lib.recursiveUpdate
+        (packagePlatforms pkgs.pkgsMusl.haskell.compiler)
+        {
+          # remove musl ghc865Binary since it is known to be broken and
+          # causes an evaluation error on darwin.
+          # TODO: remove ghc865Binary altogether and use ghc8102Binary
+          ghc865Binary = {};
+
+          ghcjs = {};
+          ghcjs810 = {};
+
+          # Can't be built with musl, see meta.broken comment in the drv
+          integer-simple.ghc884 = {};
+        };
+
+      # Get some cache going for MUSL-enabled GHC.
+      pkgsMusl.haskellPackages =
+        removePlatforms
+          [
+            # pkgsMusl is compiled natively with musl.  It is not
+            # cross-compiled (unlike pkgsStatic).  We can only
+            # natively bootstrap GHC with musl on x86_64-linux because
+            # upstream doesn't provide a musl bindist for aarch64.
+            "aarch64-linux"
+
+            # musl only supports linux, not darwin.
+            "x86_64-darwin"
+          ]
+          {
+            inherit (packagePlatforms pkgs.pkgsMusl.haskellPackages)
+              hello
+              lens
+              random
+              ;
+          };
+
+      # Test some statically linked packages to catch regressions
+      # and get some cache going for static compilation with GHC.
+      # Use integer-simple to avoid GMP linking problems (LGPL)
+      pkgsStatic.haskell.packages.integer-simple.ghc8107 =
+        removePlatforms
+          [
+            "aarch64-linux" # times out on Hydra
+            "x86_64-darwin" # TODO: reenable when static libiconv works on darwin
+          ]
+          {
+            inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.integer-simple.ghc8107)
+              hello
+              lens
+              random
+              ;
+          };
+    })
+    (versionedCompilerJobs {
+      # Packages which should be checked on more than the
+      # default GHC version. This list can be used to test
+      # the state of the package set with newer compilers
+      # and to confirm that critical packages for the
+      # package sets (like Cabal, jailbreak-cabal) are
+      # working as expected.
+      cabal-install = released;
+      Cabal_3_6_2_0 = released;
+      cabal2nix = released;
+      cabal2nix-unstable = released;
+      funcmp = released;
+      haskell-language-server = released;
+      hoogle = released;
+      hlint = released;
+      hsdns = released;
+      jailbreak-cabal = released;
+      language-nix = released;
+      nix-paths = released;
+      titlecase = released;
+      ghc-api-compat = [
+        compilerNames.ghc884
+        compilerNames.ghc8107
+        compilerNames.ghc902
+      ];
+    })
+    {
+      mergeable = pkgs.releaseTools.aggregate {
+        name = "haskell-updates-mergeable";
+        meta = {
+          description = ''
+            Critical haskell packages that should work at all times,
+            serves as minimum requirement for an update merge
+          '';
+          maintainers = lib.teams.haskell.members;
+        };
+        constituents = accumulateDerivations [
+          # haskell specific tests
+          jobs.tests.haskell
+          # important top-level packages
+          jobs.cabal-install
+          jobs.cabal2nix
+          jobs.cachix
+          jobs.darcs
+          jobs.haskell-language-server
+          jobs.hledger
+          jobs.hledger-ui
+          jobs.hpack
+          jobs.niv
+          jobs.pandoc
+          jobs.stack
+          jobs.stylish-haskell
+          # important haskell (library) packages
+          jobs.haskellPackages.cabal-plan
+          jobs.haskellPackages.distribution-nixpkgs
+          jobs.haskellPackages.hackage-db
+          jobs.haskellPackages.policeman
+          jobs.haskellPackages.xmonad
+          jobs.haskellPackages.xmonad-contrib
+          # haskell packages maintained by @peti
+          # imported from the old hydra jobset
+          jobs.haskellPackages.hopenssl
+          jobs.haskellPackages.hsemail
+          jobs.haskellPackages.hsyslog
+        ];
+      };
+      maintained = pkgs.releaseTools.aggregate {
+        name = "maintained-haskell-packages";
+        meta = {
+          description = "Aggregate jobset of all haskell packages with a maintainer";
+          maintainers = lib.teams.haskell.members;
+        };
+        constituents = accumulateDerivations
+          (builtins.map
+            (name: jobs.haskellPackages."${name}")
+            (maintainedPkgNames pkgs.haskellPackages));
+      };
+
+      muslGHCs = pkgs.releaseTools.aggregate {
+        name = "haskell-pkgsMusl-ghcs";
+        meta = {
+          description = "GHCs built with musl";
+          maintainers = with lib.maintainers; [
+            nh2
+          ];
+        };
+        constituents = accumulateDerivations [
+          jobs.pkgsMusl.haskell.compiler.ghc8102Binary
+          jobs.pkgsMusl.haskell.compiler.ghc8107Binary
+          jobs.pkgsMusl.haskell.compiler.ghc884
+          jobs.pkgsMusl.haskell.compiler.ghc8107
+          jobs.pkgsMusl.haskell.compiler.ghc902
+          jobs.pkgsMusl.haskell.compiler.ghc921
+          jobs.pkgsMusl.haskell.compiler.ghcHEAD
+          jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107
+          jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902
+          jobs.pkgsMusl.haskell.compiler.native-bignum.ghc921
+          jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
+        ];
+      };
+
+      staticHaskellPackages = pkgs.releaseTools.aggregate {
+        name = "static-haskell-packages";
+        meta = {
+          description = "Static haskell builds using the pkgsStatic infrastructure";
+          maintainers = [
+            lib.maintainers.sternenseemann
+            lib.maintainers.rnhmjoj
+          ];
+        };
+        constituents = accumulateDerivations [
+          jobs.pkgsStatic.haskell.packages.integer-simple.ghc8107.hello
+          jobs.pkgsStatic.haskell.packages.integer-simple.ghc8107.lens
+          jobs.pkgsStatic.haskell.packages.integer-simple.ghc8107.random
+        ];
+      };
+    }
+  ];
+
+in jobs
diff --git a/nixpkgs/pkgs/top-level/release-lib.nix b/nixpkgs/pkgs/top-level/release-lib.nix
new file mode 100644
index 000000000000..ceae00baec9c
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-lib.nix
@@ -0,0 +1,160 @@
+{ supportedSystems
+, packageSet ? (import ../..)
+, scrubJobs ? true
+, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
+  nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
+}:
+
+let
+  lib = import ../../lib;
+in with lib;
+
+rec {
+
+  pkgs = packageSet (lib.recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs);
+  inherit lib;
+
+
+  hydraJob' = if scrubJobs then hydraJob else id;
+
+
+  /* !!! Hack: poor man's memoisation function.  Necessary to prevent
+     Nixpkgs from being evaluated again and again for every
+     job/platform pair. */
+  mkPkgsFor = crossSystem: let
+    packageSet' = args: packageSet (args // { inherit crossSystem; } // nixpkgsArgs);
+
+    pkgs_x86_64_linux = packageSet' { system = "x86_64-linux"; };
+    pkgs_i686_linux = packageSet' { system = "i686-linux"; };
+    pkgs_aarch64_linux = packageSet' { system = "aarch64-linux"; };
+    pkgs_aarch64_darwin = packageSet' { system = "aarch64-darwin"; };
+    pkgs_armv6l_linux = packageSet' { system = "armv6l-linux"; };
+    pkgs_armv7l_linux = packageSet' { system = "armv7l-linux"; };
+    pkgs_x86_64_darwin = packageSet' { system = "x86_64-darwin"; };
+    pkgs_x86_64_freebsd = packageSet' { system = "x86_64-freebsd"; };
+    pkgs_i686_freebsd = packageSet' { system = "i686-freebsd"; };
+    pkgs_i686_cygwin = packageSet' { system = "i686-cygwin"; };
+    pkgs_x86_64_cygwin = packageSet' { system = "x86_64-cygwin"; };
+
+    in system:
+      if system == "x86_64-linux" then pkgs_x86_64_linux
+      else if system == "i686-linux" then pkgs_i686_linux
+      else if system == "aarch64-linux" then pkgs_aarch64_linux
+      else if system == "aarch64-darwin" then pkgs_aarch64_darwin
+      else if system == "armv6l-linux" then pkgs_armv6l_linux
+      else if system == "armv7l-linux" then pkgs_armv7l_linux
+      else if system == "x86_64-darwin" then pkgs_x86_64_darwin
+      else if system == "x86_64-freebsd" then pkgs_x86_64_freebsd
+      else if system == "i686-freebsd" then pkgs_i686_freebsd
+      else if system == "i686-cygwin" then pkgs_i686_cygwin
+      else if system == "x86_64-cygwin" then pkgs_x86_64_cygwin
+      else abort "unsupported system type: ${system}";
+
+  pkgsFor = pkgsForCross null;
+
+
+  # More poor man's memoisation
+  pkgsForCross = let
+    examplesByConfig = lib.flip lib.mapAttrs'
+      lib.systems.examples
+      (_: crossSystem: nameValuePair crossSystem.config {
+        inherit crossSystem;
+        pkgsFor = mkPkgsFor crossSystem;
+      });
+    native = mkPkgsFor null;
+  in crossSystem: let
+    candidate = examplesByConfig.${crossSystem.config} or null;
+  in if crossSystem == null
+      then native
+    else if candidate != null && lib.matchAttrs crossSystem candidate.crossSystem
+      then candidate.pkgsFor
+    else mkPkgsFor crossSystem; # uncached fallback
+
+
+  # Given a list of 'meta.platforms'-style patterns, return the sublist of
+  # `supportedSystems` containing systems that matches at least one of the given
+  # patterns.
+  #
+  # This is written in a funny way so that we only elaborate the systems once.
+  supportedMatches = let
+      supportedPlatforms = map
+        (system: lib.systems.elaborate { inherit system; })
+        supportedSystems;
+    in metaPatterns: let
+      anyMatch = platform:
+        lib.any (lib.meta.platformMatch platform) metaPatterns;
+      matchingPlatforms = lib.filter anyMatch supportedPlatforms;
+    in map ({ system, ...}: system) matchingPlatforms;
+
+
+  assertTrue = bool:
+    if bool
+    then pkgs.runCommand "evaluated-to-true" {} "touch $out"
+    else pkgs.runCommand "evaluated-to-false" {} "false";
+
+
+  /* The working or failing mails for cross builds will be sent only to
+     the following maintainers, as most package maintainers will not be
+     interested in the result of cross building a package. */
+  crossMaintainers = [ maintainers.viric ];
+
+
+  # Generate attributes for all supported systems.
+  forAllSystems = genAttrs supportedSystems;
+
+
+  # Generate attributes for all sytems matching at least one of the given
+  # patterns
+  forMatchingSystems = metaPatterns: genAttrs (supportedMatches metaPatterns);
+
+
+  /* Build a package on the given set of platforms.  The function `f'
+     is called for each supported platform with Nixpkgs for that
+     platform as an argument .  We return an attribute set containing
+     a derivation for each supported platform, i.e. ‘{ x86_64-linux =
+     f pkgs_x86_64_linux; i686-linux = f pkgs_i686_linux; ... }’. */
+  testOn = testOnCross null;
+
+
+  /* Similar to the testOn function, but with an additional
+     'crossSystem' parameter for packageSet', defining the target
+     platform for cross builds. */
+  testOnCross = crossSystem: metaPatterns: f: forMatchingSystems metaPatterns
+    (system: hydraJob' (f (pkgsForCross crossSystem system)));
+
+
+  /* Given a nested set where the leaf nodes are lists of platforms,
+     map each leaf node to `testOn [platforms...] (pkgs:
+     pkgs.<attrPath>)'. */
+  mapTestOn = _mapTestOnHelper id null;
+
+
+  _mapTestOnHelper = f: crossSystem: mapAttrsRecursive
+    (path: metaPatterns: testOnCross crossSystem metaPatterns
+      (pkgs: f (getAttrFromPath path pkgs)));
+
+
+  /* Similar to the testOn function, but with an additional 'crossSystem'
+   * parameter for packageSet', defining the target platform for cross builds,
+   * and triggering the build of the host derivation. */
+  mapTestOnCross = _mapTestOnHelper
+    (addMetaAttrs { maintainers = crossMaintainers; });
+
+
+  /* Recursively map a (nested) set of derivations to an isomorphic
+     set of meta.platforms values. */
+  packagePlatforms = mapAttrs (name: value:
+      if isDerivation value then
+        value.meta.hydraPlatforms
+          or (value.meta.platforms or [ "x86_64-linux" ])
+      else if value.recurseForDerivations or false || value.recurseForRelease or false then
+        packagePlatforms value
+      else
+        []
+    );
+
+
+  /* Common platform groups on which to test packages. */
+  inherit (platforms) unix linux darwin cygwin all mesaPlatforms;
+
+}
diff --git a/nixpkgs/pkgs/top-level/release-python.nix b/nixpkgs/pkgs/top-level/release-python.nix
new file mode 100644
index 000000000000..d90be7f3bb4c
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-python.nix
@@ -0,0 +1,47 @@
+/*
+   test for example like this
+   $ hydra-eval-jobs pkgs/top-level/release-python.nix
+*/
+
+{ # The platforms for which we build Nixpkgs.
+  supportedSystems ? [
+    "aarch64-linux"
+    "x86_64-linux"
+  ]
+, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
+  nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
+}:
+
+with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
+with lib;
+
+let
+  packagePython = mapAttrs (name: value:
+    let res = builtins.tryEval (
+      if isDerivation value then
+        value.meta.isBuildPythonPackage or []
+      else if value.recurseForDerivations or false || value.recurseForRelease or false then
+        packagePython value
+      else
+        []);
+    in if res.success then res.value else []
+    );
+
+  jobs = {
+    lib-tests = import ../../lib/tests/release.nix { inherit pkgs; };
+    pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; };
+
+    tested = pkgs.releaseTools.aggregate {
+      name = "python-tested";
+      meta.description = "Release-critical packages from the python package sets";
+      constituents = [
+        jobs.remarshal.x86_64-linux                 # Used in pkgs.formats helper
+        jobs.python39Packages.colorama.x86_64-linux  # Used in nixos test-driver
+        jobs.python39Packages.ptpython.x86_64-linux  # Used in nixos test-driver
+        jobs.python39Packages.requests.x86_64-linux  # Almost ubiquous package
+        jobs.python39Packages.sphinx.x86_64-linux    # Document creation for many packages
+      ];
+    };
+
+  } // (mapTestOn (packagePython pkgs));
+in jobs
diff --git a/nixpkgs/pkgs/top-level/release-r.nix b/nixpkgs/pkgs/top-level/release-r.nix
new file mode 100644
index 000000000000..4c715a7786d6
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-r.nix
@@ -0,0 +1,13 @@
+/*
+  This is the Hydra jobset for the `r-updates` branch in Nixpkgs.
+  The jobset can be tested by:
+
+  $ hydra-eval-jobs -I . pkgs/top-level/release-r.nix
+*/
+{ supportedSystems ? [ "x86_64-linux" "aarch64-linux" ] }:
+
+with import ./release-lib.nix { inherit supportedSystems; };
+
+mapTestOn {
+  rPackages = packagePlatforms pkgs.rPackages;
+}
diff --git a/nixpkgs/pkgs/top-level/release-small.nix b/nixpkgs/pkgs/top-level/release-small.nix
new file mode 100644
index 000000000000..a267b20d6675
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release-small.nix
@@ -0,0 +1,154 @@
+/* A small release file, with few packages to be built.  The aim is to reduce
+   the load on Hydra when testing the `stdenv-updates' branch. */
+
+{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; }
+, supportedSystems ? [ "x86_64-linux" "x86_64-darwin" ]
+, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
+  nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
+}:
+
+with import ./release-lib.nix { inherit supportedSystems nixpkgsArgs; };
+
+{
+
+  tarball = import ./make-tarball.nix {
+    inherit nixpkgs supportedSystems;
+    officialRelease = false;
+  };
+
+} // (mapTestOn ({
+
+  aspell = all;
+  at = linux;
+  autoconf = all;
+  automake = all;
+  avahi = unix; # Cygwin builds fail
+  bash = all;
+  bashInteractive = all;
+  bc = all;
+  binutils = linux;
+  bind = linux;
+  bsdiff = all;
+  bzip2 = all;
+  cmake = all;
+  coreutils = all;
+  cpio = all;
+  cron = linux;
+  cups = linux;
+  dbus = linux;
+  dhcp = linux;
+  diffutils = all;
+  e2fsprogs = linux;
+  emacs = linux;
+  file = all;
+  findutils = all;
+  flex = all;
+  gcc = all;
+  glibc = linux;
+  glibcLocales = linux;
+  gnugrep = all;
+  gnum4 = all;
+  gnumake = all;
+  gnupatch = all;
+  gnupg = linux;
+  gnuplot = unix; # Cygwin builds fail
+  gnused = all;
+  gnutar = all;
+  gnutls = linux;
+  grub = linux;
+  grub2 = linux;
+  guile = linux;  # tests fail on Cygwin
+  gzip = all;
+  hddtemp = linux;
+  hdparm = linux;
+  hello = all;
+  host = linux;
+  iana-etc = linux;
+  icewm = linux;
+  idutils = all;
+  inetutils = linux;
+  iputils = linux;
+  kvm = linux;
+  qemu = linux;
+  qemu_kvm = linux;
+  lapack-reference = linux;
+  less = all;
+  lftp = all;
+  libtool = all;
+  libtool_2 = all;
+  libxml2 = all;
+  libxslt = all;
+  lout = linux;
+  lsh = linux;
+  lsof = linux;
+  ltrace = linux;
+  lvm2 = linux;
+  lynx = linux;
+  xz = linux;
+  man = linux;
+  man-pages = linux;
+  mc = all;
+  mdadm = linux;
+  mesa = mesaPlatforms;
+  mingetty = linux;
+  mktemp = all;
+  monotone = linux;
+  mutt = linux;
+  mysql = linux;
+  # netcat broken on darwin
+  netcat = linux;
+  nfs-utils = linux;
+  nix = all;
+  nixUnstable = all;
+  nss_ldap = linux;
+  nssmdns = linux;
+  ntfs3g = linux;
+  ntp = linux;
+  openssh = linux;
+  openssl = all;
+  pan = linux;
+  pciutils = linux;
+  pdf2xml = all;
+  perl = all;
+  pkg-config = all;
+  pmccabe = linux;
+  procps = linux;
+  python3 = unix; # Cygwin builds fail
+  readline = all;
+  rlwrap = all;
+  rpcbind = linux;
+  rsync = linux;
+  screen = linux ++ darwin;
+  scrot = linux;
+  sdparm = linux;
+  smartmontools = all;
+  sqlite = unix; # Cygwin builds fail
+  squid = linux;
+  ssmtp = linux;
+  stdenv = all;
+  strace = linux;
+  su = linux;
+  sudo = linux;
+  sysklogd = linux;
+  syslinux = ["i686-linux"];
+  tcl = linux;
+  tcpdump = linux;
+  texinfo = all;
+  time = linux;
+  tinycc = linux;
+  udev = linux;
+  unzip = all;
+  usbutils = linux;
+  util-linux = linux;
+  util-linuxMinimal = linux;
+  w3m = all;
+  webkitgtk = linux;
+  wget = all;
+  which = all;
+  wirelesstools = linux;
+  wpa_supplicant = linux;
+  xfsprogs = linux;
+  xkeyboard_config = linux;
+  zip = all;
+
+} ))
diff --git a/nixpkgs/pkgs/top-level/release.nix b/nixpkgs/pkgs/top-level/release.nix
new file mode 100644
index 000000000000..0c759095f56d
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/release.nix
@@ -0,0 +1,224 @@
+/* This file defines the builds that constitute the Nixpkgs.
+   Everything defined here ends up in the Nixpkgs channel.  Individual
+   jobs can be tested by running:
+
+   $ nix-build pkgs/top-level/release.nix -A <jobname>.<system>
+
+   e.g.
+
+   $ nix-build pkgs/top-level/release.nix -A coreutils.x86_64-linux
+*/
+{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; revision = "0000000000000000000000000000000000000000"; }
+, officialRelease ? false
+  # The platforms for which we build Nixpkgs.
+, supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ]
+, limitedSupportedSystems ? [ "i686-linux" ]
+  # Strip most of attributes when evaluating to spare memory usage
+, scrubJobs ? true
+  # Attributes passed to nixpkgs. Don't build packages marked as unfree.
+, nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
+}:
+
+with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
+
+let
+
+  systemsWithAnySupport = supportedSystems ++ limitedSupportedSystems;
+
+  supportDarwin = lib.genAttrs [
+    "x86_64"
+    "aarch64"
+  ] (arch: builtins.elem "${arch}-darwin" systemsWithAnySupport);
+
+  jobs =
+    { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; };
+
+      metrics = import ./metrics.nix { inherit pkgs nixpkgs; };
+
+      manual = import ../../doc { inherit pkgs nixpkgs; };
+      lib-tests = import ../../lib/tests/release.nix { inherit pkgs; };
+      pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; };
+
+      darwin-tested = if supportDarwin.x86_64 then pkgs.releaseTools.aggregate
+        { name = "nixpkgs-darwin-${jobs.tarball.version}";
+          meta.description = "Release-critical builds for the Nixpkgs darwin channel";
+          constituents =
+            [ jobs.tarball
+              jobs.cabal2nix.x86_64-darwin
+              jobs.ghc.x86_64-darwin
+              jobs.git.x86_64-darwin
+              jobs.go.x86_64-darwin
+              jobs.mariadb.x86_64-darwin
+              jobs.nix.x86_64-darwin
+              jobs.nixpkgs-review.x86_64-darwin
+              jobs.nix-info.x86_64-darwin
+              jobs.nix-info-tested.x86_64-darwin
+              jobs.openssh.x86_64-darwin
+              jobs.openssl.x86_64-darwin
+              jobs.pandoc.x86_64-darwin
+              jobs.postgresql.x86_64-darwin
+              jobs.python2.x86_64-darwin
+              jobs.python3.x86_64-darwin
+              jobs.ruby.x86_64-darwin
+              jobs.rustc.x86_64-darwin
+              # blocking ofBorg CI 2020-02-28
+              # jobs.stack.x86_64-darwin
+              jobs.stdenv.x86_64-darwin
+              jobs.vim.x86_64-darwin
+              jobs.cachix.x86_64-darwin
+
+              # UI apps
+              # jobs.firefox-unwrapped.x86_64-darwin
+              jobs.qt5.qtmultimedia.x86_64-darwin
+              jobs.inkscape.x86_64-darwin
+              jobs.gimp.x86_64-darwin
+              jobs.emacs.x86_64-darwin
+              jobs.wireshark.x86_64-darwin
+              jobs.transmission-gtk.x86_64-darwin
+
+              # Tests
+              /*
+              jobs.tests.cc-wrapper.x86_64-darwin
+              jobs.tests.cc-wrapper-clang.x86_64-darwin
+              jobs.tests.cc-wrapper-libcxx.x86_64-darwin
+              jobs.tests.stdenv-inputs.x86_64-darwin
+              jobs.tests.macOSSierraShared.x86_64-darwin
+              jobs.tests.patch-shebangs.x86_64-darwin
+              */
+            ];
+        } else null;
+
+      unstable = pkgs.releaseTools.aggregate
+        { name = "nixpkgs-${jobs.tarball.version}";
+          meta.description = "Release-critical builds for the Nixpkgs unstable channel";
+          constituents =
+            [ jobs.tarball
+              jobs.metrics
+              jobs.manual
+              jobs.lib-tests
+              jobs.pkgs-lib-tests
+              jobs.stdenv.x86_64-linux
+              jobs.cargo.x86_64-linux
+              jobs.go.x86_64-linux
+              jobs.linux.x86_64-linux
+              jobs.pandoc.x86_64-linux
+              jobs.python2.x86_64-linux
+              jobs.python3.x86_64-linux
+              # Needed by contributors to test PRs (by inclusion of the PR template)
+              jobs.nixpkgs-review.x86_64-linux
+              # Needed for support
+              jobs.nix-info.x86_64-linux
+              jobs.nix-info-tested.x86_64-linux
+              # Ensure that X11/GTK are in order.
+              jobs.thunderbird-unwrapped.x86_64-linux
+              jobs.cachix.x86_64-linux
+
+              /*
+              jobs.tests.cc-wrapper.x86_64-linux
+              jobs.tests.cc-wrapper-gcc7.x86_64-linux
+              jobs.tests.cc-wrapper-gcc8.x86_64-linux
+
+              # broken see issue #40038
+
+              jobs.tests.cc-wrapper-clang.x86_64-linux
+              jobs.tests.cc-wrapper-libcxx.x86_64-linux
+              jobs.tests.cc-wrapper-clang-5.x86_64-linux
+              jobs.tests.cc-wrapper-libcxx-5.x86_64-linux
+              jobs.tests.cc-wrapper-clang-6.x86_64-linux
+              jobs.tests.cc-wrapper-libcxx-6.x86_64-linux
+              jobs.tests.cc-multilib-gcc.x86_64-linux
+              jobs.tests.cc-multilib-clang.x86_64-linux
+              jobs.tests.stdenv-inputs.x86_64-linux
+              jobs.tests.patch-shebangs.x86_64-linux
+              */
+            ]
+            ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools
+            ++ lib.optionals supportDarwin.x86_64 [
+              jobs.stdenv.x86_64-darwin
+              jobs.cargo.x86_64-darwin
+              jobs.cachix.x86_64-darwin
+              jobs.go.x86_64-darwin
+              jobs.python2.x86_64-darwin
+              jobs.python3.x86_64-darwin
+              jobs.nixpkgs-review.x86_64-darwin
+              jobs.nix-info.x86_64-darwin
+              jobs.nix-info-tested.x86_64-darwin
+              jobs.git.x86_64-darwin
+              jobs.mariadb.x86_64-darwin
+              jobs.vim.x86_64-darwin
+              jobs.inkscape.x86_64-darwin
+              jobs.qt5.qtmultimedia.x86_64-darwin
+              /*
+              jobs.tests.cc-wrapper.x86_64-darwin
+              jobs.tests.cc-wrapper-gcc7.x86_64-darwin
+              # jobs.tests.cc-wrapper-gcc8.x86_64-darwin
+              jobs.tests.cc-wrapper-clang.x86_64-darwin
+              jobs.tests.cc-wrapper-libcxx.x86_64-darwin
+              jobs.tests.cc-wrapper-clang-5.x86_64-darwin
+              jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin
+              jobs.tests.cc-wrapper-clang-6.x86_64-darwin
+              jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin
+              jobs.tests.stdenv-inputs.x86_64-darwin
+              jobs.tests.macOSSierraShared.x86_64-darwin
+              jobs.tests.patch-shebangs.x86_64-darwin
+              */
+            ];
+        };
+
+      stdenvBootstrapTools = with lib;
+        genAttrs systemsWithAnySupport
+          (system: {
+            inherit
+              (import ../stdenv/linux/make-bootstrap-tools.nix {
+                localSystem = { inherit system; };
+              })
+              dist test;
+          })
+        # darwin is special in this
+        // optionalAttrs supportDarwin.x86_64 {
+          x86_64-darwin =
+            let
+              bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; };
+            in {
+              # Lightweight distribution and test
+              inherit (bootstrap) dist test;
+              # Test a full stdenv bootstrap from the bootstrap tools definition
+              inherit (bootstrap.test-pkgs) stdenv;
+            };
+        } // optionalAttrs supportDarwin.aarch64 {
+          # Cross compiled bootstrap tools
+          aarch64-darwin =
+            let
+              bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; crossSystem = "aarch64-darwin"; };
+            in {
+              # Distribution only for now
+              inherit (bootstrap) dist;
+            };
+          };
+
+    } // (mapTestOn ((packagePlatforms pkgs) // {
+      haskell.compiler = packagePlatforms pkgs.haskell.compiler;
+      haskellPackages = packagePlatforms pkgs.haskellPackages;
+      idrisPackages = packagePlatforms pkgs.idrisPackages;
+      agdaPackages = packagePlatforms pkgs.agdaPackages;
+
+      pkgsLLVM.stdenv = [ "x86_64-linux" "aarch64-linux" ];
+      pkgsMusl.stdenv = [ "x86_64-linux" "aarch64-linux" ];
+      pkgsStatic.stdenv = [ "x86_64-linux" "aarch64-linux" ];
+
+      tests = packagePlatforms pkgs.tests;
+
+      # Language packages disabled in https://github.com/NixOS/nixpkgs/commit/ccd1029f58a3bb9eca32d81bf3f33cb4be25cc66
+
+      #emacsPackages = packagePlatforms pkgs.emacsPackages;
+      #rPackages = packagePlatforms pkgs.rPackages;
+      ocamlPackages = { };
+      perlPackages = { };
+
+      darwin = packagePlatforms pkgs.darwin // {
+        cf-private = {};
+        xcode = {};
+      };
+    } ));
+
+in jobs
diff --git a/nixpkgs/pkgs/top-level/ruby-packages.nix b/nixpkgs/pkgs/top-level/ruby-packages.nix
new file mode 100644
index 000000000000..9e64afe31f3b
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/ruby-packages.nix
@@ -0,0 +1,3102 @@
+{
+  actioncable = {
+    dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "121zl6435dwz1d14xviyynxj4njbawbv1ljxj5p0cxlhql1n3jsm";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  actionmailbox = {
+    dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jkxqdp9ha8pm2cd61ajs2pgn41adz3x1f8yqvdca3fvfrlgirjg";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  actionmailer = {
+    dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r27a5g0r7b27mzcl150hdc7ljgl5iyrxw1z4wn3n1jfb7xs5rkq";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  actionpack = {
+    dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q27kqcl369g9y7sxxcfigrm1yyj3q22kd135l7ahx977vcy5hjm";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  actiontext = {
+    dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yya6xda23q8p3knvg5c8zfqk7xwnkjplf2bxnvmipn88918cz6w";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  actionview = {
+    dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nc0v74mdlag3kxcby0rrcz2ivvc94sfdrw3zm5ng2qrchh56w1b";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  activejob = {
+    dependencies = ["activesupport" "globalid"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yshbsy4k8702x9jv90yr6cjjpn5vxlw42pb878g70cgp2wq45r3";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  activemodel = {
+    dependencies = ["activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vr3ayykc1s7n12ajddcyff751v9j48yfimgxrys6qsxj89gmnmh";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  activerecord = {
+    dependencies = ["activemodel" "activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dpn1r1v2165bx9wj07rh1g27jl49yr6kyd34xhkd48hxfadq3jb";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  activestorage = {
+    dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pxjxyjgh4al11k7z1lbnsc5wx5dnraz95p2wx00dkrvpgw8gm8b";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02lys9pnb99hsczs551iqzjn008i8k7c728xxba7acfi9rdw9pa6";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  addressable = {
+    dependencies = ["idn-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "sha256-920p0tH1S2xqSa7Fj5WDsI2X4IjCJ6P8upL2xlMdWQg=";
+      type = "gem";
+    };
+    version = "2.8.0";
+  };
+  ansi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14ims9zfal4gs2wpx2m5rd8zsrl2k794d359shkrsgg3fhr2a22l";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  ast = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
+      type = "gem";
+    };
+    version = "2.4.2";
+  };
+  atk = {
+    dependencies = ["glib2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05brc25pfvak610mdwgjsc64di29yff9i9g72m6hyc21pdjwfy3n";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  atomos = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17vq6sjyswr5jfzwdccw748kgph6bdw30bakwnn6p8sl4hpv4hvx";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  awesome_print = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9";
+      type = "gem";
+    };
+    version = "1.9.2";
+  };
+  backport = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xbzzjrgah0f8ifgd449kak2vyf30micpz6x2g82aipfv7ypsb4i";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  bacon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  benchmark = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xwcnbwnbqq8jp92mvawn6y69cb53wsz84wwmk9vsfk1jjvqfw2z";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  builder = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
+  byebug = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nx3yjf4xzdgb8jkmk2344081gqr22pgjqnmjg2q64mj5d6r9194";
+      type = "gem";
+    };
+    version = "11.1.3";
+  };
+  cairo = {
+    dependencies = ["native-package-installer" "pkg-config" "red-colors"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vbj9szp2xbnxqan8hppip8vm9fxpcmpx745y5fvg2scdh9f0p7s";
+      type = "gem";
+    };
+    version = "1.17.5";
+  };
+  cairo-gobject = {
+    dependencies = ["cairo" "glib2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "136aa800dgq6bmr0lb59mfj5q72r712wwp5wy5qxnp48adjw1k2h";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  camping = {
+    dependencies = ["mab" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q2a5x97pgnld0b8yziblp9fqkjyib4gfwv9gcyynyhswqwsldpf";
+      type = "gem";
+    };
+    version = "2.1.532";
+  };
+  CFPropertyList = {
+    dependencies = ["rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "193l8r1ycd3dcxa7lsb4pqcghbk56dzc5244m6y8xmv88z6m31d7";
+      type = "gem";
+    };
+    version = "3.0.5";
+  };
+  charlock_holmes = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hybw8jw9ryvz5zrki3gc9r88jqy373m6v46ynxsdzv1ysiyr40p";
+      type = "gem";
+    };
+    version = "0.7.7";
+  };
+  claide = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bpqhc0kqjp1bh9b7ffc395l9gfls0337rrhmab4v46ykl45qg3d";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  clamp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg";
+      type = "gem";
+    };
+    version = "1.3.2";
+  };
+  cld3 = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10vcm1dadj5sjrg31afzv7h1f0irhc7va5sr5y0fcvlkg2hms8jk";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  cocoapods = {
+    dependencies = ["activesupport" "claide" "cocoapods-core" "cocoapods-deintegrate" "cocoapods-downloader" "cocoapods-plugins" "cocoapods-search" "cocoapods-stats" "cocoapods-trunk" "cocoapods-try" "colored" "escape" "fourflusher" "molinillo" "nap" "xcodeproj"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rnxjwrfk3yz34xx11hh61j7p57l6vwh8b86jvjivzlgrj4a025r";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  cocoapods-acknowledgements = {
+    dependencies = ["cocoapods" "redcarpet" "xcodeproj"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04gaijs4djjkynan06wyaxxz48db0czzfrhh95jn3r201k2ypa7k";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  cocoapods-art = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yi4dgl6w6fs35szsxb4z24d7svmqgxyr4ma4hsrcsb2pv4qk3xj";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  cocoapods-browser = {
+    dependencies = ["cocoapods"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mq9mcw3xnf2nqkmcjg874sx422dbmfa99vhw31c9jb0cd4j3m9p";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  cocoapods-clean = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16zy8xl94clblxivlcrw2jf3dnvmwlr6jni6kz74rnc8wj42sf1w";
+      type = "gem";
+    };
+    version = "0.0.1";
+  };
+  cocoapods-clean_build_phases_scripts = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0syya8l1kz36069y7cx4f37aihpmbm4yd5wvifs3j8qzz8bpxpfi";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  cocoapods-core = {
+    dependencies = ["activesupport" "fuzzy_match" "nap"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bh69sbljlf3hvg98y2zssx0ch51lllz1k1lc8xysn43dm3ahaa5";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  cocoapods-coverage = {
+    dependencies = ["cocoapods-testing" "slather"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zaid3awk470igr5yilx1wvj1jnh88fbjl11hp93a4qic7j3i6ca";
+      type = "gem";
+    };
+    version = "0.0.6";
+  };
+  cocoapods-deintegrate = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18pnng0lv5z6kpp8hnki0agdxx979iq6hxkfkglsyqzmir22lz2i";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  cocoapods-dependencies = {
+    dependencies = ["ruby-graphviz"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10ssv98af44698kp4w0wfdrc7x3ccf2w9dhcva6i7hwlffjvcsz3";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  cocoapods-deploy = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qnhl54z0dqyn0sk7rgn3vwmfax0yr3sk2r464h888d2qjxz6v7j";
+      type = "gem";
+    };
+    version = "0.0.12";
+  };
+  cocoapods-disable-podfile-validations = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fxrq0b1x5gr2gr9md6mkwgaj8519gf1sbyqs88yqphbigf5iy75";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  cocoapods-downloader = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "161sjpyxipnbhwcr5kyfbcdbzs9zq20sigsazjm782cn3s466p0z";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  cocoapods-expert-difficulty = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19shjj4kj9rqg1a3pax568q0w9rkq8jcba2mycvq0szbv7bw6pgl";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  cocoapods-fix-react-native = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jhgg3amman51hvk0x7h1xqqdb71kfmbzfziaip6fxkl7sjr43ix";
+      type = "gem";
+    };
+    version = "2019.09.17.15";
+  };
+  cocoapods-generate = {
+    dependencies = ["cocoapods-disable-podfile-validations"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vpn0y2r91cv9kr2kh6rwh51ipi90iyjfya8ir9grxh1ngv179ck";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  cocoapods-git_url_rewriter = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cmyrj92d781pkq1b6qbvpmxvfx8k3l36cdqsi46w55icjm1jqbw";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  cocoapods-keys = {
+    dependencies = ["dotenv" "osx_keychain"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "153cxxsi77dygc4qrij6qs44dbvc7dw31jx06cmf0ajrhv9qjnxl";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  cocoapods-open = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z9x1cqrz4zc6yd08clawi8gg7ip8vbhkh9lkrdkzw7i6lqyrp0j";
+      type = "gem";
+    };
+    version = "0.0.8";
+  };
+  cocoapods-plugins = {
+    dependencies = ["nap"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16na82sfyc8801qs1n22nwq486s4j7yj6rj7fcp8cbxmj371fpbj";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  cocoapods-search = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12amy0nknv09bvzix8bkmcjn996c50c4ms20v2dl7v8rcw73n4qv";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  cocoapods-stats = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xhdh5v94p6l612rwrk290nd2hdfx8lbaqfbkmj34md218kilqww";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  cocoapods-testing = {
+    dependencies = ["xctasks"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03dqcz9pks7mbzq3zkfm2rzbjwkcwp8z3rip60d4pqs8b2bb61bg";
+      type = "gem";
+    };
+    version = "0.0.6";
+  };
+  cocoapods-trunk = {
+    dependencies = ["nap" "netrc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cgdx7z9psxxrsa13fk7qc9i6jskrwcafhrdz94avzia2y6dlnsz";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  cocoapods-try = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1znyp625rql37ivb5rk9fk9564cmax8icxfr041ysivpdrn98nql";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  cocoapods-try-release-fix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a7hbc5j0p507cyd9a0rd2mf2d525ia3gcnx7bdspxqnhl0a43bf";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  cocoapods-update-if-you-dare = {
+    dependencies = ["colored2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nqvywrbfxiagip2vl9kj71h39g4idq1lshkxl5bqh1hq57g4k9q";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  cocoapods-whitelist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09g67hih1y1ibj85mc9w6xrwwv3402620i031jivc55msm6dmdvs";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  cocoapods-wholemodule = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03gr4r0aa9mrj8i27dd6l87jzq78sid3jbywmkazg3yrq6y38i21";
+      type = "gem";
+    };
+    version = "0.0.1";
+  };
+  coderay = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+  coffee-script = {
+    dependencies = ["coffee-script-source" "execjs"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  coffee-script-source = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1907v9q1zcqmmyqzhzych5l7qifgls2rlbnbhy5vzyr7i7yicaz1";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  colorator = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09zp15hyd9wlbgf1kmrf4rnry8cpvh1h9fj7afarlqcy4hrfdpvs";
+      type = "gem";
+    };
+    version = "0.1";
+  };
+  colored = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx";
+      type = "gem";
+    };
+    version = "1.2";
+  };
+  colored2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i";
+      type = "gem";
+    };
+    version = "3.1.2";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+      type = "gem";
+    };
+    version = "1.1.9";
+  };
+  crass = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+      type = "gem";
+    };
+    version = "1.0.6";
+  };
+  curb = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06k7iybv6shvf8ypw28q9pbks129v2k34sn4f293650000ybdman";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  curses = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0py4n868h0whr5n8a4943nyagkpf0vnldk9nyizgf1q1lmrj1pkx";
+      type = "gem";
+    };
+    version = "1.4.3";
+  };
+  daemons = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07cszb0zl8mqmwhc8a2yfg36vi6lbgrp4pa5bvmryrpcz9v6viwg";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  data_objects = {
+    dependencies = ["addressable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19fw1ckqc5f1wc4r72qrymy2k6cmd8azbxpn61ksbsjqhzc2bgqd";
+      type = "gem";
+    };
+    version = "0.10.17";
+  };
+  dep-selector-libgecode = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09frwp3np5c64y8g5rnbl46n7riknmdjprhndsh6zzajkjr9m3xj";
+      type = "gem";
+    };
+    version = "1.3.5";
+  };
+  diff-lcs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  digest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00vwzvxgby22h7jhwadqqf9ssbkp3ag2pl4g7q3zf1y8mlk7rk39";
+      type = "gem";
+    };
+    version = "3.1.0";
+  };
+  digest-sha3 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "135a8r9nq10wlzbjm74dflls67y9iiwp04aj1089ablbmvbiiq41";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  do_sqlite3 = {
+    dependencies = ["data_objects"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gxz54qjgwg6a2mkqpai28m0i5swbyxpr4qmh9x1nwf20lysrgcf";
+      type = "gem";
+    };
+    version = "0.10.17";
+  };
+  docile = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lxqxgq71rqwj1lpl9q1mbhhhhhhdkkj7my341f2889pwayk85sz";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  domain_name = {
+    dependencies = ["unf"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0";
+      type = "gem";
+    };
+    version = "0.5.20190701";
+  };
+  dotenv = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iym172c5337sm1x2ykc2i3f961vj3wdclbyg1x6sxs3irgfsl94";
+      type = "gem";
+    };
+    version = "2.7.6";
+  };
+  e2mmap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  erubi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09l8lz3j00m898li0yfsnb6ihc63rdvhw3k5xczna5zrjk104f2l";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  escape = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sa1xkfc9jvkwyw1jbz3jhkq0ms1zrvswi6mmfiwcisg5fp497z4";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  ethon = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kd7c61f28f810fgxg480j7457nlvqarza9c2ra0zhav0dd80288";
+      type = "gem";
+    };
+    version = "0.15.0";
+  };
+  eventmachine = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  excon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bkh80zzjpfglm14rhz116qgz0nb5gvk3ydfjpg14av5407srgh1";
+      type = "gem";
+    };
+    version = "0.90.0";
+  };
+  execjs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "121h6af4i6wr3wxvv84y53jcyw2sk71j5wsncm6wq6yqrwcrk4vd";
+      type = "gem";
+    };
+    version = "2.8.1";
+  };
+  faraday = {
+    dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6";
+      type = "gem";
+    };
+    version = "1.9.3";
+  };
+  faraday-em_http = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12cnqpbak4vhikrh2cdn94assh3yxza8rq2p9w2j34bqg5q4qgbs";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-em_synchrony = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-excon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  faraday-httpclient = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fyk0jd3ks7fdn8nv3spnwjpzx2lmxmg2gh4inz3by1zjzqg33sc";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  faraday-multipart = {
+    dependencies = ["multipart-post"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03qfi9020ynf7hkdiaq01sd2mllvw7fg4qiin3pk028b4wv23j3j";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  faraday-net_http = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  faraday-net_http_persistent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  faraday-patron = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-retry = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
+      type = "gem";
+    };
+    version = "1.15.5";
+  };
+  ffi-compiler = {
+    dependencies = ["ffi" "rake"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  ffi-rzmq-core = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5";
+      type = "gem";
+    };
+    version = "1.0.7";
+  };
+  fog-core = {
+    dependencies = ["builder" "excon" "formatador" "mime-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l5zk5pzyrydavyw2ai6yz97alg4qvd93mb19m6460vzrj6x00qg";
+      type = "gem";
+    };
+    version = "2.2.4";
+  };
+  fog-dnsimple = {
+    dependencies = ["fog-core" "fog-json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lbzkc0w96a62ahjw0b7mfbqgg9x2jp7khg5hvpbgw0kfs5xza63";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  fog-json = {
+    dependencies = ["fog-core" "multi_json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  formatador = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mprf1dwznz5ld0q1jpbyl59fwnwk6azspnd0am7zz7kfg3pxhv5";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  fourflusher = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yp0pxj6xsd84h2barwh3z5w289p1a6lqib309m7sbzh643qx3zz";
+      type = "gem";
+    };
+    version = "0.3.2";
+  };
+  fuzzy_match = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19gw1ifsgfrv7xdi6n61658vffgm1867f4xdqfswb2b5h6alzpmm";
+      type = "gem";
+    };
+    version = "2.0.4";
+  };
+  gdk_pixbuf2 = {
+    dependencies = ["gio2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hslcfns2ysvjyj21hjvp4hghrafw1sdl627fm0nj0wsncs94m67";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  gemoji = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n3r6p1lrcwq2y3fzbj350qai0z8giz8wjhhxall8qkvacrcbb6w";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  gio2 = {
+    dependencies = ["gobject-introspection"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l30xsr1dgnzqfmln17arnqi8iga97ldf6zgbqrfby6a94v3ammd";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  github-pages = {
+    dependencies = ["github-pages-health-check" "jekyll" "jekyll-coffeescript" "jekyll-feed" "jekyll-gist" "jekyll-github-metadata" "jekyll-mentions" "jekyll-paginate" "jekyll-redirect-from" "jekyll-sass-converter" "jekyll-seo-tag" "jekyll-sitemap" "jemoji" "kramdown" "liquid" "listen" "mercenary" "rouge" "terminal-table"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15ngq2x2i4m7dp87lczv7w5xh5qxqnhn898jyaahgl6wgcq8fggc";
+      type = "gem";
+    };
+    version = "87";
+  };
+  github-pages-health-check = {
+    dependencies = ["addressable" "net-dns" "octokit" "public_suffix" "typhoeus"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x1ccwi3nfb1s3lv9px6lx3fjbn0s1g1v1cm0jcs2gb2zixgn4nf";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  gitlab-markup = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11kc33j6m0nayppkb7645w0ldh8g18pgmxgb8wz39pd5vilr6qpv";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  glib2 = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l46ymdf7azpd137xq4rarbaq54hxs9rgfry0r6b0ywj74rmw9ih";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  globalid = {
+    dependencies = ["activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n5yc058i8xhi1fwcp1w7mfi6xaxfmrifdb4r4hjfff33ldn8lqj";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  gobject-introspection = {
+    dependencies = ["glib2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11gas9hzq36a2bwqi7h5c6p6jihanbhsarwhv5fw53dxap4iwj25";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  gpgme = {
+    dependencies = ["mini_portile2"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xbgh9d8nbvsvyzqnd0mzhz0nr9hx4qn025kmz6d837lry4lc6gw";
+      type = "gem";
+    };
+    version = "2.0.20";
+  };
+  gtk2 = {
+    dependencies = ["atk" "gdk_pixbuf2" "pango"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v1ag6irp52asm0yaxa7s533czy7yzhanhgn1v0cndqpzqk8icfz";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  hashie = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
+      type = "gem";
+    };
+    version = "5.0.0";
+  };
+  highline = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  hike = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hbhmchyhm1xf632cczmyg3fsbn7zly988q3fjpi8l3nb4cn40xj";
+      type = "gem";
+    };
+    version = "2.1.3";
+  };
+  hitimes = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ix9rp9rsrwin38z2aqiwpxc8p2dzl6m3ra47az47fsija1cb2qf";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  hpricot = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jn8x9ch79gqmnzgyz78kppavjh5lqx0y0r6frykga2b86rz9s6z";
+      type = "gem";
+    };
+    version = "0.8.6";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "080sn9z1a64gv04p318jz10y6lv6qd3avip08rrcmq9k4ihai0f1";
+      type = "gem";
+    };
+    version = "2.14.0";
+  };
+  http-accept = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09m1facypsdjynfwrcv19xcb1mqg8z6kk31g8r33pfxzh838c9n6";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  http-cookie = {
+    dependencies = ["domain_name"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19370bc97gsy2j4hanij246hv1ddc85hw0xjb6sj7n1ykqdlx9l9";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  httpclient = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vdd1kii40qhbr9n8qx71k2gskq6rkl8ygy8hw5hfj8bb5a364xf";
+      type = "gem";
+    };
+    version = "1.8.11";
+  };
+  iconv = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00fppiz9ypy7xpc08xdk6glq842rbc69c7a1p0kmv195271i4yqv";
+      type = "gem";
+    };
+    version = "1.0.8";
+  };
+  idn-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xjr8nxpq6vsa4kd7pvd14xxiba9y4dais1yyz4dj567hsqdrhcm";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  io-wait = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10jj6xz15qaw8gkck5wv3a3xg1zdfsarrandkglfbf75x4xmkrfz";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  jaro_winkler = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh";
+      type = "gem";
+    };
+    version = "1.5.4";
+  };
+  jbuilder = {
+    dependencies = ["actionview" "activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h58xgmp0fqpnd6mvw0zl0f76119v8lnf4xabqhckbzl6jrk8qpa";
+      type = "gem";
+    };
+    version = "2.11.5";
+  };
+  jekyll = {
+    dependencies = ["colorator" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "rouge" "safe_yaml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l1kq96bps29sx1cawbn4p9al4cljkywlr02zwgbcdwrr0211rhp";
+      type = "gem";
+    };
+    version = "3.1.6";
+  };
+  jekyll-coffeescript = {
+    dependencies = ["coffee-script"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19nkqbaxqbzqbfbi7sgshshj2krp9ap88m9fc5pa6mglb2ypk3hg";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  jekyll-feed = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jq7048yynabd9c1s171bb0wp1qqkh00n1q15w16fdp4hrvvjmsh";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  jekyll-gist = {
+    dependencies = ["octokit"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mjw9y7mqmglckn81ix9x1gqnvbxb28fbz72yhvmm5sdk2l957lr";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  jekyll-github-metadata = {
+    dependencies = ["jekyll" "octokit"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0psxsfbic425qhniz0nxfr0qqjdwji06x66jpqxpyn9js0iqh5hj";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ps50b62gn6dp7ga5wg5x4j1vr9wlw91sqhv9pkmbbv805w5fxbq";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+  jekyll-paginate = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  jekyll-redirect-from = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s85rsjl7jd783iiwzd3vq84qcmcz86frl7mjhhlipski60x5fjp";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  jekyll-sass-converter = {
+    dependencies = ["sass"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xqmlr87xmzpalf846gybkbfqkj48y3fva81r7c7175my9p4ykl1";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y0szawdxs00qz13plxdfgy9njw40m0jcmg9l3ng2q0b2wnhf3cb";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  jekyll-sitemap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sg0yzhzja2lw48w5l23l3612pig5c2x4hf883c8bgz0rvr81di1";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f0p3jbvp9gafbddkbpk78gb6837d2qdhw97py3svsk3d9vkbcdn";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "090zxsm77ag8phb8c3mhrqcivq1kazs10srqnxc8wjbvcp37qrdi";
+      type = "gem";
+    };
+    version = "0.6.2";
+  };
+  jmespath = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ylph158dc3ql6cvkik00ab6gf2k1rv2dii63m196xclhkzwfyan";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z9grvjyfz16ag55hg522d3q4dh07hf391sf9s96npc0vfi85xkz";
+      type = "gem";
+    };
+    version = "2.6.1";
+  };
+  jwt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bg8pjx0mpvl10k6d8a6gc8dzlv2z5jkqcjbjcirnk032iriq838";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  kramdown = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05ljwi07hjjwgnjg19sg8mkyxf1an5xn8kn1717d5qrrqkzn3zq1";
+      type = "gem";
+    };
+    version = "1.11.1";
+  };
+  kramdown-rfc2629 = {
+    dependencies = ["kramdown"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ay4jy434mpcn72l1rx2cj2gp8lv0z8r5skxyzs1r79yljmxkx4b";
+      type = "gem";
+    };
+    version = "1.0.32";
+  };
+  libv8 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0317sr3nrl51sp844bps71smkrwim3fjn47wdfpbycixnbxspivm";
+      type = "gem";
+    };
+    version = "8.4.255.0";
+  };
+  libxml-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kr51hg192mfn5ixngs41f1z8iyik5r6b52chcy8ilfs006fdkgi";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  liquid = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "033png37ym4jrjz5bi7zb4ic4yxacwvnllm1xxmrnr4swgyyygc2";
+      type = "gem";
+    };
+    version = "3.0.6";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zv8rdn3nwnmf5iyxv7ync46wjk8z2sxjpda1j9pjc5n2mkdz97b";
+      type = "gem";
+    };
+    version = "3.0.6";
+  };
+  loofah = {
+    dependencies = ["crass" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17rvbrqcci1579d7dpbsfmz1f9g7msk82lyh9ip5h29dkrnixcgg";
+      type = "gem";
+    };
+    version = "2.13.0";
+  };
+  mab = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0manxbilpx0hdi19lhdsr4ncvbzgmwh279b64j8w60dg0p0i4b4j";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  magic = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18vkdq2748wxg0kr923fbhx92wikh2dwv2hp8xind57qs7gn26pr";
+      type = "gem";
+    };
+    version = "0.2.9";
+  };
+  mail = {
+    dependencies = ["mini_mime"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+      type = "gem";
+    };
+    version = "2.7.1";
+  };
+  marcel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kky3yiwagsk8gfbzn3mvl2fxlh3b39v6nawzm4wpjs6xxvvc4x0";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  markaby = {
+    dependencies = ["builder"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  maruku = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  matrix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h2cgkpzkh3dd0flnnwfq6f3nl2b1zff9lvqz8xs853ssv5kq23i";
+      type = "gem";
+    };
+    version = "0.4.2";
+  };
+  mercenary = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  method_source = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q";
+      type = "gem";
+    };
+    version = "3.2022.0105";
+  };
+  mini_magick = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1aj604x11d9pksbljh0l38f70b558rhdgji1s9i763hiagvvx2hs";
+      type = "gem";
+    };
+    version = "4.11.0";
+  };
+  mini_mime = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d3ga166pahsxavzwj19yjj4lr13rw1vsb36s2qs8blcxigrdp6z";
+      type = "gem";
+    };
+    version = "2.7.1";
+  };
+  minitest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06xf558gid4w8lwx13jwfdafsch9maz8m0g85wnfymqj63x5nbbd";
+      type = "gem";
+    };
+    version = "5.15.0";
+  };
+  molinillo = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0msabpxiyhlbgayrvr01316alaxrxwh6h8yzqz6p36v1zhqgddw4";
+      type = "gem";
+    };
+    version = "0.4.5";
+  };
+  msgpack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
+      type = "gem";
+    };
+    version = "1.4.2";
+  };
+  multi_json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z";
+      type = "gem";
+    };
+    version = "1.15.0";
+  };
+  multipart-post = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  mustermann = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  mysql2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d14pcy5m4hjig0zdxnl9in5f4izszc7v9zcczf2gyi5kiyxk8jw";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  nanaimo = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xi36h3f7nm8bc2k0b6svpda1lyank2gf872lxjbhw3h95hdrbma";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  nap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xm5xssxk5s03wjarpipfm39qmgxsalb46v1prsis14x1xk935ll";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  native-package-installer = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pcpqw8vjxf2cs97bzzxcz5bh72x6bkayj0vzsilidw90kvrv2ds";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+  ncursesw = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nc14wls1yiigz593vw7580hb99lf4n485axapiz6sqpg1jnlhcr";
+      type = "gem";
+    };
+    version = "1.4.10";
+  };
+  net-dns = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18d97xjphw21naaqfhgxp95ikr1d79rx708b2df3xm01j6isqy1d";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  net-imap = {
+    dependencies = ["digest" "net-protocol" "strscan"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rl79ykmxa2k4dlk6ykrb9l0a4h101q1gd8c4qv3cl0p9h68zmbn";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  net-pop = {
+    dependencies = ["digest" "net-protocol" "timeout"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1slsl3xlbf0cqzmf2q1rfqbm61xvxzmr0h9zprwlbm1xn1cvn9xb";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  net-protocol = {
+    dependencies = ["io-wait" "timeout"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rrzdar609d8c96ikpw2yif44pp5k3n3cpjld31ia0rgmz9z59gv";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  net-scp = {
+    dependencies = ["net-ssh"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b4h3ip8d1gkrc0znnw54hbxillk73mdnaf5pz330lmrcl1wiilg";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  net-smtp = {
+    dependencies = ["digest" "net-protocol" "timeout"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s358kfv9mnfxcjbpr1d5a2gs1q7wkw7ffpn86mf1b3s9p31bw9s";
+      type = "gem";
+    };
+    version = "0.3.1";
+  };
+  net-ssh = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jp3jgcn8cij407xx9ldb5h9c6jv13jc4cf6kk2idclz43ww21c9";
+      type = "gem";
+    };
+    version = "6.1.0";
+  };
+  netrc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  nio4r = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v";
+      type = "gem";
+    };
+    version = "2.5.8";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2" "racc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zqzawia52cdcmi55lp7v8jmiqyw7pcpwsksqlnirwfm3f7bnf11";
+      type = "gem";
+    };
+    version = "1.13.1";
+  };
+  octokit = {
+    dependencies = ["faraday" "sawyer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nmdd7klyinvrrv2mggwwmc99ykaq7i379j00i37hvvaqx4giifj";
+      type = "gem";
+    };
+    version = "4.22.0";
+  };
+  opus-ruby = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lyf2a8f1w1jk0qrl8h0gsydfalbh19g5k2c6xlq8j1sfzb0ij4d";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  osx_keychain = {
+    dependencies = ["RubyInline"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10hr3lihq7s5fv18dp0g4mfncvapkcwcd6xnn5483ximyd7rhfx0";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  ovirt-engine-sdk = {
+    dependencies = ["json"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m2acfd6l6k9xvqxvwivcnwji9974ac7498znydxh69z1x3rr8nm";
+      type = "gem";
+    };
+    version = "4.4.1";
+  };
+  pango = {
+    dependencies = ["cairo-gobject" "gobject-introspection"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05smxn2jank7wqih59lhr30ab8f4qxdsdiiag5v7a0gjgzkmbi7f";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  parallel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hkfpm78c2vs1qblnva3k1grijvxh87iixcnyd83s3lxrxsjvag4";
+      type = "gem";
+    };
+    version = "1.21.0";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z";
+      type = "gem";
+    };
+    version = "2.7.2.0";
+  };
+  patron = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9";
+      type = "gem";
+    };
+    version = "0.13.3";
+  };
+  pcaprub = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0886fcc5bi0kc0rbma5fj3wa3hbg2nl7ivnbi2j995yzg36zq7xy";
+      type = "gem";
+    };
+    version = "0.13.1";
+  };
+  pg = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj";
+      type = "gem";
+    };
+    version = "1.2.3";
+  };
+  pkg-config = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rkxhps7fxzjhld68bpdaq8sss2k6fp14jz5kcqgrxp8x3yd15mk";
+      type = "gem";
+    };
+    version = "1.4.7";
+  };
+  polyglot = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  prettier = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vi8yzllqgjnmx0lcqrcyqw5lah06w4qln0mg8nczvgp8finflcb";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  pry = {
+    dependencies = ["coderay" "method_source"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk";
+      type = "gem";
+    };
+    version = "0.13.1";
+  };
+  pry-byebug = {
+    dependencies = ["byebug" "pry"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "096y5vmzpyy4x9h4ky4cs4y7d19vdq9vbwwrqafbh5gagzwhifiv";
+      type = "gem";
+    };
+    version = "3.9.0";
+  };
+  pry-doc = {
+    dependencies = ["pry" "yard"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02rqflr53584j1278hxvhxyrc6hqasv33qiqb7j186ji3s018y5c";
+      type = "gem";
+    };
+    version = "1.5.3";
+  };
+  puma = {
+    dependencies = ["nio4r"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xblxnrs0c5m326v7kgr32k4m00cl2ipcf5m0qvyisrw62vd5dbn";
+      type = "gem";
+    };
+    version = "5.5.2";
+  };
+  racc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0la56m0z26j3mfn1a9lf2l03qx1xifanndf9p3vx1azf6sqy7v9d";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
+      type = "gem";
+    };
+    version = "2.2.3";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  rack-test = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  rails = {
+    dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yfqhxa89331mk0z33l12pvzdm4y35fx41kjb2p9jzl06jhz00rz";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  rails-dom-testing = {
+    dependencies = ["activesupport" "nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  rails-html-sanitizer = {
+    dependencies = ["loofah"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09qrfi3pgllxb08r024lln9k0qzxs57v0slsj8616xf9c0cwnwbk";
+      type = "gem";
+    };
+    version = "1.4.2";
+  };
+  railties = {
+    dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor" "zeitwerk"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gi4q1j3n7vb79ijsqjgy1fnqqxypk4zdj61kic4py19pn6xqaxw";
+      type = "gem";
+    };
+    version = "7.0.1";
+  };
+  rainbow = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  rake = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
+      type = "gem";
+    };
+    version = "13.0.6";
+  };
+  rb-fsevent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qsx9c4jr11vr3a9s5j83avczx9qn9rjaf32gxpc2v451hvbc0is";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  rb-readline = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14w79a121czmvk1s953qfzww30mqjb2zc0k9qhi0ivxxk3hxg6wy";
+      type = "gem";
+    };
+    version = "0.5.5";
+  };
+  rbnacl = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk";
+      type = "gem";
+    };
+    version = "7.1.1";
+  };
+  re2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13za43xb5xfg1xb1vwlvwx14jlmnk7jal5dqw8q9a5g13csx41sw";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  red-colors = {
+    dependencies = ["matrix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xqnbbcqg55abn985m716l6n5izyaaf4zdllhc8095cfqz2fbjcx";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  redcarpet = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi";
+      type = "gem";
+    };
+    version = "3.5.1";
+  };
+  redis = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03r9739q3vq38g456snf3rk9hadf955bs5im6qs6m69h19mrz2yw";
+      type = "gem";
+    };
+    version = "4.5.1";
+  };
+  redis-rack = {
+    dependencies = ["rack" "redis-store"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nblbxg1f051dn83jp92lz3lc1wxm18nviglrabv2l0vz6rd0pkb";
+      type = "gem";
+    };
+    version = "2.1.3";
+  };
+  redis-store = {
+    dependencies = ["redis"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cpzbf2svnk4j5awb24ncl0mih45zkbdrd7q23jdg1r8k3q7mdg6";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  regexp_parser = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "008yn8j44414qxhn1c0nxp4a70rq0bqhz70hnjpgx8cjh2g0makp";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  rest-client = {
+    dependencies = ["http-accept" "http-cookie" "mime-types" "netrc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  reverse_markdown = {
+    dependencies = ["nokogiri"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0087vhw5ik50lxvddicns01clkx800fk5v5qnrvi3b42nrk6885j";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
+      type = "gem";
+    };
+    version = "3.2.5";
+  };
+  rmagick = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zxljscsg2sp49s2f80n2rdpbazkf97v3jd2fydm3kgaplcyrh96";
+      type = "gem";
+    };
+    version = "4.2.4";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13amckbdknnc5491ag28y8pqbyfpbzx5n4rlmadxhd3wkrhp92c8";
+      type = "gem";
+    };
+    version = "1.11.1";
+  };
+  rpam2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33";
+      type = "gem";
+    };
+    version = "4.0.2";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dwai7jnwmdmd7ajbi2q0k0lx1dh88knv5wl7c34wjmf94yv8w5q";
+      type = "gem";
+    };
+    version = "3.10.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wwnfhxxvrlxlk1a3yxlb82k2f9lm0yn0598x7lk8fksaz4vv6mc";
+      type = "gem";
+    };
+    version = "3.10.1";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qrj2j9jcd3m4aksk4kbv439882yl3z1harv2jrybrgjgdzdz7zs";
+      type = "gem";
+    };
+    version = "3.10.2";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d13g6kipqqc9lmwz5b244pdwc97z15vcbnbq6n9rlf32bipdz4k";
+      type = "gem";
+    };
+    version = "3.10.2";
+  };
+  rspec-support = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pjckrh8q6sqxy38xw7f4ziylq1983k84xh927s6352pps68zj35";
+      type = "gem";
+    };
+    version = "3.10.3";
+  };
+  rubocop = {
+    dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0phrig25dykgi42z6mf1abllh3ws6sv7awa82hzvvvbjx2xlzd3k";
+      type = "gem";
+    };
+    version = "0.93.1";
+  };
+  rubocop-ast = {
+    dependencies = ["parser"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gkf1p8yal38nlvdb39qaiy0gr85fxfr09j5dxh8qvrgpncpnk78";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  rubocop-performance = {
+    dependencies = ["rubocop" "rubocop-ast"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07c3kymvsid9aajwmmwr3n6apxgyjcbzbl2n6r5lpzkyz28jqn15";
+      type = "gem";
+    };
+    version = "1.10.2";
+  };
+  ruby-graphviz = {
+    dependencies = ["rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "010m283gk4qgzxkgrldlnrglh8d5fn6zvrzm56wf5abd7x7b8aqw";
+      type = "gem";
+    };
+    version = "1.2.5";
+  };
+  ruby-libvirt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rnmbfhdz270fky0cm8w1i73gkrnlf3s1hdkm5yxjkdbvapwvjsd";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  ruby-lxc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08pnghqp15fwylq6w2qh7x1ikkiq87irpy0z03n0gma4gdzzx2qa";
+      type = "gem";
+    };
+    version = "1.2.3";
+  };
+  ruby-progressbar = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
+      type = "gem";
+    };
+    version = "1.11.0";
+  };
+  ruby-terminfo = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  ruby-vips = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19pzpx406rr9s3qk527rn9y3b76sjq5pi7y0xzqiy50q3k0hhg7g";
+      type = "gem";
+    };
+    version = "2.1.4";
+  };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
+  RubyInline = {
+    dependencies = ["ZenTest"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mn175vcdm8d1a96j4lzq3dqclcml6cvv8xhnklx5vbzdfw9qmfl";
+      type = "gem";
+    };
+    version = "3.12.5";
+  };
+  rubyzip = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
+      type = "gem";
+    };
+    version = "2.3.2";
+  };
+  rugged = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x00xqq666wfi53w2bb7lgqrr3diyakncbr4sxpbvkd2yvvra913";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  safe_yaml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  sass = {
+    dependencies = ["sass-listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p95lhs0jza5l7hqci1isflxakz83xkj97lkvxl919is0lwhv2w0";
+      type = "gem";
+    };
+    version = "3.7.4";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  sassc = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
+  scrypt = {
+    dependencies = ["ffi-compiler"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jw2bn6mqpw2wbjpmsfz44pppwa6zmhg9lywimm684sxkmlxscbl";
+      type = "gem";
+    };
+    version = "3.0.7";
+  };
+  semian = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k7iz98xfv84dkdjk2d90vxnzrjqx20gg6k3fdm45q5rnp2lb9j7";
+      type = "gem";
+    };
+    version = "0.11.8";
+  };
+  sequel = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z0s3xq6dmak96296dchi8j61m0cih7j9pzdpxxsh786vrpznwlj";
+      type = "gem";
+    };
+    version = "5.52.0";
+  };
+  sequel_pg = {
+    dependencies = ["pg" "sequel"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mkbnc96bfpl5wqacblzwiwqywbx4vqrvkz57fj1h2f0bn635nk6";
+      type = "gem";
+    };
+    version = "1.14.0";
+  };
+  simplecov = {
+    dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr";
+      type = "gem";
+    };
+    version = "0.21.2";
+  };
+  simplecov-html = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb";
+      type = "gem";
+    };
+    version = "0.12.3";
+  };
+  simplecov_json_formatter = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19r15hyvh52jx7fmsrcflb58xh8l7l0zx4sxkh3hqzhq68y81pjl";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  sinatra = {
+    dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dd53rzpkxgs697pycbhhgc9vcnxra4ly4xar8ni6aiydx2f88zk";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  slather = {
+    dependencies = ["CFPropertyList" "activesupport" "clamp" "nokogiri" "xcodeproj"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wy8ws5n2gvxgkncbhrp4vkwjcbphcczw4k7y3g2wfl8fdmv5b4n";
+      type = "gem";
+    };
+    version = "2.7.2";
+  };
+  slop = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "067bvjmjdjs19bvy138hkqqvw8li3732radcd4x5f5dbf30yk3a9";
+      type = "gem";
+    };
+    version = "4.9.1";
+  };
+  snappy = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xl54r1vvrhlkxf16mxqk4kz18j0igf1f7l66kqd9dbyv6x99zfg";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  snmp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xr7rwfk7mwxzqcgir0glmyy4j27g6yixfaswsbd2qn6r8c980qf";
+      type = "gem";
+    };
+    version = "1.3.2";
+  };
+  solargraph = {
+    dependencies = ["backport" "benchmark" "e2mmap" "jaro_winkler" "maruku" "nokogiri" "parser" "reverse_markdown" "rubocop" "thor" "tilt" "yard"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06fby6dpq1jcq30x8ladig4dvz8j2pxd08mkrad3d41jx33zd2hg";
+      type = "gem";
+    };
+    version = "0.39.17";
+  };
+  sqlite3 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78";
+      type = "gem";
+    };
+    version = "1.4.2";
+  };
+  strscan = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05bzfzfwvs5ngl14yf303nvrg5wjx3srgbjqkki7x65cm66w948p";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  taglib-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nkwmlx0ja35gs4lkh7hmshlwsqk5wm1wqrc2p45icnjmrh0x5cw";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  thor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0inl77jh4ia03jw3iqm5ipr76ghal3hyjrd6r8zqsswwvi9j2xdi";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  thrift = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rb9nax4k72zbriq7k98shfcj4lf54sqjpin2xm6ma7bb48ra8mc";
+      type = "gem";
+    };
+    version = "0.15.0";
+  };
+  tilt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+      type = "gem";
+    };
+    version = "2.0.10";
+  };
+  timeout = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10bx1hcyrjqgq6a848fc1i0cgrvx42gcy8hk4vp90y6zc7k8xzbk";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  tiny_tds = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06fa5xpw5zrnhg0ds246l8sq49k22hpplqa1msxylnqibbsnb2y9";
+      type = "gem";
+    };
+    version = "2.1.5";
+  };
+  treetop = {
+    dependencies = ["polyglot"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0697qz1akblf8r3wi0s2dsjh468hfsd57fb0mrp93z35y2ni6bhh";
+      type = "gem";
+    };
+    version = "1.6.11";
+  };
+  typhoeus = {
+    dependencies = ["ethon"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03x3fxjsnhgayl4s96h0a9975awlvx2v9nmx2ba0cnliglyczdr8";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  tzinfo = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z";
+      type = "gem";
+    };
+    version = "2.0.4";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jmbimpnpjdzz8hlrppgl9spm99qh3qzbx0b81k3gkgwba8nk3yd";
+      type = "gem";
+    };
+    version = "0.0.8";
+  };
+  unicode-display_width = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1204c1jx2g89pc25qk5150mk7j5k90692i7ihgfzqnad6qni74h2";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  uuid4r = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qlcxzn8pnql34pcdrkd20kdla3k6n2sspaxp3lwwx8a87jnzbc3";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  webrick = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  websocket-driver = {
+    dependencies = ["websocket-extensions"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a3bwxd9v3ghrxzjc4vxmf4xa18c6m4xqy5wb0yk5c6b9psc7052";
+      type = "gem";
+    };
+    version = "0.7.5";
+  };
+  websocket-extensions = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  whois = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "092y84kak86ds2as9kwn5a9m2yzqwqcz4wx31jk3kin32c3hwcrn";
+      type = "gem";
+    };
+    version = "5.0.2";
+  };
+  xcodeproj = {
+    dependencies = ["CFPropertyList" "atomos" "claide" "colored2" "nanaimo" "rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xmzb1mdsnkpf7v07whz0n2wc8kg6785sc7i5zyawd8dl8517rp4";
+      type = "gem";
+    };
+    version = "1.21.0";
+  };
+  xctasks = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jmxq0dv2q4qs628cykrhsm9piysjsacbq5blsf35a0fj015bw7l";
+      type = "gem";
+    };
+    version = "0.2.2";
+  };
+  yard = {
+    dependencies = ["webrick"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d08gkis1imlvppyh8dbslk89hwj5af2fmlzvmwahgx2bm48d9sn";
+      type = "gem";
+    };
+    version = "0.9.27";
+  };
+  zeitwerk = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lmg9x683gr9mkrbq9df2m0zb0650mdfxqna0bs10js44inv7znx";
+      type = "gem";
+    };
+    version = "2.5.3";
+  };
+  ZenTest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vss0ldskqprnlvl5pczcl8p346p2ib1sc6hyprbprh6gjq4v16y";
+      type = "gem";
+    };
+    version = "4.12.1";
+  };
+  zookeeper = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06i33nf1b9hsb19na42yvxmiplijw994dhij1f71cp8n4krhymhv";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+}
diff --git a/nixpkgs/pkgs/top-level/splice.nix b/nixpkgs/pkgs/top-level/splice.nix
new file mode 100644
index 000000000000..459baaca2e63
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/splice.nix
@@ -0,0 +1,137 @@
+# The `splicedPackages' package set, and its use by `callPackage`
+#
+# The `buildPackages` pkg set is a new concept, and the vast majority package
+# expression (the other *.nix files) are not designed with it in mind. This
+# presents us with a problem with how to get the right version (build-time vs
+# run-time) of a package to a consumer that isn't used to thinking so cleverly.
+#
+# The solution is to splice the package sets together as we do below, so every
+# `callPackage`d expression in fact gets both versions. Each# derivation (and
+# each derivation's outputs) consists of the run-time version, augmented with a
+# `nativeDrv` field for the build-time version, and `crossDrv` field for the
+# run-time version.
+#
+# We could have used any names we want for the disambiguated versions, but
+# `crossDrv` and `nativeDrv` were somewhat similarly used for the old
+# cross-compiling infrastructure. The names are mostly invisible as
+# `mkDerivation` knows how to pull out the right ones for `buildDepends` and
+# friends, but a few packages use them directly, so it seemed efficient (to
+# @Ericson2314) to reuse those names, at least initially, to minimize breakage.
+#
+# For performance reasons, rather than uniformally splice in all cases, we only
+# do so when `pkgs` and `buildPackages` are distinct. The `actuallySplice`
+# parameter there the boolean value of that equality check.
+lib: pkgs: actuallySplice:
+
+let
+
+  spliceReal = { pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
+               , pkgsHostHost, pkgsHostTarget
+               , pkgsTargetTarget
+               }: let
+    mash =
+      # Other pkgs sets
+      pkgsBuildBuild // pkgsBuildTarget // pkgsHostHost // pkgsTargetTarget
+      # The same pkgs sets one probably intends
+      // pkgsBuildHost // pkgsHostTarget;
+    merge = name: {
+      inherit name;
+      value = let
+        defaultValue = mash.${name};
+        # `or {}` is for the non-derivation attsert splicing case, where `{}` is the identity.
+        valueBuildBuild = pkgsBuildBuild.${name} or {};
+        valueBuildHost = pkgsBuildHost.${name} or {};
+        valueBuildTarget = pkgsBuildTarget.${name} or {};
+        valueHostHost = pkgsHostHost.${name} or {};
+        valueHostTarget = pkgsHostTarget.${name} or {};
+        valueTargetTarget = pkgsTargetTarget.${name} or {};
+        augmentedValue = defaultValue
+          # TODO(@Ericson2314): Stop using old names after transition period
+          // (lib.optionalAttrs (pkgsBuildHost ? ${name}) { nativeDrv = valueBuildHost; })
+          // (lib.optionalAttrs (pkgsHostTarget ? ${name}) { crossDrv = valueHostTarget; })
+          // {
+            __spliced =
+                 (lib.optionalAttrs (pkgsBuildBuild ? ${name}) { buildBuild = valueBuildBuild; })
+              // (lib.optionalAttrs (pkgsBuildTarget ? ${name}) { buildTarget = valueBuildTarget; })
+              // (lib.optionalAttrs (pkgsHostHost ? ${name}) { hostHost = valueHostHost; })
+              // (lib.optionalAttrs (pkgsTargetTarget ? ${name}) { targetTarget = valueTargetTarget;
+          });
+        };
+        # Get the set of outputs of a derivation. If one derivation fails to
+        # evaluate we don't want to diverge the entire splice, so we fall back
+        # on {}
+        tryGetOutputs = value0: let
+          inherit (builtins.tryEval value0) success value;
+        in getOutputs (lib.optionalAttrs success value);
+        getOutputs = value: lib.genAttrs
+          (value.outputs or (lib.optional (value ? out) "out"))
+          (output: value.${output});
+      in
+        # The derivation along with its outputs, which we recur
+        # on to splice them together.
+        if lib.isDerivation defaultValue then augmentedValue // spliceReal {
+          pkgsBuildBuild = tryGetOutputs valueBuildBuild;
+          pkgsBuildHost = tryGetOutputs valueBuildHost;
+          pkgsBuildTarget = tryGetOutputs valueBuildTarget;
+          pkgsHostHost = tryGetOutputs valueHostHost;
+          pkgsHostTarget = getOutputs valueHostTarget;
+          pkgsTargetTarget = tryGetOutputs valueTargetTarget;
+        # Just recur on plain attrsets
+        } else if lib.isAttrs defaultValue then spliceReal {
+          pkgsBuildBuild = valueBuildBuild;
+          pkgsBuildHost = valueBuildHost;
+          pkgsBuildTarget = valueBuildTarget;
+          pkgsHostHost = valueHostHost;
+          pkgsHostTarget = valueHostTarget;
+          pkgsTargetTarget = valueTargetTarget;
+        # Don't be fancy about non-derivations. But we could have used used
+        # `__functor__` for functions instead.
+        } else defaultValue;
+    };
+  in lib.listToAttrs (map merge (lib.attrNames mash));
+
+  splicePackages = { pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
+                   , pkgsHostHost, pkgsHostTarget
+                   , pkgsTargetTarget
+                   } @ args:
+    if actuallySplice then spliceReal args else pkgsHostTarget;
+
+  splicedPackages = splicePackages {
+    inherit (pkgs)
+      pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
+      pkgsHostHost pkgsHostTarget
+      pkgsTargetTarget
+      ;
+  } // {
+    # These should never be spliced under any circumstances
+    inherit (pkgs)
+      pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
+      pkgsHostHost pkgsHostTarget
+      pkgsTargetTarget
+      buildPackages pkgs targetPackages
+      ;
+    inherit (pkgs.stdenv) buildPlatform targetPlatform hostPlatform;
+  };
+
+  splicedPackagesWithXorg = splicedPackages // builtins.removeAttrs splicedPackages.xorg [
+    "callPackage" "newScope" "overrideScope" "packages"
+  ];
+
+in
+
+{
+  inherit splicePackages;
+
+  # We use `callPackage' to be able to omit function arguments that can be
+  # obtained `pkgs` or `buildPackages` and their `xorg` package sets. Use
+  # `newScope' for sets of packages in `pkgs' (see e.g. `gnome' below).
+  callPackage = pkgs.newScope {};
+
+  callPackages = lib.callPackagesWith splicedPackagesWithXorg;
+
+  newScope = extra: lib.callPackageWith (splicedPackagesWithXorg // extra);
+
+  # Haskell package sets need this because they reimplement their own
+  # `newScope`.
+  __splicedPackages = splicedPackages // { recurseForDerivations = false; };
+}
diff --git a/nixpkgs/pkgs/top-level/stage.nix b/nixpkgs/pkgs/top-level/stage.nix
new file mode 100644
index 000000000000..9d34ddb3685f
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/stage.nix
@@ -0,0 +1,276 @@
+/* This file composes a single bootstrapping stage of the Nix Packages
+   collection. That is, it imports the functions that build the various
+   packages, and calls them with appropriate arguments. The result is a set of
+   all the packages in the Nix Packages collection for some particular platform
+   for some particular stage.
+
+   Default arguments are only provided for bootstrapping
+   arguments. Normal users should not import this directly but instead
+   import `pkgs/default.nix` or `default.nix`. */
+
+
+{ ## Misc parameters kept the same for all stages
+  ##
+
+  # Utility functions, could just import but passing in for efficiency
+  lib
+
+, # Use to reevaluate Nixpkgs
+  nixpkgsFun
+
+  ## Other parameters
+  ##
+
+, # Either null or an object in the form:
+  #
+  #   {
+  #     pkgsBuildBuild = ...;
+  #     pkgsBuildHost = ...;
+  #     pkgsBuildTarget = ...;
+  #     pkgsHostHost = ...;
+  #     # pkgsHostTarget skipped on purpose.
+  #     pkgsTargetTarget ...;
+  #   }
+  #
+  # These are references to adjacent bootstrapping stages. The more familiar
+  # `buildPackages` and `targetPackages` are defined in terms of them. If null,
+  # they are instead defined internally as the current stage. This allows us to
+  # avoid expensive splicing. `pkgsHostTarget` is skipped because it is always
+  # defined as the current stage.
+  adjacentPackages
+
+, # The standard environment to use for building packages.
+  stdenv
+
+, # This is used because stdenv replacement and the stdenvCross do benefit from
+  # the overridden configuration provided by the user, as opposed to the normal
+  # bootstrapping stdenvs.
+  allowCustomOverrides
+
+, # Non-GNU/Linux OSes are currently "impure" platforms, with their libc
+  # outside of the store.  Thus, GCC, GFortran, & co. must always look for files
+  # in standard system directories (/usr/include, etc.)
+  noSysDirs ? stdenv.buildPlatform.system != "x86_64-freebsd"
+           && stdenv.buildPlatform.system != "i686-freebsd"
+           && stdenv.buildPlatform.system != "x86_64-solaris"
+           && stdenv.buildPlatform.system != "x86_64-kfreebsd-gnu"
+
+, # The configuration attribute set
+  config
+
+, # A list of overlays (Additional `self: super: { .. }` customization
+  # functions) to be fixed together in the produced package set
+  overlays
+} @args:
+
+let
+  stdenvAdapters = self: super:
+    let
+      res = import ../stdenv/adapters.nix {
+        inherit lib config;
+        pkgs = self;
+      };
+    in res // {
+      stdenvAdapters = res;
+    };
+
+  trivialBuilders = self: super:
+    import ../build-support/trivial-builders.nix {
+      inherit lib;
+      inherit (self) runtimeShell stdenv stdenvNoCC;
+      inherit (self.pkgsBuildHost) shellcheck;
+      inherit (self.pkgsBuildHost.xorg) lndir;
+    };
+
+  stdenvBootstappingAndPlatforms = self: super: let
+    withFallback = thisPkgs:
+      (if adjacentPackages == null then self else thisPkgs)
+      // { recurseForDerivations = false; };
+  in {
+    # Here are package sets of from related stages. They are all in the form
+    # `pkgs{theirHost}{theirTarget}`. For example, `pkgsBuildHost` means their
+    # host platform is our build platform, and their target platform is our host
+    # platform. We only care about their host/target platforms, not their build
+    # platform, because the the former two alone affect the interface of the
+    # final package; the build platform is just an implementation detail that
+    # should not leak.
+    pkgsBuildBuild = withFallback adjacentPackages.pkgsBuildBuild;
+    pkgsBuildHost = withFallback adjacentPackages.pkgsBuildHost;
+    pkgsBuildTarget = withFallback adjacentPackages.pkgsBuildTarget;
+    pkgsHostHost = withFallback adjacentPackages.pkgsHostHost;
+    pkgsHostTarget = self // { recurseForDerivations = false; }; # always `self`
+    pkgsTargetTarget = withFallback adjacentPackages.pkgsTargetTarget;
+
+    # Older names for package sets. Use these when only the host platform of the
+    # package set matter (i.e. use `buildPackages` where any of `pkgsBuild*`
+    # would do, and `targetPackages` when any of `pkgsTarget*` would do (if we
+    # had more than just `pkgsTargetTarget`).)
+    buildPackages = self.pkgsBuildHost;
+    pkgs = self.pkgsHostTarget;
+    targetPackages = self.pkgsTargetTarget;
+
+    inherit stdenv;
+  };
+
+  # The old identifiers for cross-compiling. These should eventually be removed,
+  # and the packages that rely on them refactored accordingly.
+  platformCompat = self: super: let
+    inherit (super.stdenv) buildPlatform hostPlatform targetPlatform;
+  in {
+    inherit buildPlatform hostPlatform targetPlatform;
+  };
+
+  splice = self: super: import ./splice.nix lib self (adjacentPackages != null);
+
+  allPackages = self: super:
+    let res = import ./all-packages.nix
+      { inherit lib noSysDirs config overlays; }
+      res self super;
+    in res;
+
+  aliases = self: super: lib.optionalAttrs (config.allowAliases or true) (import ./aliases.nix lib self super);
+
+  # stdenvOverrides is used to avoid having multiple of versions
+  # of certain dependencies that were used in bootstrapping the
+  # standard environment.
+  stdenvOverrides = self: super:
+    (super.stdenv.overrides or (_: _: {})) self super;
+
+  # Allow packages to be overridden globally via the `packageOverrides'
+  # configuration option, which must be a function that takes `pkgs'
+  # as an argument and returns a set of new or overridden packages.
+  # The `packageOverrides' function is called with the *original*
+  # (un-overridden) set of packages, allowing packageOverrides
+  # attributes to refer to the original attributes (e.g. "foo =
+  # ... pkgs.foo ...").
+  configOverrides = self: super:
+    lib.optionalAttrs allowCustomOverrides
+      ((config.packageOverrides or (super: {})) super);
+
+  # Convenience attributes for instantitating package sets. Each of
+  # these will instantiate a new version of allPackages. Currently the
+  # following package sets are provided:
+  #
+  # - pkgsCross.<system> where system is a member of lib.systems.examples
+  # - pkgsMusl
+  # - pkgsi686Linux
+  otherPackageSets = self: super: {
+    # This maps each entry in lib.systems.examples to its own package
+    # set. Each of these will contain all packages cross compiled for
+    # that target system. For instance, pkgsCross.raspberryPi.hello,
+    # will refer to the "hello" package built for the ARM6-based
+    # Raspberry Pi.
+    pkgsCross = lib.mapAttrs (n: crossSystem:
+                              nixpkgsFun { inherit crossSystem; })
+                              lib.systems.examples;
+
+    pkgsLLVM = nixpkgsFun {
+      overlays = [
+        (self': super': {
+          pkgsLLVM = super';
+        })
+      ] ++ overlays;
+      # Bootstrap a cross stdenv using the LLVM toolchain.
+      # This is currently not possible when compiling natively,
+      # so we don't need to check hostPlatform != buildPlatform.
+      crossSystem = stdenv.hostPlatform // {
+        useLLVM = true;
+        linker = "lld";
+      };
+    };
+
+    # All packages built with the Musl libc. This will override the
+    # default GNU libc on Linux systems. Non-Linux systems are not
+    # supported.
+    pkgsMusl = if stdenv.hostPlatform.isLinux then nixpkgsFun {
+      overlays = [ (self': super': {
+        pkgsMusl = super';
+      })] ++ overlays;
+      ${if stdenv.hostPlatform == stdenv.buildPlatform
+        then "localSystem" else "crossSystem"} = {
+        parsed = stdenv.hostPlatform.parsed // {
+          abi = {
+            gnu = lib.systems.parse.abis.musl;
+            gnueabi = lib.systems.parse.abis.musleabi;
+            gnueabihf = lib.systems.parse.abis.musleabihf;
+          }.${stdenv.hostPlatform.parsed.abi.name}
+            or lib.systems.parse.abis.musl;
+        };
+      };
+    } else throw "Musl libc only supports Linux systems.";
+
+    # All packages built for i686 Linux.
+    # Used by wine, firefox with debugging version of Flash, ...
+    pkgsi686Linux = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then nixpkgsFun {
+      overlays = [ (self': super': {
+        pkgsi686Linux = super';
+      })] ++ overlays;
+      ${if stdenv.hostPlatform == stdenv.buildPlatform
+        then "localSystem" else "crossSystem"} = {
+        parsed = stdenv.hostPlatform.parsed // {
+          cpu = lib.systems.parse.cpuTypes.i686;
+        };
+      };
+    } else throw "i686 Linux package set can only be used with the x86 family.";
+
+    # Extend the package set with zero or more overlays. This preserves
+    # preexisting overlays. Prefer to initialize with the right overlays
+    # in one go when calling Nixpkgs, for performance and simplicity.
+    appendOverlays = extraOverlays:
+      if extraOverlays == []
+      then self
+      else nixpkgsFun { overlays = args.overlays ++ extraOverlays; };
+
+    # NOTE: each call to extend causes a full nixpkgs rebuild, adding ~130MB
+    #       of allocations. DO NOT USE THIS IN NIXPKGS.
+    #
+    # Extend the package set with a single overlay. This preserves
+    # preexisting overlays. Prefer to initialize with the right overlays
+    # in one go when calling Nixpkgs, for performance and simplicity.
+    # Prefer appendOverlays if used repeatedly.
+    extend = f: self.appendOverlays [f];
+
+    # Fully static packages.
+    # Currently uses Musl on Linux (couldn’t get static glibc to work).
+    pkgsStatic = nixpkgsFun ({
+      overlays = [ (self': super': {
+        pkgsStatic = super';
+      })] ++ overlays;
+    } // lib.optionalAttrs stdenv.hostPlatform.isLinux {
+      crossSystem = {
+        isStatic = true;
+        parsed = stdenv.hostPlatform.parsed // {
+          abi = {
+            gnu = lib.systems.parse.abis.musl;
+            gnueabi = lib.systems.parse.abis.musleabi;
+            gnueabihf = lib.systems.parse.abis.musleabihf;
+            musleabi = lib.systems.parse.abis.musleabi;
+            musleabihf = lib.systems.parse.abis.musleabihf;
+          }.${stdenv.hostPlatform.parsed.abi.name}
+            or lib.systems.parse.abis.musl;
+        };
+      } // lib.optionalAttrs (stdenv.hostPlatform.system == "powerpc64-linux") {
+        gcc.abi = "elfv2";
+      };
+    });
+  };
+
+  # The complete chain of package set builders, applied from top to bottom.
+  # stdenvOverlays must be last as it brings package forward from the
+  # previous bootstrapping phases which have already been overlayed.
+  toFix = lib.foldl' (lib.flip lib.extends) (self: {}) ([
+    stdenvBootstappingAndPlatforms
+    platformCompat
+    stdenvAdapters
+    trivialBuilders
+    splice
+    allPackages
+    otherPackageSets
+    aliases
+    configOverrides
+  ] ++ overlays ++ [
+    stdenvOverrides ]);
+
+in
+  # Return the complete set of packages.
+  lib.fix toFix
diff --git a/nixpkgs/pkgs/top-level/unixtools.nix b/nixpkgs/pkgs/top-level/unixtools.nix
new file mode 100644
index 000000000000..b7fea20b76bc
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/unixtools.nix
@@ -0,0 +1,195 @@
+{ pkgs, buildEnv, runCommand, lib, stdenv }:
+
+# These are some unix tools that are commonly included in the /usr/bin
+# and /usr/sbin directory under more normal distributions. Along with
+# coreutils, these are commonly assumed to be available by build
+# systems, but we can't assume they are available. In Nix, we list
+# each program by name directly through this unixtools attribute.
+
+# You should always try to use single binaries when available. For
+# instance, if your program needs to use "ps", just list it as a build
+# input, not "procps" which requires Linux.
+
+with lib;
+
+let
+  version = "1003.1-2008";
+
+  singleBinary = cmd: providers: let
+      provider = providers.${stdenv.hostPlatform.parsed.kernel.name} or providers.linux;
+      bin = "${getBin provider}/bin/${cmd}";
+      manpage = "${getOutput "man" provider}/share/man/man1/${cmd}.1.gz";
+    in runCommand "${cmd}-${provider.name}" {
+      meta = {
+        priority = 10;
+        platforms = lib.platforms.${stdenv.hostPlatform.parsed.kernel.name} or lib.platforms.all;
+      };
+      passthru = { inherit provider; };
+      preferLocalBuild = true;
+    } ''
+      if ! [ -x ${bin} ]; then
+        echo Cannot find command ${cmd}
+        exit 1
+      fi
+
+      mkdir -p $out/bin
+      ln -s ${bin} $out/bin/${cmd}
+
+      if [ -f ${manpage} ]; then
+        mkdir -p $out/share/man/man1
+        ln -s ${manpage} $out/share/man/man1/${cmd}.1.gz
+      fi
+    '';
+
+  # more is unavailable in darwin
+  # so we just use less
+  more_compat = runCommand "more-${pkgs.less.name}" {} ''
+    mkdir -p $out/bin
+    ln -s ${pkgs.less}/bin/less $out/bin/more
+  '';
+
+  bins = mapAttrs singleBinary {
+    # singular binaries
+    arp = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    col = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.text_cmds;
+    };
+    column = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.netbsd.column;
+    };
+    eject = {
+      linux = pkgs.util-linux;
+    };
+    getconf = {
+      linux = if stdenv.hostPlatform.libc == "glibc" then pkgs.stdenv.cc.libc
+              else pkgs.netbsd.getconf;
+      darwin = pkgs.darwin.system_cmds;
+    };
+    getent = {
+      linux = if stdenv.hostPlatform.libc == "glibc" then pkgs.stdenv.cc.libc
+              else pkgs.netbsd.getent;
+      darwin = pkgs.netbsd.getent;
+    };
+    getopt = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.getopt;
+    };
+    fdisk = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    fsck = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    hexdump = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    hostname = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    ifconfig = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    killall = {
+      linux = pkgs.psmisc;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    locale = {
+      linux = pkgs.glibc;
+      darwin = pkgs.netbsd.locale;
+    };
+    logger = {
+      linux = pkgs.util-linux;
+    };
+    more = {
+      linux = pkgs.util-linux;
+      darwin = more_compat;
+    };
+    mount = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    netstat = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    ping = {
+      linux = pkgs.iputils;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    ps = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.ps;
+    };
+    quota = {
+      linux = pkgs.linuxquota;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    route = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    script = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    sysctl = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.system_cmds;
+    };
+    top = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.top;
+    };
+    umount = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    whereis = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    wall = {
+      linux = pkgs.util-linux;
+    };
+    watch = {
+      linux = pkgs.procps;
+
+      # watch is the only command from procps that builds currently on
+      # Darwin. Unfortunately no other implementations exist currently!
+      darwin = pkgs.callPackage ../os-specific/linux/procps-ng {};
+    };
+    write = {
+      linux = pkgs.util-linux;
+      darwin = pkgs.darwin.basic_cmds;
+    };
+    xxd = {
+      linux = pkgs.vim;
+      darwin = pkgs.vim;
+    };
+  };
+
+  makeCompat = pname: paths:
+    buildEnv {
+      name = "${pname}-${version}";
+      inherit paths;
+    };
+
+  # Compatibility derivations
+  # Provided for old usage of these commands.
+  compat = with bins; lib.mapAttrs makeCompat {
+    procps = [ ps sysctl top watch ];
+    util-linux = [ fsck fdisk getopt hexdump mount
+                  script umount whereis write col column ];
+    nettools = [ arp hostname ifconfig netstat route ];
+  };
+in bins // compat
diff --git a/nixpkgs/pkgs/top-level/wine-packages.nix b/nixpkgs/pkgs/top-level/wine-packages.nix
new file mode 100644
index 000000000000..c8bdaeb426e7
--- /dev/null
+++ b/nixpkgs/pkgs/top-level/wine-packages.nix
@@ -0,0 +1,58 @@
+{ stdenv, config, callPackage, wineBuild }:
+
+rec {
+  fonts = callPackage ../applications/emulators/wine/fonts.nix {};
+  minimal = callPackage ../applications/emulators/wine {
+    wineRelease = config.wine.release or "stable";
+    inherit wineBuild;
+  };
+
+  base = minimal.override {
+    gettextSupport = true;
+    fontconfigSupport = stdenv.isLinux;
+    alsaSupport = stdenv.isLinux;
+    openglSupport = true;
+    vulkanSupport = true;
+    tlsSupport = true;
+    cupsSupport = true;
+    dbusSupport = stdenv.isLinux;
+    cairoSupport = stdenv.isLinux;
+    cursesSupport = true;
+    saneSupport = stdenv.isLinux;
+    pulseaudioSupport = config.pulseaudio or stdenv.isLinux;
+    udevSupport = stdenv.isLinux;
+    xineramaSupport = stdenv.isLinux;
+    sdlSupport = true;
+    mingwSupport = true;
+    usbSupport = true;
+  };
+
+  full = base.override {
+    gtkSupport = stdenv.isLinux;
+    gstreamerSupport = true;
+    openalSupport = true;
+    openclSupport = true;
+    odbcSupport = true;
+    netapiSupport = stdenv.isLinux;
+    vaSupport = stdenv.isLinux;
+    pcapSupport = true;
+    v4lSupport = stdenv.isLinux;
+    gphoto2Support = true;
+    krb5Support = true;
+    ldapSupport = true;
+    vkd3dSupport = true;
+    embedInstallers = true;
+  };
+
+  stable = base.override { wineRelease = "stable"; };
+  stableFull = full.override { wineRelease = "stable"; };
+
+  unstable = base.override { wineRelease = "unstable"; };
+  unstableFull = full.override { wineRelease = "unstable"; };
+
+  staging = base.override { wineRelease = "staging"; };
+  stagingFull = full.override { wineRelease = "staging"; };
+
+  wayland = base.override { wineRelease = "wayland"; };
+  waylandFull = full.override { wineRelease = "wayland"; };
+}