about summary refs log tree commit diff
path: root/nixpkgs/maintainers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/maintainers')
-rw-r--r--nixpkgs/maintainers/maintainer-list.nix12181
-rw-r--r--nixpkgs/maintainers/scripts/all-tarballs.nix16
-rw-r--r--nixpkgs/maintainers/scripts/build.nix55
-rw-r--r--nixpkgs/maintainers/scripts/check-hydra-by-maintainer.nix68
-rwxr-xr-xnixpkgs/maintainers/scripts/check-maintainer-github-handles.sh66
-rwxr-xr-xnixpkgs/maintainers/scripts/copy-tarballs.pl240
-rwxr-xr-xnixpkgs/maintainers/scripts/debian-patches.sh34
-rwxr-xr-xnixpkgs/maintainers/scripts/dep-licenses.sh57
-rw-r--r--nixpkgs/maintainers/scripts/eval-release.nix24
-rwxr-xr-xnixpkgs/maintainers/scripts/eval-release.sh11
-rwxr-xr-xnixpkgs/maintainers/scripts/fetch-kde-qt.sh61
-rw-r--r--nixpkgs/maintainers/scripts/find-tarballs.nix50
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/hydra-report.hs408
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/mark-broken.sh46
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/regenerate-hackage-packages.sh46
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh15
-rw-r--r--nixpkgs/maintainers/scripts/haskell/transitive-broken-packages.nix16
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/update-cabal2nix-unstable.sh17
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/update-hackage.sh35
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/update-stackage.sh57
-rwxr-xr-xnixpkgs/maintainers/scripts/hydra-eval-failures.py112
-rwxr-xr-xnixpkgs/maintainers/scripts/hydra_eval_check13
-rw-r--r--nixpkgs/maintainers/scripts/luarocks-config.lua4
-rw-r--r--nixpkgs/maintainers/scripts/luarocks-packages.csv87
-rwxr-xr-xnixpkgs/maintainers/scripts/nix-call-package5
-rwxr-xr-xnixpkgs/maintainers/scripts/nix-diff.sh277
-rw-r--r--nixpkgs/maintainers/scripts/nix-generate-from-cpan.nix25
-rwxr-xr-xnixpkgs/maintainers/scripts/nix-generate-from-cpan.pl466
-rw-r--r--nixpkgs/maintainers/scripts/nixpkgs-lint.nix24
-rwxr-xr-xnixpkgs/maintainers/scripts/nixpkgs-lint.pl173
-rwxr-xr-xnixpkgs/maintainers/scripts/patchelf-hints.sh84
-rw-r--r--nixpkgs/maintainers/scripts/pluginupdate.py555
-rwxr-xr-xnixpkgs/maintainers/scripts/rebuild-amount.sh126
-rwxr-xr-xnixpkgs/maintainers/scripts/update-channel-branches.sh112
-rwxr-xr-xnixpkgs/maintainers/scripts/update-luarocks-packages136
-rw-r--r--nixpkgs/maintainers/scripts/update-luarocks-shell.nix12
-rwxr-xr-xnixpkgs/maintainers/scripts/update-python-libraries5
-rwxr-xr-xnixpkgs/maintainers/scripts/update-redirected-urls.sh12
-rwxr-xr-xnixpkgs/maintainers/scripts/update-ruby-packages13
-rwxr-xr-xnixpkgs/maintainers/scripts/update.nix212
-rw-r--r--nixpkgs/maintainers/scripts/update.py225
-rw-r--r--nixpkgs/maintainers/scripts/vanity-manual-equalities.txt7
-rwxr-xr-xnixpkgs/maintainers/scripts/vanity.sh122
-rw-r--r--nixpkgs/maintainers/team-list.nix215
44 files changed, 16525 insertions, 0 deletions
diff --git a/nixpkgs/maintainers/maintainer-list.nix b/nixpkgs/maintainers/maintainer-list.nix
new file mode 100644
index 000000000000..f6bc656610f8
--- /dev/null
+++ b/nixpkgs/maintainers/maintainer-list.nix
@@ -0,0 +1,12181 @@
+/* List of NixOS maintainers.
+    ```nix
+    handle = {
+      # Required
+      name = "Your name";
+      email = "address@example.org";
+
+      # Optional
+      github = "GithubUsername";
+      githubId = your-github-id;
+      keys = [{
+        longkeyid = "rsa2048/0x0123456789ABCDEF";
+        fingerprint = "AAAA BBBB CCCC DDDD EEEE  FFFF 0000 1111 2222 3333";
+      }];
+    };
+    ```
+
+    where
+
+    - `handle` is the handle you are going to use in nixpkgs expressions,
+    - `name` is your, preferably real, name,
+    - `email` is your maintainer email address, and
+    - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/<userhandle>`),
+    - `githubId` is your GitHub user ID, which can be found at `https://api.github.com/users/<userhandle>`,
+    - `keys` is a list of your PGP/GPG key IDs and fingerprints.
+
+    `handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient.
+
+    If `github` begins with a numeral, `handle` should be prefixed with an underscore.
+    ```nix
+    _1example = {
+      github = "1example";
+    };
+    ```
+
+    Add PGP/GPG keys only if you actually use them to sign commits and/or mail.
+
+    To get the required PGP/GPG values for a key run
+    ```shell
+    gpg --keyid-format 0xlong --fingerprint <email> | head -n 2
+    ```
+
+    !!! Note that PGP/GPG values stored here are for informational purposes only, don't use this file as a source of truth.
+
+    More fields may be added in the future, however, in order to comply with GDPR this file should stay as minimal as possible.
+
+    Please keep the list alphabetically sorted.
+    See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data.
+*/
+{
+  _0qq = {
+    email = "0qqw0qqw@gmail.com";
+    github = "0qq";
+    githubId = 64707304;
+    name = "Dmitry Kulikov";
+  };
+  _0x4A6F = {
+    email = "mail-maintainer@0x4A6F.dev";
+    name = "Joachim Ernst";
+    github = "0x4A6F";
+    githubId = 9675338;
+    keys = [{
+      longkeyid = "rsa8192/0x87027528B006D66D";
+      fingerprint = "F466 A548 AD3F C1F1 8C88  4576 8702 7528 B006 D66D";
+    }];
+  };
+  _0xbe7a = {
+    email = "nix@be7a.de";
+    name = "Bela Stoyan";
+    github = "0xbe7a";
+    githubId = 6232980;
+    keys = [{
+      longkeyid = "rsa4096/0x6510870A77F49A99";
+      fingerprint = "2536 9E86 1AA5 9EB7 4C47  B138 6510 870A 77F4 9A99";
+    }];
+  };
+  _1000101 = {
+    email = "b1000101@pm.me";
+    github = "1000101";
+    githubId = 791309;
+    name = "Jan Hrnko";
+  };
+  _3699n = {
+    email = "nicholas@nvk.pm";
+    github = "3699n";
+    githubId = 7414843;
+    name = "Nicholas von Klitzing";
+  };
+  _3noch = {
+    email = "eacameron@gmail.com";
+    github = "3noch";
+    githubId = 882455;
+    name = "Elliot Cameron";
+  };
+  _414owen = {
+    email = "owen@owen.cafe";
+    github = "414owen";
+    githubId = 1714287;
+    name = "Owen Shepherd";
+  };
+  _6AA4FD = {
+    email = "f6442954@gmail.com";
+    github = "6AA4FD";
+    githubId = 12578560;
+    name = "Quinn Bohner";
+  };
+  a1russell = {
+    email = "adamlr6+pub@gmail.com";
+    github = "a1russell";
+    githubId = 241628;
+    name = "Adam Russell";
+  };
+  aanderse = {
+    email = "aaron@fosslib.net";
+    github = "aanderse";
+    githubId = 7755101;
+    name = "Aaron Andersen";
+  };
+  aaronjanse = {
+    email = "aaron@ajanse.me";
+    github = "aaronjanse";
+    githubId = 16829510;
+    name = "Aaron Janse";
+  };
+  aaronschif = {
+    email = "aaronschif@gmail.com";
+    github = "aaronschif";
+    githubId = 2258953;
+    name = "Aaron Schif";
+  };
+  aaschmid = {
+    email = "service@aaschmid.de";
+    github = "aaschmid";
+    githubId = 567653;
+    name = "Andreas Schmid";
+  };
+  abaldeau = {
+    email = "andreas@baldeau.net";
+    github = "baldo";
+    githubId = 178750;
+    name = "Andreas Baldeau";
+  };
+  abathur = {
+    email = "travis.a.everett+nixpkgs@gmail.com";
+    github = "abathur";
+    githubId = 2548365;
+    name = "Travis A. Everett";
+  };
+  abbe = {
+    email = "ashish.is@lostca.se";
+    github = "wahjava";
+    githubId = 2255192;
+    name = "Ashish SHUKLA";
+    keys = [{
+      longkeyid = "rsa4096/0xC746CFA9E74FA4B0";
+      fingerprint = "F682 CDCC 39DC 0FEA E116  20B6 C746 CFA9 E74F A4B0";
+    }];
+  };
+  abbradar = {
+    email = "ab@fmap.me";
+    github = "abbradar";
+    githubId = 1174810;
+    name = "Nikolay Amiantov";
+  };
+  abhi18av = {
+    email = "abhi18av@gmail.com";
+    github = "abhi18av";
+    githubId = 12799326;
+    name = "Abhinav Sharma";
+  };
+  abigailbuccaneer = {
+    email = "abigailbuccaneer@gmail.com";
+    github = "abigailbuccaneer";
+    githubId = 908758;
+    name = "Abigail Bunyan";
+  };
+  aborsu = {
+    email = "a.borsu@gmail.com";
+    github = "aborsu";
+    githubId = 5033617;
+    name = "Augustin Borsu";
+  };
+  aboseley = {
+    email = "adam.boseley@gmail.com";
+    github = "aboseley";
+    githubId = 13504599;
+    name = "Adam Boseley";
+  };
+  abuibrahim = {
+    email = "ruslan@babayev.com";
+    github = "abuibrahim";
+    githubId = 2321000;
+    name = "Ruslan Babayev";
+  };
+  acairncross = {
+    email = "acairncross@gmail.com";
+    github = "acairncross";
+    githubId = 1517066;
+    name = "Aiken Cairncross";
+  };
+  aciceri = {
+    name = "Andrea Ciceri";
+    email = "andrea.ciceri@autistici.org";
+    github = "aciceri";
+    githubId = 2318843;
+  };
+  acowley = {
+    email = "acowley@gmail.com";
+    github = "acowley";
+    githubId = 124545;
+    name = "Anthony Cowley";
+  };
+  adamlwgriffiths = {
+    email = "adam.lw.griffiths@gmail.com";
+    github = "adamlwgriffiths";
+    githubId = 1239156;
+    name = "Adam Griffiths";
+  };
+  adamt = {
+    email = "mail@adamtulinius.dk";
+    github = "adamtulinius";
+    githubId = 749381;
+    name = "Adam Tulinius";
+  };
+  adelbertc = {
+    email = "adelbertc@gmail.com";
+    github = "adelbertc";
+    githubId = 1332980;
+    name = "Adelbert Chang";
+  };
+  adev = {
+    email = "adev@adev.name";
+    github = "adevress";
+    githubId = 1773511;
+    name = "Adrien Devresse";
+  };
+  addict3d = {
+    email = "nickbathum@gmail.com";
+    github = "addict3d";
+    githubId = 49227;
+    name = "Nick Bathum";
+  };
+  adisbladis = {
+    email = "adisbladis@gmail.com";
+    github = "adisbladis";
+    githubId = 63286;
+    name = "Adam Hose";
+  };
+  Adjective-Object = {
+    email = "mhuan13@gmail.com";
+    github = "Adjective-Object";
+    githubId = 1174858;
+    name = "Maxwell Huang-Hobbs";
+  };
+  adnelson = {
+    email = "ithinkican@gmail.com";
+    github = "adnelson";
+    githubId = 5091511;
+    name = "Allen Nelson";
+  };
+  adolfogc = {
+    email = "adolfo.garcia.cr@gmail.com";
+    github = "adolfogc";
+    githubId = 1250775;
+    name = "Adolfo E. García Castro";
+  };
+  adsr = {
+    email = "as@php.net";
+    github = "adsr";
+    githubId = 315003;
+    name = "Adam Saponara";
+  };
+  aerialx = {
+    email = "aaron+nixos@aaronlindsay.com";
+    github = "AerialX";
+    githubId = 117295;
+    name = "Aaron Lindsay";
+  };
+  aespinosa = {
+    email = "allan.espinosa@outlook.com";
+    github = "aespinosa";
+    githubId = 58771;
+    name = "Allan Espinosa";
+  };
+  aethelz = {
+    email = "aethelz@protonmail.com";
+    github = "aethelz";
+    githubId = 10677343;
+    name = "Eugene";
+  };
+  aflatter = {
+    email = "flatter@fastmail.fm";
+    github = "aflatter";
+    githubId = 168;
+    name = "Alexander Flatter";
+  };
+  afldcr = {
+    email = "alex@fldcr.com";
+    github = "afldcr";
+    githubId = 335271;
+    name = "James Alexander Feldman-Crough";
+  };
+  afontain = {
+    email = "antoine.fontaine@epfl.ch";
+    github = "necessarily-equal";
+    githubId = 59283660;
+    name = "Antoine Fontaine";
+  };
+  aforemny = {
+    email = "aforemny@posteo.de";
+    github = "aforemny";
+    githubId = 610962;
+    name = "Alexander Foremny";
+  };
+  afranchuk = {
+    email = "alex.franchuk@gmail.com";
+    github = "afranchuk";
+    githubId = 4296804;
+    name = "Alex Franchuk";
+  };
+  agbrooks = {
+    email = "andrewgrantbrooks@gmail.com";
+    github = "agbrooks";
+    githubId = 19290901;
+    name = "Andrew Brooks";
+  };
+  aherrmann = {
+    email = "andreash87@gmx.ch";
+    github = "aherrmann";
+    githubId = 732652;
+    name = "Andreas Herrmann";
+  };
+  ahrzb = {
+    email = "ahrzb5@gmail.com";
+    github = "ahrzb";
+    githubId = 5220438;
+    name = "AmirHossein Roozbahani";
+  };
+  ahuzik = {
+    email = "ales.guzik@gmail.com";
+    github = "alesguzik";
+    githubId = 209175;
+    name = "Ales Huzik";
+  };
+  aij = {
+    email = "aij+git@mrph.org";
+    github = "aij";
+    githubId = 4732885;
+    name = "Ivan Jager";
+  };
+  ajs124 = {
+    email = "nix@ajs124.de";
+    github = "ajs124";
+    githubId = 1229027;
+    name = "Andreas Schrägle";
+  };
+  ajgrf = {
+    email = "a@ajgrf.com";
+    github = "ajgrf";
+    githubId = 10733175;
+    name = "Alex Griffin";
+  };
+  ak = {
+    email = "ak@formalprivacy.com";
+    github = "alexanderkjeldaas";
+    githubId = 339369;
+    name = "Alexander Kjeldaas";
+  };
+  akavel = {
+    email = "czapkofan@gmail.com";
+    github = "akavel";
+    githubId = 273837;
+    name = "Mateusz Czapliński";
+  };
+  akamaus = {
+    email = "dmitryvyal@gmail.com";
+    github = "akamaus";
+    githubId = 58955;
+    name = "Dmitry Vyal";
+  };
+  akaWolf = {
+    email = "akawolf0@gmail.com";
+    github = "akaWolf";
+    githubId = 5836586;
+    name = "Artjom Vejsel";
+  };
+  akc = {
+    email = "akc@akc.is";
+    github = "akc";
+    githubId = 1318982;
+    name = "Anders Claesson";
+  };
+  akru = {
+    email = "mail@akru.me";
+    github = "akru";
+    githubId = 786394;
+    name = "Alexander Krupenkin ";
+  };
+  akshgpt7 = {
+    email = "akshgpt7@gmail.com";
+    github = "akshgpt7";
+    githubId = 20405311;
+    name = "Aksh Gupta";
+  };
+  albakham = {
+    email = "dev@geber.ga";
+    github = "albakham";
+    githubId = 43479487;
+    name = "Titouan Biteau";
+  };
+  alerque = {
+    email = "caleb@alerque.com";
+    github = "alerque";
+    githubId = 173595;
+    name = "Caleb Maclennan";
+  };
+  alexarice = {
+    email = "alexrice999@hotmail.co.uk";
+    github = "alexarice";
+    githubId = 17208985;
+    name = "Alex Rice";
+  };
+  alexbakker = {
+    email = "ab@alexbakker.me";
+    github = "alexbakker";
+    githubId = 2387841;
+    name = "Alexander Bakker";
+  };
+  alexbiehl = {
+    email = "alexbiehl@gmail.com";
+    github = "alexbiehl";
+    githubId = 1876617;
+    name = "Alex Biehl";
+  };
+  alexchapman = {
+    email = "alex@farfromthere.net";
+    github = "AJChapman";
+    githubId = 8316672;
+    name = "Alex Chapman";
+  };
+  alexfmpe = {
+    email = "alexandre.fmp.esteves@gmail.com";
+    github = "alexfmpe";
+    githubId = 2335822;
+    name = "Alexandre Esteves";
+  };
+  alexvorobiev = {
+    email = "alexander.vorobiev@gmail.com";
+    github = "alexvorobiev";
+    githubId = 782180;
+    name = "Alex Vorobiev";
+  };
+  alex-eyre = {
+    email = "A.Eyre@sms.ed.ac.uk";
+    github = "alex-eyre";
+    githubId = 38869148;
+    name = "Alex Eyre";
+  };
+  algorith = {
+    email = "dries_van_daele@telenet.be";
+    name = "Dries Van Daele";
+  };
+  alibabzo = {
+    email = "alistair.bill@gmail.com";
+    github = "alibabzo";
+    githubId = 2822871;
+    name = "Alistair Bill";
+  };
+  alirezameskin = {
+    email = "alireza.meskin@gmail.com";
+    github = "alirezameskin";
+    githubId = 36147;
+    name = "Alireza Meskin";
+  };
+  alkeryn = {
+    email = "plbraundev@gmail.com";
+    github = "Alkeryn";
+    githubId = 11599075;
+    name = "Pierre-Louis Braun";
+  };
+  all = {
+    email = "nix-commits@lists.science.uu.nl";
+    name = "Nix Committers";
+  };
+  allonsy = {
+    email = "linuxbash8@gmail.com";
+    github = "allonsy";
+    githubId = 5892756;
+    name = "Alec Snyder";
+  };
+  AluisioASG = {
+    name = "Aluísio Augusto Silva Gonçalves";
+    email = "aluisio@aasg.name";
+    github = "AluisioASG";
+    githubId = 1904165;
+    keys = [{
+      longkeyid = "rsa4096/0x9FAA63E097506D9D";
+      fingerprint = "7FDB 17B3 C29B 5BA6 E5A9  8BB2 9FAA 63E0 9750 6D9D";
+    }];
+  };
+  almac = {
+    email = "alma.cemerlic@gmail.com";
+    github = "a1mac";
+    githubId = 60479013;
+    name = "Alma Cemerlic";
+  };
+  alunduil = {
+    email = "alunduil@gmail.com";
+    github = "alunduil";
+    githubId = 169249;
+    name = "Alex Brandt";
+  };
+  alva = {
+    email = "alva@skogen.is";
+    github = "fjallarefur";
+    githubId = 42881386;
+    name = "Alva";
+    keys = [{
+      longkeyid = "ed25519/0xF53E323342F7A6D3";
+      fingerprint = "B422 CFB1 C9EF 73F7 E1E2 698D F53E 3233 42F7 A6D3A";
+    }];
+  };
+  amanjeev = {
+    email = "aj@amanjeev.com";
+    github = "amanjeev";
+    githubId = 160476;
+    name = "Amanjeev Sethi";
+  };
+  amar1729 = {
+    email = "amar.paul16@gmail.com";
+    github = "amar1729";
+    githubId = 15623522;
+    name = "Amar Paul";
+  };
+  ambroisie = {
+    email = "bruno.nixpkgs@belanyi.fr";
+    github = "ambroisie";
+    githubId = 12465195;
+    name = "Bruno BELANYI";
+  };
+  ambrop72 = {
+    email = "ambrop7@gmail.com";
+    github = "ambrop72";
+    githubId = 2626481;
+    name = "Ambroz Bizjak";
+  };
+  amiddelk = {
+    email = "amiddelk@gmail.com";
+    github = "amiddelk";
+    githubId = 1358320;
+    name = "Arie Middelkoop";
+  };
+  amiloradovsky = {
+    email = "miloradovsky@gmail.com";
+    github = "amiloradovsky";
+    githubId = 20530052;
+    name = "Andrew Miloradovsky";
+  };
+  notbandali = {
+    name = "Amin Bandali";
+    email = "bandali@gnu.org";
+    github = "notbandali";
+    githubId = 1254858;
+    keys = [{
+      longkeyid = "rsa4096/0xA21A020248816103";
+      fingerprint = "BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103";
+    }];
+  };
+  aminechikhaoui = {
+    email = "amine.chikhaoui91@gmail.com";
+    github = "AmineChikhaoui";
+    githubId = 5149377;
+    name = "Amine Chikhaoui";
+  };
+  amorsillo = {
+    email = "andrew.morsillo@gmail.com";
+    github = "AndrewMorsillo";
+    githubId = 858965;
+    name = "Andrew Morsillo";
+  };
+  andehen = {
+    email = "git@andehen.net";
+    github = "andehen";
+    githubId = 754494;
+    name = "Anders Asheim Hennum";
+  };
+  andersk = {
+    email = "andersk@mit.edu";
+    github = "andersk";
+    githubId = 26471;
+    name = "Anders Kaseorg";
+  };
+  anderslundstedt = {
+    email = "git@anderslundstedt.se";
+    github = "anderslundstedt";
+    githubId = 4514101;
+    name = "Anders Lundstedt";
+  };
+  AndersonTorres = {
+    email = "torres.anderson.85@protonmail.com";
+    github = "AndersonTorres";
+    githubId = 5954806;
+    name = "Anderson Torres";
+  };
+  anderspapitto = {
+    email = "anderspapitto@gmail.com";
+    github = "anderspapitto";
+    githubId = 1388690;
+    name = "Anders Papitto";
+  };
+  andir = {
+    email = "andreas@rammhold.de";
+    github = "andir";
+    githubId = 638836;
+    name = "Andreas Rammhold";
+  };
+  andreasfelix = {
+    email = "fandreas@physik.hu-berlin.de";
+    github = "andreasfelix";
+    githubId = 24651767;
+    name = "Felix Andreas";
+  };
+  andres = {
+    email = "ksnixos@andres-loeh.de";
+    github = "kosmikus";
+    githubId = 293191;
+    name = "Andres Loeh";
+  };
+  andresilva = {
+    email = "andre.beat@gmail.com";
+    github = "andresilva";
+    githubId = 123550;
+    name = "André Silva";
+  };
+  andrestylianos = {
+    email = "andre.stylianos@gmail.com";
+    github = "andrestylianos";
+    githubId = 7112447;
+    name = "Andre S. Ramos";
+  };
+  andrew-d = {
+    email = "andrew@du.nham.ca";
+    github = "andrew-d";
+    githubId = 1079173;
+    name = "Andrew Dunham";
+  };
+  andrewchambers = {
+    email = "ac@acha.ninja";
+    github = "andrewchambers";
+    githubId = 962885;
+    name = "Andrew Chambers";
+  };
+  andrewrk = {
+    email = "superjoe30@gmail.com";
+    github = "andrewrk";
+    githubId = 106511;
+    name = "Andrew Kelley";
+  };
+  andsild = {
+    email = "andsild@gmail.com";
+    github = "andsild";
+    githubId = 3808928;
+    name = "Anders Sildnes";
+  };
+  andys8 = {
+    email = "andys8@users.noreply.github.com";
+    github = "andys8";
+    githubId = 13085980;
+    name = "Andy";
+  };
+  aneeshusa = {
+    email = "aneeshusa@gmail.com";
+    github = "aneeshusa";
+    githubId = 2085567;
+    name = "Aneesh Agrawal";
+  };
+  angristan = {
+    email = "angristan@pm.me";
+    github = "angristan";
+    githubId = 11699655;
+    name = "Stanislas Lange";
+  };
+  angustrau = {
+    name = "Angus Trau";
+    email = "nix@angus.ws";
+    github = "angustrau";
+    githubId = 13267947;
+  };
+  anhdle14 = {
+    name = "Le Anh Duc";
+    email = "anhdle14@icloud.com";
+    github = "anhdle14";
+    githubId = 9645992;
+    keys = [{
+      longkeyid = "rsa4096/0x0299AFF9ECBB5169";
+      fingerprint = "AA4B 8EC3 F971 D350 482E  4E20 0299 AFF9 ECBB 5169";
+    }];
+  };
+  anhduy = {
+    email = "vo@anhduy.io";
+    github = "voanhduy1512";
+    githubId = 1771266;
+    name = "Vo Anh Duy";
+  };
+  ankhers = {
+    email = "me@ankhers.dev";
+    github = "ankhers";
+    githubId = 750786;
+    name = "Justin Wood";
+  };
+  anna328p = {
+    email = "anna328p@gmail.com";
+    github = "anna328p";
+    githubId = 9790772;
+    name = "Anna";
+  };
+  anmonteiro = {
+    email = "anmonteiro@gmail.com";
+    github = "anmonteiro";
+    githubId = 661909;
+    name = "Antonio Nuno Monteiro";
+  };
+  anpryl = {
+    email = "anpryl@gmail.com";
+    github = "anpryl";
+    githubId = 5327697;
+    name = "Anatolii Prylutskyi";
+  };
+  antoinerg = {
+    email = "roygobeil.antoine@gmail.com";
+    github = "antoinerg";
+    githubId = 301546;
+    name = "Antoine Roy-Gobeil";
+  };
+  anton-dessiatov = {
+    email = "anton.dessiatov@gmail.com";
+    github = "anton-dessiatov";
+    githubId = 2873280;
+    name = "Anton Desyatov";
+  };
+  Anton-Latukha = {
+    email = "anton.latuka+nixpkgs@gmail.com";
+    github = "Anton-Latukha";
+    githubId = 20933385;
+    name = "Anton Latukha";
+  };
+  antono = {
+    email = "self@antono.info";
+    github = "antono";
+    githubId = 7622;
+    name = "Antono Vasiljev";
+  };
+  antonxy = {
+    email = "anton.schirg@posteo.de";
+    github = "antonxy";
+    githubId = 4194320;
+    name = "Anton Schirg";
+  };
+  apeschar = {
+    email = "albert@peschar.net";
+    github = "apeschar";
+    githubId = 122977;
+    name = "Albert Peschar";
+  };
+  apeyroux = {
+    email = "alex@px.io";
+    github = "apeyroux";
+    githubId = 1078530;
+    name = "Alexandre Peyroux";
+  };
+  applePrincess = {
+    email = "appleprincess@appleprincess.io";
+    github = "applePrincess";
+    githubId = 17154507;
+    name = "Lein Matsumaru";
+    keys = [{
+      longkeyid = "rsa4096/0xAAA50652F0479205";
+      fingerprint = "BF8B F725 DA30 E53E 7F11  4ED8 AAA5 0652 F047 9205";
+    }];
+  };
+  ar1a = {
+    email = "aria@ar1as.space";
+    github = "ar1a";
+    githubId = 8436007;
+    name = "Aria Edmonds";
+  };
+  arcadio = {
+    email = "arc@well.ox.ac.uk";
+    github = "arcadio";
+    githubId = 56009;
+    name = "Arcadio Rubio García";
+  };
+  archseer = {
+    email = "blaz@mxxn.io";
+    github = "archseer";
+    githubId = 1372918;
+    name = "Blaž Hrastnik";
+  };
+  arcnmx = {
+    email = "arcnmx@users.noreply.github.com";
+    github = "arcnmx";
+    githubId = 13426784;
+    name = "arcnmx";
+  };
+  arcticlimer = {
+    email = "vinigm.nho@gmail.com";
+    github = "arcticlimer";
+    githubId = 59743220;
+    name = "Vinícius Müller";
+  };
+  ardumont = {
+    email = "eniotna.t@gmail.com";
+    github = "ardumont";
+    githubId = 718812;
+    name = "Antoine R. Dumont";
+  };
+  arezvov = {
+    email = "alex@rezvov.ru";
+    github = "arezvov";
+    githubId = 58516559;
+    name = "Alexander Rezvov";
+  };
+  arianvp = {
+    email = "arian.vanputten@gmail.com";
+    github = "arianvp";
+    githubId = 628387;
+    name = "Arian van Putten";
+  };
+  aristid = {
+    email = "aristidb@gmail.com";
+    github = "aristidb";
+    githubId = 30712;
+    name = "Aristid Breitkreuz";
+  };
+  ariutta = {
+    email = "anders.riutta@gmail.com";
+    github = "ariutta";
+    githubId = 1296771;
+    name = "Anders Riutta";
+  };
+  armijnhemel = {
+    email = "armijn@tjaldur.nl";
+    github = "armijnhemel";
+    githubId = 10587952;
+    name = "Armijn Hemel";
+  };
+  arnarg = {
+    email = "arnarg@fastmail.com";
+    github = "arnarg";
+    githubId = 1291396;
+    name = "Arnar Ingason";
+  };
+  arnoldfarkas = {
+    email = "arnold.farkas@gmail.com";
+    github = "arnoldfarkas";
+    githubId = 59696216;
+    name = "Arnold Farkas";
+  };
+  arobyn = {
+    email = "shados@shados.net";
+    github = "shados";
+    githubId = 338268;
+    name = "Alexei Robyn";
+  };
+  artemist = {
+    email = "me@artem.ist";
+    github = "artemist";
+    githubId = 1226638;
+    name = "Artemis Tosini";
+    keys = [{
+      longkeyid = "rsa4096/0x4FDC96F161E7BA8A";
+      fingerprint = "3D2B B230 F9FA F0C5 1832  46DD 4FDC 96F1 61E7 BA8A";
+    }];
+  };
+  arthur = {
+    email = "me@arthur.li";
+    github = "arthurl";
+    githubId = 3965744;
+    name = "Arthur Lee";
+  };
+  arthurteisseire = {
+    email = "arthurteisseire33@gmail.com";
+    github = "arthurteisseire";
+    githubId = 37193992;
+    name = "Arthur Teisseire";
+  };
+  arturcygan = {
+    email = "arczicygan@gmail.com";
+    github = "arcz";
+    githubId = 4679721;
+    name = "Artur Cygan";
+  };
+  artuuge = {
+    email = "artuuge@gmail.com";
+    github = "artuuge";
+    githubId = 10285250;
+    name = "Artur E. Ruuge";
+  };
+  asbachb = {
+    email = "asbachb-nixpkgs-5c2a@impl.it";
+    github = "asbachb";
+    githubId = 1482768;
+    name = "Benjamin Asbach";
+  };
+  ashalkhakov = {
+    email = "artyom.shalkhakov@gmail.com";
+    github = "ashalkhakov";
+    githubId = 1270502;
+    name = "Artyom Shalkhakov";
+  };
+  ashgillman = {
+    email = "gillmanash@gmail.com";
+    github = "ashgillman";
+    githubId = 816777;
+    name = "Ashley Gillman";
+  };
+  ashkitten = {
+    email = "ashlea@protonmail.com";
+    github = "ashkitten";
+    githubId = 9281956;
+    name = "ash lea";
+  };
+  aske = {
+    email = "aske@fmap.me";
+    github = "aske";
+    githubId = 869771;
+    name = "Kirill Boltaev";
+  };
+  ashley = {
+    email = "personavinny@protonmail.com";
+    github = "paranoidcat";
+    githubId = 84152630;
+    name = "Ashley Chiara";
+  };
+  asppsa = {
+    email = "asppsa@gmail.com";
+    github = "asppsa";
+    githubId = 453170;
+    name = "Alastair Pharo";
+  };
+  astro = {
+    email = "astro@spaceboyz.net";
+    github = "astro";
+    githubId = 12923;
+    name = "Astro";
+  };
+  astsmtl = {
+    email = "astsmtl@yandex.ru";
+    github = "astsmtl";
+    githubId = 2093941;
+    name = "Alexander Tsamutali";
+  };
+  asymmetric = {
+    email = "lorenzo@mailbox.org";
+    github = "asymmetric";
+    githubId = 101816;
+    name = "Lorenzo Manacorda";
+  };
+  aszlig = {
+    email = "aszlig@nix.build";
+    github = "aszlig";
+    githubId = 192147;
+    name = "aszlig";
+    keys = [{
+      longkeyid = "ed25519/0x684089CE67EBB691";
+      fingerprint = "DD52 6BC7 767D BA28 16C0 95E5 6840 89CE 67EB B691";
+    }];
+  };
+  atemu = {
+    name = "Atemu";
+    email = "atemu.main+nixpkgs@gmail.com";
+    github = "Atemu";
+    githubId = 18599032;
+  };
+  athas = {
+    email = "athas@sigkill.dk";
+    github = "athas";
+    githubId = 55833;
+    name = "Troels Henriksen";
+  };
+  atkinschang = {
+    email = "atkinschang+nixpkgs@gmail.com";
+    github = "AtkinsChang";
+    githubId = 5193600;
+    name = "Atkins Chang";
+  };
+  atnnn = {
+    email = "etienne@atnnn.com";
+    github = "atnnn";
+    githubId = 706854;
+    name = "Etienne Laurin";
+  };
+  attila-lendvai = {
+    name = "Attila Lendvai";
+    email = "attila@lendvai.name";
+    github = "attila-lendvai";
+    githubId = 840345;
+  };
+  auntie = {
+    email = "auntieNeo@gmail.com";
+    github = "auntieNeo";
+    githubId = 574938;
+    name = "Jonathan Glines";
+  };
+  austinbutler = {
+    email = "austinabutler@gmail.com";
+    github = "austinbutler";
+    githubId = 354741;
+    name = "Austin Butler";
+  };
+  avaq = {
+    email = "nixpkgs@account.avaq.it";
+    github = "avaq";
+    githubId = 1217745;
+    name = "Aldwin Vlasblom";
+  };
+  avery = {
+    email = "averyl+nixos@protonmail.com";
+    github = "AveryLychee";
+    githubId = 9147625;
+    name = "Avery Lychee";
+  };
+  averelld = {
+    email = "averell+nixos@rxd4.com";
+    github = "averelld";
+    githubId = 687218;
+    name = "averelld";
+  };
+  avh4 = {
+    email = "gruen0aermel@gmail.com";
+    github = "avh4";
+    githubId = 1222;
+    name = "Aaron VonderHaar";
+  };
+  avitex = {
+    email = "theavitex@gmail.com";
+    github = "avitex";
+    githubId = 5110816;
+    name = "avitex";
+    keys = [{
+      longkeyid = "rsa4096/0x8B366C443CABE942";
+      fingerprint = "271E 136C 178E 06FA EA4E  B854 8B36 6C44 3CAB E942";
+    }];
+  };
+  avnik = {
+    email = "avn@avnik.info";
+    github = "avnik";
+    githubId = 153538;
+    name = "Alexander V. Nikolaev";
+  };
+  aw = {
+    email = "aw-nixos@meterriblecrew.net";
+    github = "herrwiese";
+    githubId = 206242;
+    name = "Andreas Wiese";
+  };
+  aycanirican = {
+    email = "iricanaycan@gmail.com";
+    github = "aycanirican";
+    githubId = 135230;
+    name = "Aycan iRiCAN";
+  };
+  arjix = {
+    email = "arjix@protonmail.com";
+    github = "arjix";
+    githubId = 62168569;
+    name = "arjix";
+  };
+  artturin = {
+    email = "artturin@artturin.com";
+    github = "artturin";
+    githubId = 56650223;
+    name = "Artturi N";
+  };
+  b4dm4n = {
+    email = "fabianm88@gmail.com";
+    github = "B4dM4n";
+    githubId = 448169;
+    name = "Fabian Möller";
+    keys = [{
+      longkeyid = "rsa4096/0x754B5C0963C42C5";
+      fingerprint = "6309 E212 29D4 DA30 AF24  BDED 754B 5C09 63C4 2C50";
+    }];
+  };
+  babariviere = {
+    email = "babathriviere@gmail.com";
+    github = "babariviere";
+    githubId = 12128029;
+    name = "Bastien Rivière";
+    keys = [{
+      longkeyid = "rsa4096/0xF202AD3B6EDF4BD1";
+      fingerprint = "2F85 B362 B274 0012 37E2  81EE F202 AD3B 6EDF 4BD1";
+    }];
+  };
+  babbaj = {
+    name = "babbaj";
+    email = "babbaj45@gmail.com";
+    github = "babbaj";
+    githubId = 12820770;
+    keys = [{
+      longkeyid = "rsa4096/0xF044309848A07CAC";
+      fingerprint = "6FBC A462 4EAF C69C A7C4  98C1 F044 3098 48A0 7CAC";
+    }];
+  };
+  bachp = {
+    email = "pascal.bach@nextrem.ch";
+    github = "bachp";
+    githubId = 333807;
+    name = "Pascal Bach";
+  };
+  backuitist = {
+    email = "biethb@gmail.com";
+    github = "backuitist";
+    githubId = 1017537;
+    name = "Bruno Bieth";
+  };
+  badmutex = {
+    email = "github@badi.sh";
+    github = "badmutex";
+    githubId = 35324;
+    name = "Badi' Abdul-Wahid";
+  };
+  balajisivaraman = {
+    email = "sivaraman.balaji@gmail.com";
+    name = "Balaji Sivaraman";
+  };
+  baloo = {
+    email = "nixpkgs@superbaloo.net";
+    github = "baloo";
+    githubId = 59060;
+    name = "Arthur Gautier";
+  };
+  balsoft = {
+    email = "balsoft75@gmail.com";
+    github = "balsoft";
+    githubId = 18467667;
+    name = "Alexander Bantyev";
+  };
+  bandresen = {
+    email = "bandresen@gmail.com";
+    github = "bandresen";
+    githubId = 80325;
+    name = "Benjamin Andresen";
+  };
+  baracoder = {
+    email = "baracoder@googlemail.com";
+    github = "baracoder";
+    githubId = 127523;
+    name = "Herman Fries";
+  };
+  barrucadu = {
+    email = "mike@barrucadu.co.uk";
+    github = "barrucadu";
+    githubId = 75235;
+    name = "Michael Walker";
+  };
+  bartuka = {
+    email = "wand@hey.com";
+    github = "wandersoncferreira";
+    githubId = 17708295;
+    name = "Wanderson Ferreira";
+    keys = [{
+      longkeyid = "rsa4096/0x56840A614DBE37AE";
+      fingerprint = "A3E1 C409 B705 50B3 BF41  492B 5684 0A61 4DBE 37AE";
+    }];
+  };
+  basvandijk = {
+    email = "v.dijk.bas@gmail.com";
+    github = "basvandijk";
+    githubId = 576355;
+    name = "Bas van Dijk";
+  };
+  Baughn = {
+    email = "sveina@gmail.com";
+    github = "Baughn";
+    githubId = 45811;
+    name = "Svein Ove Aas";
+  };
+  bb010g = {
+    email = "me@bb010g.com";
+    github = "bb010g";
+    githubId = 340132;
+    name = "Brayden Banks";
+  };
+  bbarker = {
+    email = "brandon.barker@gmail.com";
+    github = "bbarker";
+    githubId = 916366;
+    name = "Brandon Elam Barker";
+  };
+  bbigras = {
+    email = "bigras.bruno@gmail.com";
+    github = "bbigras";
+    githubId = 24027;
+    name = "Bruno Bigras";
+  };
+  bcarrell = {
+    email = "brandoncarrell@gmail.com";
+    github = "bcarrell";
+    githubId = 1015044;
+    name = "Brandon Carrell";
+  };
+  bcc32 = {
+    email = "me@bcc32.com";
+    github = "bcc32";
+    githubId = 1239097;
+    name = "Aaron Zeng";
+  };
+  bcdarwin = {
+    email = "bcdarwin@gmail.com";
+    github = "bcdarwin";
+    githubId = 164148;
+    name = "Ben Darwin";
+  };
+  bdesham = {
+    email = "benjamin@esham.io";
+    github = "bdesham";
+    githubId = 354230;
+    name = "Benjamin Esham";
+  };
+  bdimcheff = {
+    email = "brandon@dimcheff.com";
+    github = "bdimcheff";
+    githubId = 14111;
+    name = "Brandon Dimcheff";
+  };
+  beardhatcode = {
+    name = "Robbert Gurdeep Singh";
+    email = "nixpkgs@beardhatcode.be";
+    github = "beardhatcode";
+    githubId = 662538;
+  };
+  beezow = {
+    name = "beezow";
+    email = "zbeezow@gmail.com";
+    github = "beezow";
+    githubId = 42082156;
+  };
+  bendlas = {
+    email = "herwig@bendlas.net";
+    github = "bendlas";
+    githubId = 214787;
+    name = "Herwig Hochleitner";
+  };
+  benley = {
+    email = "benley@gmail.com";
+    github = "benley";
+    githubId = 1432730;
+    name = "Benjamin Staffin";
+  };
+  benneti = {
+    name = "Benedikt Tissot";
+    email = "benedikt.tissot@googlemail.com";
+    github = "benneti";
+    githubId = 11725645;
+  };
+  bertof = {
+    name = "Filippo Berto";
+    email = "berto.f@protonmail.com";
+    github = "bertof";
+    githubId = 9915675;
+    keys = [{
+      longkeyid = "rsa4096/0xFE98AE5EC52B1056";
+      fingerprint = "17C5 1EF9 C0FE 2EB2 FE56  BB53 FE98 AE5E C52B 1056";
+    }];
+  };
+  bennofs = {
+    email = "benno.fuenfstueck@gmail.com";
+    github = "bennofs";
+    githubId = 3192959;
+    name = "Benno Fünfstück";
+  };
+  benpye = {
+    email = "ben@curlybracket.co.uk";
+    github = "benpye";
+    githubId = 442623;
+    name = "Ben Pye";
+  };
+  benwbooth = {
+    email = "benwbooth@gmail.com";
+    github = "benwbooth";
+    githubId = 75972;
+    name = "Ben Booth";
+  };
+  berberman = {
+    email = "berberman@yandex.com";
+    github = "berberman";
+    githubId = 26041945;
+    name = "Potato Hatsue";
+  };
+  berce = {
+    email = "bert.moens@gmail.com";
+    github = "berce";
+    githubId = 10439709;
+    name = "Bert Moens";
+  };
+  berdario = {
+    email = "berdario@gmail.com";
+    github = "berdario";
+    githubId = 752835;
+    name = "Dario Bertini";
+  };
+  bergey = {
+    email = "bergey@teallabs.org";
+    github = "bergey";
+    githubId = 251106;
+    name = "Daniel Bergey";
+  };
+  betaboon = {
+    email = "betaboon@0x80.ninja";
+    github = "betaboon";
+    githubId = 7346933;
+    name = "betaboon";
+  };
+  bfortz = {
+    email = "bernard.fortz@gmail.com";
+    github = "bfortz";
+    githubId = 16426882;
+    name = "Bernard Fortz";
+  };
+  bgamari = {
+    email = "ben@smart-cactus.org";
+    github = "bgamari";
+    githubId = 1010174;
+    name = "Ben Gamari";
+  };
+  bhall = {
+    email = "brendan.j.hall@bath.edu";
+    github = "brendan-hall";
+    githubId = 34919100;
+    name = "Brendan Hall";
+  };
+  bhipple = {
+    email = "bhipple@protonmail.com";
+    github = "bhipple";
+    githubId = 2071583;
+    name = "Benjamin Hipple";
+  };
+  bhougland = {
+    email = "benjamin.hougland@gmail.com";
+    github = "bhougland18";
+    githubId = 28444296;
+    name = "Benjamin Hougland";
+  };
+  binarin = {
+    email = "binarin@binarin.ru";
+    github = "binarin";
+    githubId = 185443;
+    name = "Alexey Lebedeff";
+  };
+  bjg = {
+    email = "bjg@gnu.org";
+    name = "Brian Gough";
+  };
+  bjornfor = {
+    email = "bjorn.forsman@gmail.com";
+    github = "bjornfor";
+    githubId = 133602;
+    name = "Bjørn Forsman";
+  };
+  bkchr = {
+    email = "nixos@kchr.de";
+    github = "bkchr";
+    githubId = 5718007;
+    name = "Bastian Köcher";
+  };
+  blaggacao = {
+    name = "David Arnold";
+    email = "dar@xoe.solutions";
+    github = "blaggacao";
+    githubId = 7548295;
+  };
+  blanky0230 = {
+    email = "blanky0230@gmail.com";
+    github = "blanky0230";
+    githubId = 5700358;
+    name = "Thomas Blank";
+  };
+  blitz = {
+    email = "js@alien8.de";
+    github = "blitz";
+    githubId = 37907;
+    name = "Julian Stecklina";
+  };
+  bloomvdomino = {
+    name = "Laura Fäßler";
+    email = "0x@ytex.de";
+    github = "bloomvdomino";
+    githubId = 33204710;
+  };
+  bluescreen303 = {
+    email = "mathijs@bluescreen303.nl";
+    github = "bluescreen303";
+    githubId = 16330;
+    name = "Mathijs Kwik";
+  };
+  bmilanov = {
+    name = "Biser Milanov";
+    email = "bmilanov11+nixpkgs@gmail.com";
+    github = "bmilanov";
+    githubId = 30090366;
+  };
+  bmwalters = {
+    name = "Bradley Walters";
+    email = "oss@walters.app";
+    github = "bmwalters";
+    githubId = 4380777;
+  };
+  bobakker = {
+    email = "bobakk3r@gmail.com";
+    github = "bobakker";
+    githubId = 10221570;
+    name = "Bo Bakker";
+  };
+  bobvanderlinden = {
+    email = "bobvanderlinden@gmail.com";
+    github = "bobvanderlinden";
+    githubId = 6375609;
+    name = "Bob van der Linden";
+  };
+  bodil = {
+    email = "nix@bodil.org";
+    github = "bodil";
+    githubId = 17880;
+    name = "Bodil Stokke";
+  };
+  boj = {
+    email = "brian@uncannyworks.com";
+    github = "boj";
+    githubId = 50839;
+    name = "Brian Jones";
+  };
+  bootstrap-prime = {
+    email = "bootstrap.prime@gmail.com";
+    github = "bootstrap-prime";
+    githubId = 68566724;
+    name = "bootstrap-prime";
+  };
+  commandodev = {
+    email = "ben@perurbis.com";
+    github = "commandodev";
+    githubId = 87764;
+    name = "Ben Ford";
+  };
+  borisbabic = {
+    email = "boris.ivan.babic@gmail.com";
+    github = "borisbabic";
+    githubId = 1743184;
+    name = "Boris Babić";
+  };
+  bosu = {
+    email = "boriss@gmail.com";
+    github = "bosu";
+    githubId = 3465841;
+    name = "Boris Sukholitko";
+  };
+  bouk = {
+    name = "Bouke van der Bijl";
+    email = "i@bou.ke";
+    github = "bouk";
+    githubId = 97820;
+  };
+  bradediger = {
+    email = "brad@bradediger.com";
+    github = "bradediger";
+    githubId = 4621;
+    name = "Brad Ediger";
+  };
+  brainrape = {
+    email = "martonboros@gmail.com";
+    github = "brainrape";
+    githubId = 302429;
+    name = "Marton Boros";
+  };
+  bramd = {
+    email = "bram@bramd.nl";
+    github = "bramd";
+    githubId = 86652;
+    name = "Bram Duvigneau";
+  };
+  braydenjw = {
+    email = "nixpkgs@willenborg.ca";
+    github = "braydenjw";
+    githubId = 2506621;
+    name = "Brayden Willenborg";
+  };
+  brian-dawn = {
+    email = "brian.t.dawn@gmail.com";
+    github = "brian-dawn";
+    githubId = 1274409;
+    name = "Brian Dawn";
+  };
+  brianhicks = {
+    email = "brian@brianthicks.com";
+    github = "BrianHicks";
+    githubId = 355401;
+    name = "Brian Hicks";
+  };
+  bricewge = {
+    email = "bricewge@gmail.com";
+    github = "bricewge";
+    githubId = 5525646;
+    name = "Brice Waegeneire";
+  };
+  Br1ght0ne = {
+    email = "brightone@protonmail.com";
+    github = "Br1ght0ne";
+    githubId = 12615679;
+    name = "Oleksii Filonenko";
+    keys = [{
+      longkeyid = "rsa3072/0xA1BC8428323ECFE8";
+      fingerprint = "F549 3B7F 9372 5578 FDD3  D0B8 A1BC 8428 323E CFE8";
+    }];
+  };
+  bsima = {
+    email = "ben@bsima.me";
+    github = "bsima";
+    githubId = 200617;
+    name = "Ben Sima";
+  };
+  bstrik = {
+    email = "dutchman55@gmx.com";
+    github = "bstrik";
+    githubId = 7716744;
+    name = "Berno Strik";
+  };
+  breakds = {
+    email = "breakds@gmail.com";
+    github = "breakds";
+    githubId = 1111035;
+    name = "Break Yang";
+  };
+  brettlyons = {
+    email = "blyons@fastmail.com";
+    github = "brettlyons";
+    githubId = 3043718;
+    name = "Brett Lyons";
+  };
+  brodes = {
+    email = "me@brod.es";
+    github = "brhoades";
+    githubId = 4763746;
+    name = "Billy Rhoades";
+    keys = [{
+      longkeyid = "rsa4096/0x8AE74787A4B7C07E";
+      fingerprint = "BF4FCB85C69989B4ED95BF938AE74787A4B7C07E";
+    }];
+  };
+  bryanasdev000 = {
+    email = "bryanasdev000@gmail.com";
+    github = "bryanasdev000";
+    githubId = 53131727;
+    name = "Bryan Albuquerque";
+  };
+  btlvr = {
+    email = "btlvr@protonmail.com";
+    github = "btlvr";
+    githubId = 32319131;
+    name = "Brett L";
+  };
+  buckley310 = {
+    email = "sean.bck@gmail.com";
+    github = "buckley310";
+    githubId = 2379774;
+    name = "Sean Buckley";
+  };
+  buffet = {
+    email = "niclas@countingsort.com";
+    github = "buffet";
+    githubId = 33751841;
+    name = "Niclas Meyer";
+  };
+  bugworm = {
+    email = "bugworm@zoho.com";
+    github = "bugworm";
+    githubId = 7214361;
+    name = "Roman Gerasimenko";
+  };
+  bburdette = {
+    email = "bburdette@protonmail.com";
+    github = "bburdette";
+    githubId = 157330;
+    name = "Ben Burdette";
+  };
+  bzizou = {
+    email = "Bruno@bzizou.net";
+    github = "bzizou";
+    githubId = 2647566;
+    name = "Bruno Bzeznik";
+  };
+  c0bw3b = {
+    email = "c0bw3b@gmail.com";
+    github = "c0bw3b";
+    githubId = 24417923;
+    name = "Renaud";
+  };
+  c00w = {
+    email = "nix@daedrum.net";
+    github = "c00w";
+    githubId = 486199;
+    name = "Colin";
+  };
+  c0deaddict = {
+    email = "josvanbakel@protonmail.com";
+    github = "c0deaddict";
+    githubId = 510553;
+    name = "Jos van Bakel";
+  };
+  c4605 = {
+    email = "bolasblack@gmail.com";
+    github = "bolasblack";
+    githubId = 382011;
+    name = "c4605";
+  };
+  caadar = {
+    email = "v88m@posteo.net";
+    github = "caadar";
+    githubId = 15320726;
+    name = "Car Cdr";
+  };
+  cab404 = {
+    email = "cab404@mailbox.org";
+    github = "cab404";
+    githubId = 6453661;
+    name = "Vladimir Serov";
+    keys = [
+      # compare with https://keybase.io/cab404
+      {
+        fingerprint = "1BB96810926F4E715DEF567E6BA7C26C3FDF7BB3";
+        longkeyid = "rsa3072/0xCBDECF658C38079E";
+      }
+      {
+        fingerprint = "1EBC648C64D6045463013B3EB7EFFC271D55DB8A";
+        longkeyid = "ed25519/0xB7EFFC271D55DB8A";
+      }
+    ];
+  };
+  calbrecht = {
+    email = "christian.albrecht@mayflower.de";
+    github = "calbrecht";
+    githubId = 1516457;
+    name = "Christian Albrecht";
+  };
+  callahad = {
+    email = "dan.callahan@gmail.com";
+    github = "callahad";
+    githubId = 24193;
+    name = "Dan Callahan";
+  };
+  calvertvl = {
+    email = "calvertvl@gmail.com";
+    github = "calvertvl";
+    githubId = 7435854;
+    name = "Victor Calvert";
+  };
+  campadrenalin = {
+    email = "campadrenalin@gmail.com";
+    github = "campadrenalin";
+    githubId = 289492;
+    name = "Philip Horger";
+  };
+  candeira = {
+    email = "javier@candeira.com";
+    github = "candeira";
+    githubId = 91694;
+    name = "Javier Candeira";
+  };
+  canndrew = {
+    email = "shum@canndrew.org";
+    github = "canndrew";
+    githubId = 5555066;
+    name = "Andrew Cann";
+  };
+  cap = {
+    name = "cap";
+    email = "nixos_xasenw9@digitalpostkasten.de";
+    github = "scaredmushroom";
+    githubId = 45340040;
+  };
+  carlosdagos = {
+    email = "m@cdagostino.io";
+    github = "carlosdagos";
+    githubId = 686190;
+    name = "Carlos D'Agostino";
+  };
+  carlsverre = {
+    email = "accounts@carlsverre.com";
+    github = "carlsverre";
+    githubId = 82591;
+    name = "Carl Sverre";
+  };
+  cartr = {
+    email = "carter.sande@duodecima.technology";
+    github = "cartr";
+    githubId = 5241813;
+    name = "Carter Sande";
+  };
+  casey = {
+    email = "casey@rodarmor.net";
+    github = "casey";
+    githubId = 1945;
+    name = "Casey Rodarmor";
+  };
+  catern = {
+    email = "sbaugh@catern.com";
+    github = "catern";
+    githubId = 5394722;
+    name = "Spencer Baugh";
+  };
+  caugner = {
+    email = "nixos@caugner.de";
+    github = "caugner";
+    githubId = 495429;
+    name = "Claas Augner";
+  };
+  cbley = {
+    email = "claudio.bley@gmail.com";
+    github = "avdv";
+    githubId = 3471749;
+    name = "Claudio Bley";
+  };
+  cburstedde = {
+    email = "burstedde@ins.uni-bonn.de";
+    github = "cburstedde";
+    githubId = 109908;
+    name = "Carsten Burstedde";
+    keys = [
+      {
+        longkeyid = "rsa2048/0x0704CD9E550A6BCD";
+        fingerprint = "1127 A432 6524 BF02 737B  544E 0704 CD9E 550A 6BCD";
+      }
+    ];
+  };
+  cdepillabout = {
+    email = "cdep.illabout@gmail.com";
+    github = "cdepillabout";
+    githubId = 64804;
+    name = "Dennis Gosnell";
+  };
+  ccellado = {
+    email = "annplague@gmail.com";
+    github = "ccellado";
+    githubId = 44584960;
+    name = "Denis Khalmatov";
+  };
+  ceedubs = {
+    email = "ceedubs@gmail.com";
+    github = "ceedubs";
+    githubId = 977929;
+    name = "Cody Allen";
+  };
+  centromere = {
+    email = "nix@centromere.net";
+    github = "centromere";
+    githubId = 543423;
+    name = "Alex Wied";
+  };
+  cfouche = {
+    email = "chaddai.fouche@gmail.com";
+    github = "Chaddai";
+    githubId = 5771456;
+    name = "Chaddaï Fouché";
+  };
+  cfsmp3 = {
+    email = "carlos@sanz.dev";
+    github = "cfsmp3";
+    githubId = 5949913;
+    name = "Carlos Fernandez Sanz";
+  };
+  cge = {
+    email = "cevans@evanslabs.org";
+    github = "cgevans";
+    githubId = 2054509;
+    name = "Constantine Evans";
+    keys = [
+      {
+        longkeyid = "rsa4096/0xB67DB1D20A93A9F9";
+        fingerprint = "32B1 6EE7 DBA5 16DE 526E  4C5A B67D B1D2 0A93 A9F9";
+      }
+      {
+        longkeyid = "rsa4096/0x1A1D58B86AE2AABD";
+        fingerprint = "669C 1D24 5A87 DB34 6BE4  3216 1A1D 58B8 6AE2 AABD";
+      }
+    ];
+  };
+  chaduffy = {
+    email = "charles@dyfis.net";
+    github = "charles-dyfis-net";
+    githubId = 22370;
+    name = "Charles Duffy";
+  };
+  changlinli = {
+    email = "mail@changlinli.com";
+    github = "changlinli";
+    githubId = 1762540;
+    name = "Changlin Li";
+  };
+  CharlesHD = {
+    email = "charleshdespointes@gmail.com";
+    github = "CharlesHD";
+    githubId = 6608071;
+    name = "Charles Huyghues-Despointes";
+  };
+  chaoflow = {
+    email = "flo@chaoflow.net";
+    github = "chaoflow";
+    githubId = 89596;
+    name = "Florian Friesdorf";
+  };
+  chattered = {
+    email = "me@philscotted.com";
+    name = "Phil Scott";
+  };
+  ChengCat = {
+    email = "yu@cheng.cat";
+    github = "ChengCat";
+    githubId = 33503784;
+    name = "Yucheng Zhang";
+  };
+  cheriimoya = {
+    email = "github@hausch.xyz";
+    github = "cheriimoya";
+    githubId = 28303440;
+    name = "Max Hausch";
+  };
+  chessai = {
+    email = "chessai1996@gmail.com";
+    github = "chessai";
+    githubId = 18648043;
+    name = "Daniel Cartwright";
+  };
+  chiiruno = {
+    email = "okinan@protonmail.com";
+    github = "chiiruno";
+    githubId = 30435868;
+    name = "Okina Matara";
+  };
+  Chili-Man = {
+    email = "dr.elhombrechile@gmail.com";
+    name = "Diego Rodriguez";
+    github = "Chili-Man";
+    githubId = 631802;
+    keys = [{
+      longkeyid = "rsa4096/0xE0EBAD78F0190BD9";
+      fingerprint = "099E 3F97 FA08 3D47 8C75  EBEC E0EB AD78 F019 0BD9";
+    }];
+  };
+  chiroptical = {
+    email = "chiroptical@gmail.com";
+    github = "chiroptical";
+    githubId = 3086255;
+    name = "Barry Moore II";
+  };
+  chivay = {
+    email = "hubert.jasudowicz@gmail.com";
+    github = "chivay";
+    githubId = 14790226;
+    name = "Hubert Jasudowicz";
+  };
+  chkno = {
+    email = "chuck@intelligence.org";
+    github = "chkno";
+    githubId = 1118859;
+    name = "Scott Worley";
+  };
+  choochootrain = {
+    email = "hurshal@imap.cc";
+    github = "choochootrain";
+    githubId = 803961;
+    name = "Hurshal Patel";
+  };
+  chpatrick = {
+    email = "chpatrick@gmail.com";
+    github = "chpatrick";
+    githubId = 832719;
+    name = "Patrick Chilton";
+  };
+  chreekat = {
+    email = "b@chreekat.net";
+    github = "chreekat";
+    githubId = 538538;
+    name = "Bryan Richter";
+  };
+  chris-martin = {
+    email = "ch.martin@gmail.com";
+    github = "chris-martin";
+    githubId = 399718;
+    name = "Chris Martin";
+  };
+  chrisaw = {
+    email = "home@chrisaw.com";
+    github = "cawilliamson";
+    githubId = 1141769;
+    name = "Christopher A. Williamson";
+  };
+  chrisjefferson = {
+    email = "chris@bubblescope.net";
+    github = "chrisjefferson";
+    githubId = 811527;
+    name = "Christopher Jefferson";
+  };
+  chrisrosset = {
+    email = "chris@rosset.org.uk";
+    github = "chrisrosset";
+    githubId = 1103294;
+    name = "Christopher Rosset";
+  };
+  christianharke = {
+    email = "christian@harke.ch";
+    github = "christianharke";
+    githubId = 13007345;
+    name = "Christian Harke";
+    keys = [{
+      longkeyid = "rsa4096/0x830A9728630966F4";
+      fingerprint = "4EBB 30F1 E89A 541A A7F2  52BE 830A 9728 6309 66F4";
+    }];
+  };
+  christopherpoole = {
+    email = "mail@christopherpoole.net";
+    github = "christopherpoole";
+    githubId = 2245737;
+    name = "Christopher Mark Poole";
+  };
+  chuahou = {
+    email = "human+github@chuahou.dev";
+    github = "chuahou";
+    githubId = 12386805;
+    name = "Chua Hou";
+  };
+  chvp = {
+    email = "nixpkgs@cvpetegem.be";
+    github = "chvp";
+    githubId = 42220376;
+    name = "Charlotte Van Petegem";
+  };
+  ciil = {
+    email = "simon@lackerbauer.com";
+    github = "ciil";
+    githubId = 3956062;
+    name = "Simon Lackerbauer";
+  };
+  citadelcore = {
+    email = "alex@arctarus.co.uk";
+    github = "citadelcore";
+    githubId = 5567402;
+    name = "Alex Zero";
+    keys = [{
+      longkeyid = "rsa4096/0xA51550EDB450302C";
+      fingerprint = "A0AA 4646 B8F6 9D45 4553  5A88 A515 50ED B450 302C";
+    }];
+  };
+  cizra = {
+    email = "todurov+nix@gmail.com";
+    github = "cizra";
+    githubId = 2131991;
+    name = "Elmo Todurov";
+  };
+  cjab = {
+    email = "chad+nixpkgs@jablonski.xyz";
+    github = "cjab";
+    githubId = 136485;
+    name = "Chad Jablonski";
+  };
+  ck3d = {
+    email = "ck3d@gmx.de";
+    github = "ck3d";
+    githubId = 25088352;
+    name = "Christian Kögler";
+  };
+  clkamp = {
+    email = "c@lkamp.de";
+    github = "clkamp";
+    githubId = 46303707;
+    name = "Christian Lütke-Stetzkamp";
+  };
+  ckauhaus = {
+    email = "kc@flyingcircus.io";
+    github = "ckauhaus";
+    githubId = 1448923;
+    name = "Christian Kauhaus";
+  };
+  cko = {
+    email = "christine.koppelt@gmail.com";
+    github = "cko";
+    githubId = 68239;
+    name = "Christine Koppelt";
+  };
+  clacke = {
+    email = "claes.wallin@greatsinodevelopment.com";
+    github = "clacke";
+    githubId = 199180;
+    name = "Claes Wallin";
+  };
+  cleverca22 = {
+    email = "cleverca22@gmail.com";
+    github = "cleverca22";
+    githubId = 848609;
+    name = "Michael Bishop";
+  };
+  cmacrae = {
+    email = "hi@cmacr.ae";
+    github = "cmacrae";
+    githubId = 3392199;
+    name = "Calum MacRae";
+  };
+  cmars = {
+    email = "nix@cmars.tech";
+    github = "cmars";
+    githubId = 23741;
+    name = "Casey Marshall";
+    keys = [{
+      longkeyid = "rsa3072/0x6DEC2758ACD5A973";
+      fingerprint = "6B78 7E5F B493 FA4F D009  5D10 6DEC 2758 ACD5 A973";
+    }];
+  };
+  cmcdragonkai = {
+    email = "roger.qiu@matrix.ai";
+    github = "cmcdragonkai";
+    githubId = 640797;
+    name = "Roger Qiu";
+  };
+  cmfwyp = {
+    email = "cmfwyp@riseup.net";
+    github = "cmfwyp";
+    githubId = 20808761;
+    name = "cmfwyp";
+  };
+  cobbal = {
+    email = "andrew.cobb@gmail.com";
+    github = "cobbal";
+    githubId = 180339;
+    name = "Andrew Cobb";
+  };
+  coconnor = {
+    email = "coreyoconnor@gmail.com";
+    github = "coreyoconnor";
+    githubId = 34317;
+    name = "Corey O'Connor";
+  };
+  codsl = {
+    email = "codsl@riseup.net";
+    github = "codsl";
+    githubId = 6402559;
+    name = "codsl";
+  };
+  codyopel = {
+    email = "codyopel@gmail.com";
+    github = "codyopel";
+    githubId = 5561189;
+    name = "Cody Opel";
+  };
+  cohei = {
+    email = "a.d.xvii.kal.mai@gmail.com";
+    github = "cohei";
+    githubId = 3477497;
+    name = "TANIGUCHI Kohei";
+  };
+  cohencyril = {
+    email = "cyril.cohen@inria.fr";
+    github = "CohenCyril";
+    githubId = 298705;
+    name = "Cyril Cohen";
+  };
+  colemickens = {
+    email = "cole.mickens@gmail.com";
+    github = "colemickens";
+    githubId = 327028;
+    name = "Cole Mickens";
+  };
+  colescott = {
+    email = "colescottsf@gmail.com";
+    github = "colescott";
+    githubId = 5684605;
+    name = "Cole Scott";
+  };
+  cole-h = {
+    name = "Cole Helbling";
+    email = "cole.e.helbling@outlook.com";
+    github = "cole-h";
+    githubId = 28582702;
+    keys = [{
+      longkeyid = "rsa4096/0xB37E0F2371016A4C";
+      fingerprint = "68B8 0D57 B2E5 4AC3 EC1F  49B0 B37E 0F23 7101 6A4C";
+    }];
+  };
+  collares = {
+    email = "mauricio@collares.org";
+    github = "collares";
+    githubId = 244239;
+    name = "Mauricio Collares";
+  };
+  copumpkin = {
+    email = "pumpkingod@gmail.com";
+    github = "copumpkin";
+    githubId = 2623;
+    name = "Dan Peebles";
+  };
+  corngood = {
+    email = "corngood@gmail.com";
+    github = "corngood";
+    githubId = 3077118;
+    name = "David McFarland";
+  };
+  coroa = {
+    email = "jonas@chaoflow.net";
+    github = "coroa";
+    githubId = 2552981;
+    name = "Jonas Hörsch";
+  };
+  costrouc = {
+    email = "chris.ostrouchov@gmail.com";
+    github = "costrouc";
+    githubId = 1740337;
+    name = "Chris Ostrouchov";
+  };
+  confus = {
+    email = "con-f-use@gmx.net";
+    github = "con-f-use";
+    githubId = 11145016;
+    name = "J.C.";
+  };
+  contrun = {
+    email = "uuuuuu@protonmail.com";
+    github = "contrun";
+    githubId = 32609395;
+    name = "B YI";
+  };
+  conradmearns = {
+    email = "conradmearns+github@pm.me";
+    github = "ConradMearns";
+    githubId = 5510514;
+    name = "Conrad Mearns";
+  };
+  couchemar = {
+    email = "couchemar@yandex.ru";
+    github = "couchemar";
+    githubId = 1573344;
+    name = "Andrey Pavlov";
+  };
+  cpages = {
+    email = "page@ruiec.cat";
+    github = "cpages";
+    githubId = 411324;
+    name = "Carles Pagès";
+  };
+  cpu = {
+    email = "daniel@binaryparadox.net";
+    github = "cpu";
+    githubId = 292650;
+    name = "Daniel McCarney";
+    keys = [{
+      longkeyid = "rsa2048/0x08FB2BFC470E75B4";
+      fingerprint = "8026 D24A A966 BF9C D3CD  CB3C 08FB 2BFC 470E 75B4";
+    }];
+  };
+  craigem = {
+    email = "craige@mcwhirter.io";
+    github = "craigem";
+    githubId = 6470493;
+    name = "Craige McWhirter";
+  };
+  cransom = {
+    email = "cransom@hubns.net";
+    github = "cransom";
+    githubId = 1957293;
+    name = "Casey Ransom";
+  };
+  CrazedProgrammer = {
+    email = "crazedprogrammer@gmail.com";
+    github = "CrazedProgrammer";
+    githubId = 12202789;
+    name = "CrazedProgrammer";
+  };
+  cript0nauta = {
+    email = "shareman1204@gmail.com";
+    github = "cript0nauta";
+    githubId = 1222362;
+    name = "Matías Lang";
+  };
+  CRTified = {
+    email = "carl.schneider+nixos@rub.de";
+    github = "CRTified";
+    githubId = 2440581;
+    name = "Carl Richard Theodor Schneider";
+    keys = [{
+      longkeyid = "rsa4096/0x45BCC1E2709B1788";
+      fingerprint = "2017 E152 BB81 5C16 955C  E612 45BC C1E2 709B 1788";
+    }];
+  };
+  cryptix = {
+    email = "cryptix@riseup.net";
+    github = "cryptix";
+    githubId = 111202;
+    name = "Henry Bubert";
+  };
+  CrystalGamma = {
+    email = "nixos@crystalgamma.de";
+    github = "CrystalGamma";
+    githubId = 6297001;
+    name = "Jona Stubbe";
+  };
+  csingley = {
+    email = "csingley@gmail.com";
+    github = "csingley";
+    githubId = 398996;
+    name = "Christopher Singley";
+  };
+  cstrahan = {
+    email = "charles@cstrahan.com";
+    github = "cstrahan";
+    githubId = 143982;
+    name = "Charles Strahan";
+  };
+  cswank = {
+    email = "craigswank@gmail.com";
+    github = "cswank";
+    githubId = 490965;
+    name = "Craig Swank";
+  };
+  cust0dian = {
+    email = "serg@effectful.software";
+    github = "cust0dian";
+    githubId = 389387;
+    name = "Serg Nesterov";
+    keys = [{
+      longkeyid = "rsa4096/0x1512F6EB84AECC8C";
+      fingerprint = "6E7D BA30 DB5D BA60 693C  3BE3 1512 F6EB 84AE CC8C";
+    }];
+  };
+  cwoac = {
+    email = "oliver@codersoffortune.net";
+    github = "cwoac";
+    githubId = 1382175;
+    name = "Oliver Matthews";
+  };
+  cypherpunk2140 = {
+    email = "stefan.mihaila@pm.me";
+    github = "stefan-mihaila";
+    githubId = 2217136;
+    name = "Ștefan D. Mihăilă";
+    keys = [
+      {
+        longkeyid = "rsa4096/6E68A39BF16A3ECB";
+        fingerprint = "CBC9 C7CC 51F0 4A61 3901 C723 6E68 A39B F16A 3ECB";
+      }
+      {
+        longkeyid = "rsa4096/6220AD7846220A52";
+        fingerprint = "7EAB 1447 5BBA 7DDE 7092 7276 6220 AD78 4622 0A52";
+      }
+    ];
+  };
+  cyplo = {
+    email = "nixos@cyplo.dev";
+    github = "cyplo";
+    githubId = 217899;
+    name = "Cyryl Płotnicki";
+  };
+  d-goldin = {
+    email = "dgoldin+github@protonmail.ch";
+    github = "d-goldin";
+    githubId = 43349662;
+    name = "Dima";
+    keys = [{
+      longkeyid = "rsa4096/BAB1D15FB7B4D4CE";
+      fingerprint = "1C4E F4FE 7F8E D8B7 1E88 CCDF BAB1 D15F B7B4 D4CE";
+    }];
+  };
+  dadada = {
+    name = "dadada";
+    email = "dadada@dadada.li";
+    github = "dadada";
+    githubId = 7216772;
+    keys = [{
+      longkeyid = "ed25519/0xEEB8D1CE62C4DFEA";
+      fingerprint = "D68C 8469 5C08 7E0F 733A  28D0 EEB8 D1CE 62C4 DFEA";
+    }];
+  };
+  dalance = {
+    email = "dalance@gmail.com";
+    github = "dalance";
+    githubId = 4331004;
+    name = "Naoya Hatta";
+  };
+  DamienCassou = {
+    email = "damien@cassou.me";
+    github = "DamienCassou";
+    githubId = 217543;
+    name = "Damien Cassou";
+  };
+  danbst = {
+    email = "abcz2.uprola@gmail.com";
+    github = "danbst";
+    githubId = 743057;
+    name = "Danylo Hlynskyi";
+  };
+  dancek = {
+    email = "hannu.hartikainen@gmail.com";
+    github = "dancek";
+    githubId = 245394;
+    name = "Hannu Hartikainen";
+  };
+  danderson = {
+    email = "dave@natulte.net";
+    github = "danderson";
+    githubId = 1918;
+    name = "David Anderson";
+  };
+  dandellion = {
+    email = "daniel@dodsorf.as";
+    github = "dali99";
+    githubId = 990767;
+    name = "Daniel Olsen";
+  };
+  daneads = {
+    email = "me@daneads.com";
+    github = "daneads";
+    githubId = 24708079;
+    name = "Dan Eads";
+  };
+  danharaj = {
+    email = "dan@obsidian.systems";
+    github = "danharaj";
+    githubId = 23366017;
+    name = "Dan Haraj";
+  };
+  danielbarter = {
+    email = "danielbarter@gmail.com";
+    github = "danielbarter";
+    githubId = 8081722;
+    name = "Daniel Barter";
+  };
+  danieldk = {
+    email = "me@danieldk.eu";
+    github = "danieldk";
+    githubId = 49398;
+    name = "Daniël de Kok";
+  };
+  danielfullmer = {
+    email = "danielrf12@gmail.com";
+    github = "danielfullmer";
+    githubId = 1298344;
+    name = "Daniel Fullmer";
+  };
+  dan4ik605743 = {
+    email = "6057430gu@gmail.com";
+    github = "dan4ik605743";
+    githubId = 86075850;
+    name = "Danil Danevich";
+  };
+  das-g = {
+    email = "nixpkgs@raphael.dasgupta.ch";
+    github = "das-g";
+    githubId = 97746;
+    name = "Raphael Das Gupta";
+  };
+  das_j = {
+    email = "janne@hess.ooo";
+    github = "dasJ";
+    githubId = 4971975;
+    name = "Janne Heß";
+  };
+  dasisdormax = {
+    email = "dasisdormax@mailbox.org";
+    github = "dasisdormax";
+    githubId = 3714905;
+    keys = [{
+      longkeyid = "rsa4096/0x02BA0D4480CA6C44";
+      fingerprint = "E59B A198 61B0 A9ED C1FA  3FB2 02BA 0D44 80CA 6C44";
+    }];
+    name = "Maximilian Wende";
+  };
+  dasj19 = {
+    email = "daniel@serbanescu.dk";
+    github = "dasj19";
+    githubId = 7589338;
+    name = "Daniel Șerbănescu";
+  };
+  dasuxullebt = {
+    email = "christoph.senjak@googlemail.com";
+    name = "Christoph-Simon Senjak";
+  };
+  davhau = {
+    email = "d.hauer.it@gmail.com";
+    name = "David Hauer";
+    github = "DavHau";
+    githubId = 42246742;
+  };
+  david-sawatzke = {
+    email = "d-nix@sawatzke.dev";
+    github = "david-sawatzke";
+    githubId = 11035569;
+    name = "David Sawatzke";
+  };
+  david50407 = {
+    email = "me@davy.tw";
+    github = "david50407";
+    githubId = 841969;
+    name = "David Kuo";
+  };
+  davidak = {
+    email = "post@davidak.de";
+    github = "davidak";
+    githubId = 91113;
+    name = "David Kleuker";
+  };
+  davidrusu = {
+    email = "davidrusu.me@gmail.com";
+    github = "davidrusu";
+    githubId = 1832378;
+    name = "David Rusu";
+  };
+  davidtwco = {
+    email = "nix@david.davidtw.co";
+    github = "davidtwco";
+    githubId = 1295100;
+    name = "David Wood";
+    keys = [{
+      longkeyid = "rsa4096/0x01760B4F9F53F154";
+      fingerprint = "5B08 313C 6853 E5BF FA91  A817 0176 0B4F 9F53 F154";
+    }];
+  };
+  davorb = {
+    email = "davor@davor.se";
+    github = "davorb";
+    githubId = 798427;
+    name = "Davor Babic";
+  };
+  dawidsowa = {
+    email = "dawid_sowa@posteo.net";
+    github = "dawidsowa";
+    githubId = 49904992;
+    name = "Dawid Sowa";
+  };
+  dbirks = {
+    email = "david@birks.dev";
+    github = "dbirks";
+    githubId = 7545665;
+    name = "David Birks";
+    keys = [{
+      longkeyid = "ed25519/0xBB999F83D9A19A36";
+      fingerprint = "B26F 9AD8 DA20 3392 EF87  C61A BB99 9F83 D9A1 9A36";
+    }];
+  };
+  dbohdan = {
+    email = "dbohdan@dbohdan.com";
+    github = "dbohdan";
+    githubId = 3179832;
+    name = "D. Bohdan";
+  };
+  dbrock = {
+    email = "daniel@brockman.se";
+    github = "dbrock";
+    githubId = 14032;
+    name = "Daniel Brockman";
+  };
+  ddelabru = {
+    email = "ddelabru@redhat.com";
+    github = "ddelabru";
+    githubId = 39909293;
+    name = "Dominic Delabruere";
+  };
+  dduan = {
+    email = "daniel@duan.ca";
+    github = "dduan";
+    githubId = 75067;
+    name = "Daniel Duan";
+  };
+  dearrude = {
+    name = "Ebrahim Nejati";
+    email = "dearrude@tfwno.gf";
+    github = "dearrude";
+    githubId = 30749142;
+    keys = [{
+      longkeyid = "rsa4096/19151E03BF2CF012";
+      fingerprint = "4E35 F2E5 2132 D654 E815  A672 DB2C BC24 2868 6000";
+    }];
+  };
+  deepfire = {
+    email = "_deepfire@feelingofgreen.ru";
+    github = "deepfire";
+    githubId = 452652;
+    name = "Kosyrev Serge";
+  };
+  DeeUnderscore = {
+    email = "d.anzorge@gmail.com";
+    github = "DeeUnderscore";
+    githubId = 156239;
+    name = "D Anzorge";
+  };
+  delan = {
+    name = "Delan Azabani";
+    email = "delan@azabani.com";
+    github = "delan";
+    githubId = 465303;
+  };
+  deliciouslytyped = {
+    email = "47436522+deliciouslytyped@users.noreply.github.com";
+    github = "deliciouslytyped";
+    githubId = 47436522;
+    name = "deliciouslytyped";
+  };
+  delroth = {
+    email = "delroth@gmail.com";
+    github = "delroth";
+    githubId = 202798;
+    name = "Pierre Bourdon";
+  };
+  deltaevo = {
+    email = "deltaduartedavid@gmail.com";
+    github = "DeltaEvo";
+    githubId = 8864716;
+    name = "Duarte David";
+  };
+  demin-dmitriy = {
+    email = "demindf@gmail.com";
+    github = "demin-dmitriy";
+    githubId = 5503422;
+    name = "Dmitriy Demin";
+  };
+  demize = {
+    email = "johannes@kyriasis.com";
+    github = "kyrias";
+    githubId = 2285387;
+    name = "Johannes Löthberg";
+  };
+  demyanrogozhin = {
+    email = "demyan.rogozhin@gmail.com";
+    github = "demyanrogozhin";
+    githubId = 62989;
+    name = "Demyan Rogozhin";
+  };
+  derchris = {
+    email = "derchris@me.com";
+    github = "derchrisuk";
+    githubId = 706758;
+    name = "Christian Gerbrandt";
+  };
+  DerGuteMoritz = {
+    email = "moritz@twoticketsplease.de";
+    github = "DerGuteMoritz";
+    githubId = 19733;
+    name = "Moritz Heidkamp";
+  };
+  dermetfan = {
+    email = "serverkorken@gmail.com";
+    github = "dermetfan";
+    githubId = 4956158;
+    name = "Robin Stumm";
+  };
+  DerTim1 = {
+    email = "tim.digel@active-group.de";
+    github = "DerTim1";
+    githubId = 21953890;
+    name = "Tim Digel";
+  };
+  desiderius = {
+    email = "didier@devroye.name";
+    github = "desiderius";
+    githubId = 1311761;
+    name = "Didier J. Devroye";
+  };
+  devhell = {
+    email = ''"^"@regexmail.net'';
+    github = "devhell";
+    githubId = 896182;
+    name = "devhell";
+  };
+  devins2518 = {
+    email = "drsingh2518@icloud.com";
+    github = "devins2518";
+    githubId = 17111639;
+    name = "Devin Singh";
+  };
+  dezgeg = {
+    email = "tuomas.tynkkynen@iki.fi";
+    github = "dezgeg";
+    githubId = 579369;
+    name = "Tuomas Tynkkynen";
+  };
+  dfordivam = {
+    email = "dfordivam+nixpkgs@gmail.com";
+    github = "dfordivam";
+    githubId = 681060;
+    name = "Divam";
+  };
+  dfoxfranke = {
+    email = "dfoxfranke@gmail.com";
+    github = "dfoxfranke";
+    githubId = 4708206;
+    name = "Daniel Fox Franke";
+  };
+  dgliwka = {
+    email = "dawid.gliwka@gmail.com";
+    github = "dgliwka";
+    githubId = 33262214;
+    name = "Dawid Gliwka";
+  };
+  dgonyeo = {
+    email = "derek@gonyeo.com";
+    github = "dgonyeo";
+    githubId = 2439413;
+    name = "Derek Gonyeo";
+  };
+  dhkl = {
+    email = "david@davidslab.com";
+    github = "dhl";
+    githubId = 265220;
+    name = "David Leung";
+  };
+  DianaOlympos = {
+    email = "DianaOlympos@noreply.github.com";
+    github = "DianaOlympos";
+    githubId = 15774340;
+    name = "Thomas Depierre";
+  };
+  diegolelis = {
+    email = "diego.o.lelis@gmail.com";
+    github = "diegolelis";
+    githubId = 8404455;
+    name = "Diego Lelis";
+  };
+  diffumist = {
+    email = "git@diffumist.me";
+    github = "diffumist";
+    githubId = 32810399;
+    name = "Diffumist";
+  };
+  diogox = {
+    name = "Diogo Xavier";
+    email = "13244408+diogox@users.noreply.github.com";
+    github = "diogox";
+    githubId = 13244408;
+  };
+  dipinhora = {
+    email = "dipinhora+github@gmail.com";
+    github = "dipinhora";
+    githubId = 11946442;
+    name = "Dipin Hora";
+  };
+  dirkx = {
+    email = "dirkx@webweaving.org";
+    github = "dirkx";
+    githubId = 392583;
+    name = "Dirk-Willem van Gulik";
+  };
+  disassembler = {
+    email = "disasm@gmail.com";
+    github = "disassembler";
+    githubId = 651205;
+    name = "Samuel Leathers";
+  };
+  disserman = {
+    email = "disserman@gmail.com";
+    github = "divi255";
+    githubId = 40633781;
+    name = "Sergei S.";
+  };
+  dizfer = {
+    email = "david@izquierdofernandez.com";
+    github = "dizfer";
+    githubId = 8852888;
+    name = "David Izquierdo";
+  };
+  djanatyn = {
+    email = "djanatyn@gmail.com";
+    github = "djanatyn";
+    githubId = 523628;
+    name = "Jonathan Strickland";
+  };
+  Dje4321 = {
+    email = "dje4321@gmail.com";
+    github = "dje4321";
+    githubId = 10913120;
+    name = "Dje4321";
+  };
+  djwf = {
+    email = "dave@weller-fahy.com";
+    github = "djwf";
+    githubId = 73162;
+    name = "David J. Weller-Fahy";
+  };
+  dkabot = {
+    email = "dkabot@dkabot.com";
+    github = "dkabot";
+    githubId = 1316469;
+    name = "Naomi Morse";
+  };
+  dlesl = {
+    email = "dlesl@dlesl.com";
+    github = "dlesl";
+    githubId = 28980797;
+    name = "David Leslie";
+  };
+  dmalikov = {
+    email = "malikov.d.y@gmail.com";
+    github = "dmalikov";
+    githubId = 997543;
+    name = "Dmitry Malikov";
+  };
+  DmitryTsygankov = {
+    email = "dmitry.tsygankov@gmail.com";
+    github = "DmitryTsygankov";
+    githubId = 425354;
+    name = "Dmitry Tsygankov";
+  };
+  dmjio = {
+    email = "djohnson.m@gmail.com";
+    github = "dmjio";
+    githubId = 875324;
+    name = "David Johnson";
+  };
+  dmrauh = {
+    email = "dmrauh@posteo.de";
+    github = "dmrauh";
+    githubId = 37698547;
+    name = "Dominik Michael Rauh";
+  };
+  dmvianna = {
+    email = "dmlvianna@gmail.com";
+    github = "dmvianna";
+    githubId = 1708810;
+    name = "Daniel Vianna";
+  };
+  dnr = {
+    email = "dnr@dnr.im";
+    github = "dnr";
+    githubId = 466723;
+    name = "David Reiss";
+  };
+  dochang = {
+    email = "dochang@gmail.com";
+    github = "dochang";
+    githubId = 129093;
+    name = "Desmond O. Chang";
+  };
+  domenkozar = {
+    email = "domen@dev.si";
+    github = "domenkozar";
+    githubId = 126339;
+    name = "Domen Kozar";
+  };
+  dominikh = {
+    email = "dominik@honnef.co";
+    github = "dominikh";
+    githubId = 39825;
+    name = "Dominik Honnef";
+  };
+  doronbehar = {
+    email = "me@doronbehar.com";
+    github = "doronbehar";
+    githubId = 10998835;
+    name = "Doron Behar";
+  };
+  dotlambda = {
+    email = "rschuetz17@gmail.com";
+    github = "dotlambda";
+    githubId = 6806011;
+    name = "Robert Schütz";
+  };
+  dottedmag = {
+    email = "dottedmag@dottedmag.net";
+    github = "dottedmag";
+    githubId = 16120;
+    name = "Misha Gusarov";
+    keys = [{
+      longkeyid = "rsa4096/0x9D20F6503E338888";
+      fingerprint = "A8DF 1326 9E5D 9A38 E57C  FAC2 9D20 F650 3E33 8888";
+    }];
+  };
+  doublec = {
+    email = "chris.double@double.co.nz";
+    github = "doublec";
+    githubId = 16599;
+    name = "Chris Double";
+  };
+  dpaetzel = {
+    email = "david.paetzel@posteo.de";
+    github = "dpaetzel";
+    githubId = 974130;
+    name = "David Pätzel";
+  };
+  dpausp = {
+    email = "dpausp@posteo.de";
+    github = "dpausp";
+    githubId = 1965950;
+    name = "Tobias Stenzel";
+    keys = [{
+      longkeyid = "rsa2048/0x78C7DD40DF23FB16";
+      fingerprint = "4749 0887 CF3B 85A1 6355  C671 78C7 DD40 DF23 FB16";
+    }];
+  };
+  dpercy = {
+    email = "dpercy@dpercy.dev";
+    github = "dpercy";
+    githubId = 349909;
+    name = "David Percy";
+  };
+  dpflug = {
+    email = "david@pflug.email";
+    github = "dpflug";
+    githubId = 108501;
+    name = "David Pflug";
+  };
+  dramaturg = {
+    email = "seb@ds.ag";
+    github = "dramaturg";
+    githubId = 472846;
+    name = "Sebastian Krohn";
+  };
+  drets = {
+    email = "dmitryrets@gmail.com";
+    github = "drets";
+    githubId = 6199462;
+    name = "Dmytro Rets";
+  };
+  drewkett = {
+    email = "burkett.andrew@gmail.com";
+    name = "Andrew Burkett";
+  };
+  drewrisinger = {
+    email = "drisinger+nixpkgs@gmail.com";
+    github = "drewrisinger";
+    githubId = 10198051;
+    name = "Drew Risinger";
+  };
+  drupol = {
+    name = "Pol Dellaiera";
+    email = "pol.dellaiera@protonmail.com";
+    github = "drupol";
+    githubId = 252042;
+    keys = [{
+      longkeyid = "ed25519/0x0AAF2901E8040715";
+      fingerprint = "85F3 72DF 4AF3 EF13 ED34  72A3 0AAF 2901 E804 0715";
+    }];
+  };
+  dschrempf = {
+    name = "Dominik Schrempf";
+    email = "dominik.schrempf@gmail.com";
+    github = "dschrempf";
+    githubId = 5596239;
+    keys = [{
+      longkeyid = "rsa2048/0x875F2BCF163F1B29";
+      fingerprint = "62BC E2BD 49DF ECC7 35C7  E153 875F 2BCF 163F 1B29";
+    }];
+  };
+  dsferruzza = {
+    email = "david.sferruzza@gmail.com";
+    github = "dsferruzza";
+    githubId = 1931963;
+    name = "David Sferruzza";
+  };
+  dtzWill = {
+    email = "w@wdtz.org";
+    github = "dtzWill";
+    githubId = 817330;
+    name = "Will Dietz";
+    keys = [{
+      longkeyid = "rsa4096/0xFD42C7D0D41494C8";
+      fingerprint = "389A 78CB CD88 5E0C 4701  DEB9 FD42 C7D0 D414 94C8";
+    }];
+  };
+  dump_stack = {
+    email = "root@dumpstack.io";
+    github = "jollheef";
+    githubId = 1749762;
+    name = "Mikhail Klementev";
+    keys = [{
+      longkeyid = "rsa4096/0x1525585D1B43C62A";
+      fingerprint = "5DD7 C6F6 0630 F08E DAE7  4711 1525 585D 1B43 C62A";
+    }];
+  };
+  dwarfmaster = {
+    email = "nixpkgs@dwarfmaster.net";
+    github = "dwarfmaster";
+    githubId = 2025623;
+    name = "Luc Chabassier";
+  };
+  dxf = {
+    email = "dingxiangfei2009@gmail.com";
+    github = "dingxiangfei2009";
+    githubId = 6884440;
+    name = "Ding Xiang Fei";
+  };
+  dysinger = {
+    email = "tim@dysinger.net";
+    github = "dysinger";
+    githubId = 447;
+    name = "Tim Dysinger";
+  };
+  dywedir = {
+    email = "dywedir@gra.red";
+    github = "dywedir";
+    githubId = 399312;
+    name = "Vladyslav M.";
+  };
+  dzabraev = {
+    email = "dzabraew@gmail.com";
+    github = "dzabraev";
+    githubId = 15128988;
+    name = "Maksim Dzabraev";
+  };
+  e-user = {
+    email = "nixos@sodosopa.io";
+    github = "e-user";
+    githubId = 93086;
+    name = "Alexander Kahl";
+  };
+  eadwu = {
+    email = "edmund.wu@protonmail.com";
+    github = "eadwu";
+    githubId = 22758444;
+    name = "Edmund Wu";
+  };
+  ealasu = {
+    email = "emanuel.alasu@gmail.com";
+    github = "ealasu";
+    githubId = 1362096;
+    name = "Emanuel Alasu";
+  };
+  eamsden = {
+    email = "edward@blackriversoft.com";
+    github = "eamsden";
+    githubId = 54573;
+    name = "Edward Amsden";
+  };
+  earldouglas = {
+    email = "james@earldouglas.com";
+    github = "earldouglas";
+    githubId = 424946;
+    name = "James Earl Douglas";
+  };
+  earvstedt = {
+    email = "erik.arvstedt@gmail.com";
+    github = "erikarvstedt";
+    githubId = 36110478;
+    name = "Erik Arvstedt";
+  };
+  ebzzry = {
+    email = "ebzzry@ebzzry.io";
+    github = "ebzzry";
+    githubId = 7875;
+    name = "Rommel Martinez";
+  };
+  edanaher = {
+    email = "nixos@edanaher.net";
+    github = "edanaher";
+    githubId = 984691;
+    name = "Evan Danaher";
+  };
+  edbentley = {
+    email = "hello@edbentley.dev";
+    github = "edbentley";
+    githubId = 15923595;
+    name = "Ed Bentley";
+  };
+  edcragg = {
+    email = "ed.cragg@eipi.xyz";
+    github = "nuxeh";
+    githubId = 1516017;
+    name = "Ed Cragg";
+  };
+  edef = {
+    email = "edef@edef.eu";
+    github = "edef1c";
+    githubId = 50854;
+    name = "edef";
+  };
+  edibopp = {
+    email = "eduard.bopp@aepsil0n.de";
+    github = "edibopp";
+    githubId = 3098430;
+    name = "Eduard Bopp";
+  };
+  emantor = {
+    email = "rouven+nixos@czerwinskis.de";
+    github = "emantor";
+    githubId = 934284;
+    name = "Rouven Czerwinski";
+  };
+  embr = {
+    email = "hi@liclac.eu";
+    github = "liclac";
+    githubId = 428026;
+    name = "embr";
+  };
+  emily = {
+    email = "nixpkgs@emily.moe";
+    github = "emilazy";
+    githubId = 18535642;
+    name = "Emily";
+  };
+  enderger = {
+    email = "endergeryt@gmail.com";
+    github = "enderger";
+    githubId = 36283171;
+    name = "Daniel";
+  };
+  endocrimes = {
+    email = "dani@builds.terrible.systems";
+    github = "endocrimes";
+    githubId = 1330683;
+    name = "Danielle Lancashire";
+  };
+  ederoyd46 = {
+    email = "matt@ederoyd.co.uk";
+    github = "ederoyd46";
+    githubId = 119483;
+    name = "Matthew Brown";
+  };
+  eduardosm = {
+    email = "esm@eduardosm.net";
+    github = "eduardosm";
+    githubId = 761151;
+    name = "Eduardo Sánchez Muñoz";
+  };
+  eduarrrd = {
+    email = "e.bachmakov@gmail.com";
+    github = "eduarrrd";
+    githubId = 1181393;
+    name = "Eduard Bachmakov";
+  };
+  edude03 = {
+    email = "michael@melenion.com";
+    github = "edude03";
+    githubId = 494483;
+    name = "Michael Francis";
+  };
+  edwtjo = {
+    email = "ed@cflags.cc";
+    github = "edwtjo";
+    githubId = 54799;
+    name = "Edward Tjörnhammar";
+  };
+  eelco = {
+    email = "edolstra+nixpkgs@gmail.com";
+    github = "edolstra";
+    githubId = 1148549;
+    name = "Eelco Dolstra";
+  };
+  ehegnes = {
+    email = "eric.hegnes@gmail.com";
+    github = "ehegnes";
+    githubId = 884970;
+    name = "Eric Hegnes";
+  };
+  ehmry = {
+    email = "ehmry@posteo.net";
+    github = "ehmry";
+    githubId = 537775;
+    name = "Emery Hemingway";
+  };
+  eikek = {
+    email = "eike.kettner@posteo.de";
+    github = "eikek";
+    githubId = 701128;
+    name = "Eike Kettner";
+  };
+  ekleog = {
+    email = "leo@gaspard.io";
+    github = "ekleog";
+    githubId = 411447;
+    name = "Leo Gaspard";
+  };
+  elasticdog = {
+    email = "aaron@elasticdog.com";
+    github = "elasticdog";
+    githubId = 4742;
+    name = "Aaron Bull Schaefer";
+  };
+  eleanor = {
+    email = "dejan@proteansec.com";
+    github = "proteansec";
+    githubId = 1753498;
+    name = "Dejan Lukan";
+  };
+  electrified = {
+    email = "ed@maidavale.org";
+    github = "electrified";
+    githubId = 103082;
+    name = "Ed Brindley";
+  };
+  elliottvillars = {
+    email = "elliottvillars@gmail.com";
+    github = "elliottvillars";
+    githubId = 48104179;
+    name = "Elliott Villars";
+  };
+  eliasp = {
+    email = "mail@eliasprobst.eu";
+    github = "eliasp";
+    githubId = 48491;
+    name = "Elias Probst";
+  };
+  elijahcaine = {
+    email = "elijahcainemv@gmail.com";
+    github = "pop";
+    githubId = 1897147;
+    name = "Elijah Caine";
+  };
+  elitak = {
+    email = "elitak@gmail.com";
+    github = "elitak";
+    githubId = 769073;
+    name = "Eric Litak";
+  };
+  ellis = {
+    email = "nixos@ellisw.net";
+    github = "ellis";
+    githubId = 97852;
+    name = "Ellis Whitehead";
+  };
+  elkowar = {
+    email = "thereal.elkowar@gmail.com";
+    github = "elkowar";
+    githubId = 5300871;
+    name = "Leon Kowarschick";
+  };
+  elohmeier = {
+    email = "elo-nixos@nerdworks.de";
+    github = "elohmeier";
+    githubId = 2536303;
+    name = "Enno Lohmeier";
+  };
+  elseym = {
+    email = "elseym@me.com";
+    github = "elseym";
+    githubId = 907478;
+    name = "Simon Waibl";
+  };
+  elvishjerricco = {
+    email = "elvishjerricco@gmail.com";
+    github = "ElvishJerricco";
+    githubId = 1365692;
+    name = "Will Fancher";
+  };
+  elyhaka = {
+    email = "elyhaka@protonmail.com";
+    github = "Elyhaka";
+    githubId = 57923898;
+    name = "Elyhaka";
+  };
+  em0lar = {
+    email = "nix@em0lar.dev";
+    github = "em0lar";
+    githubId = 11006031;
+    name = "Leo Maroni";
+  };
+  emmanuelrosa = {
+    email = "emmanuel_rosa@aol.com";
+    github = "emmanuelrosa";
+    githubId = 13485450;
+    name = "Emmanuel Rosa";
+  };
+  endgame = {
+    email = "jack@jackkelly.name";
+    github = "endgame";
+    githubId = 231483;
+    name = "Jack Kelly";
+  };
+  enorris = {
+    name = "Eric Norris";
+    email = "erictnorris@gmail.com";
+    github = "ericnorris";
+    githubId = 1906605;
+  };
+  Enteee = {
+    email = "nix@duckpond.ch";
+    github = "Enteee";
+    githubId = 5493775;
+    name = "Ente";
+  };
+  enzime = {
+    email = "enzime@users.noreply.github.com";
+    github = "enzime";
+    githubId = 10492681;
+    name = "Michael Hoang";
+  };
+  eonpatapon = {
+    email = "eon@patapon.info";
+    github = "eonpatapon";
+    githubId = 418227;
+    name = "Jean-Philippe Braun";
+  };
+  eperuffo = {
+    email = "info@emanueleperuffo.com";
+    github = "emanueleperuffo";
+    githubId = 5085029;
+    name = "Emanuele Peruffo";
+  };
+  epitrochoid = {
+    email = "mpcervin@uncg.edu";
+    name = "Mabry Cervin";
+  };
+  equirosa = {
+    email = "eduardo@eduardoquiros.com";
+    github = "equirosa";
+    githubId = 39096810;
+    name = "Eduardo Quiros";
+  };
+  eqyiel = {
+    email = "ruben@maher.fyi";
+    github = "eqyiel";
+    githubId = 3422442;
+    name = "Ruben Maher";
+  };
+  eraserhd = {
+    email = "jason.m.felice@gmail.com";
+    github = "eraserhd";
+    githubId = 147284;
+    name = "Jason Felice";
+  };
+  erdnaxe = {
+    email = "erdnaxe@crans.org";
+    github = "erdnaxe";
+    githubId = 2663216;
+    name = "Alexandre Iooss";
+    keys = [{
+      longkeyid = "rsa4096/0x6C79278F3FCDCC02";
+      fingerprint = "2D37 1AD2 7E2B BC77 97E1  B759 6C79 278F 3FCD CC02";
+    }];
+  };
+  ericbmerritt = {
+    email = "eric@afiniate.com";
+    github = "ericbmerritt";
+    githubId = 4828;
+    name = "Eric Merritt";
+  };
+  ericdallo = {
+    email = "ercdll1337@gmail.com";
+    github = "ericdallo";
+    githubId = 7820865;
+    name = "Eric Dallo";
+  };
+  ericsagnes = {
+    email = "eric.sagnes@gmail.com";
+    github = "ericsagnes";
+    githubId = 367880;
+    name = "Eric Sagnes";
+  };
+  ericson2314 = {
+    email = "John.Ericson@Obsidian.Systems";
+    github = "ericson2314";
+    githubId = 1055245;
+    name = "John Ericson";
+  };
+  erictapen = {
+    email = "kerstin@erictapen.name";
+    github = "erictapen";
+    githubId = 11532355;
+    name = "Kerstin Humm";
+    keys = [{
+      longkeyid = "rsa4096/0x40293358C7B9326B";
+      fingerprint = "F178 B4B4 6165 6D1B 7C15  B55D 4029 3358 C7B9 326B";
+    }];
+  };
+  erikbackman = {
+    email = "contact@ebackman.net";
+    github = "erikbackman";
+    githubId = 46724898;
+    name = "Erik Backman";
+  };
+  erikryb = {
+    email = "erik.rybakken@math.ntnu.no";
+    github = "erikryb";
+    githubId = 3787281;
+    name = "Erik Rybakken";
+  };
+  erin = {
+    name = "Erin van der Veen";
+    email = "erin@erinvanderveen.nl";
+    github = "ErinvanderVeen";
+    githubId = 10973664;
+  };
+  erosennin = {
+    email = "ag@sologoc.com";
+    github = "erosennin";
+    githubId = 1583484;
+    name = "Andrey Golovizin";
+  };
+  ersin = {
+    email = "me@ersinakinci.com";
+    github = "earksiinni";
+    githubId = 5427394;
+    name = "Ersin Akinci";
+  };
+  ertes = {
+    email = "esz@posteo.de";
+    github = "ertes";
+    githubId = 1855930;
+    name = "Ertugrul Söylemez";
+  };
+  esclear = {
+    email = "esclear@users.noreply.github.com";
+    github = "esclear";
+    githubId = 7432848;
+    name = "Daniel Albert";
+  };
+  eskytthe = {
+    email = "eskytthe@gmail.com";
+    github = "eskytthe";
+    githubId = 2544204;
+    name = "Erik Skytthe";
+  };
+  Esteth = {
+    email = "adam.copp@gmail.com";
+    name = "Adam Copp";
+  };
+  ethancedwards8 = {
+    email = "ethan@ethancedwards.com";
+    github = "ethancedwards8";
+    githubId = 60861925;
+    name = "Ethan Carter Edwards";
+    keys = [{
+      longkeyid = "rsa4096/0xF93DDAFA26EF2458";
+      fingerprint = "0E69 0F46 3457 D812 3387  C978 F93D DAFA 26EF 2458";
+    }];
+  };
+  ethercrow = {
+    email = "ethercrow@gmail.com";
+    github = "ethercrow";
+    githubId = 222467;
+    name = "Dmitry Ivanov";
+  };
+  etu = {
+    email = "elis@hirwing.se";
+    github = "etu";
+    githubId = 461970;
+    name = "Elis Hirwing";
+    keys = [{
+      longkeyid = "rsa4096/0xD57EFA625C9A925F";
+      fingerprint = "67FE 98F2 8C44 CF22 1828  E12F D57E FA62 5C9A 925F";
+    }];
+  };
+  euank = {
+    email = "euank-nixpkg@euank.com";
+    github = "euank";
+    githubId = 2147649;
+    name = "Euan Kemp";
+  };
+  evalexpr = {
+    name = "Jonathan Wilkins";
+    email = "nixos@wilkins.tech";
+    github = "evalexpr";
+    githubId = 23485511;
+    keys = [{
+      longkeyid = "rsa4096/0x2D1D402E17763DD6";
+      fingerprint = "8129 5B85 9C5A F703 C2F4  1E29 2D1D 402E 1776 3DD6";
+    }];
+  };
+  evanjs = {
+    email = "evanjsx@gmail.com";
+    github = "evanjs";
+    githubId = 1847524;
+    name = "Evan Stoll";
+  };
+  evax = {
+    email = "nixos@evax.fr";
+    github = "evax";
+    githubId = 599997;
+    name = "evax";
+  };
+  evck = {
+    email = "eric@evenchick.com";
+    github = "ericevenchick";
+    githubId = 195032;
+    name = "Eric Evenchick";
+  };
+  evenbrenden = {
+    email = "evenbrenden@gmail.com";
+    github = "evenbrenden";
+    githubId = 2512008;
+    name = "Even Brenden";
+  };
+  evils = {
+    email = "evils.devils@protonmail.com";
+    github = "evils";
+    githubId = 30512529;
+    name = "Evils";
+  };
+  ewok = {
+    email = "ewok@ewok.ru";
+    github = "ewok";
+    githubId = 454695;
+    name = "Artur Taranchiev";
+  };
+  exfalso = {
+    email = "0slemi0@gmail.com";
+    github = "exfalso";
+    githubId = 1042674;
+    name = "Andras Slemmer";
+  };
+  exi = {
+    email = "nixos@reckling.org";
+    github = "exi";
+    githubId = 449463;
+    name = "Reno Reckling";
+  };
+  exlevan = {
+    email = "exlevan@gmail.com";
+    github = "exlevan";
+    githubId = 873530;
+    name = "Alexey Levan";
+  };
+  expipiplus1 = {
+    email = "nix@monoid.al";
+    github = "expipiplus1";
+    githubId = 857308;
+    name = "Joe Hermaszewski";
+  };
+  extends = {
+    email = "sharosari@gmail.com";
+    github = "ImExtends";
+    githubId = 55919390;
+    name = "Vincent VILLIAUMEY";
+  };
+  eyjhb = {
+    email = "eyjhbb@gmail.com";
+    github = "eyJhb";
+    githubId = 25955146;
+    name = "eyJhb";
+  };
+  f--t = {
+    email = "git@f-t.me";
+    github = "f--t";
+    githubId = 2817965;
+    name = "f--t";
+  };
+  f4814n = {
+    email = "me@f4814n.de";
+    github = "f4814";
+    githubId = 11909469;
+    name = "Fabian Geiselhart";
+  };
+  fab = {
+    email = "mail@fabian-affolter.ch";
+    name = "Fabian Affolter";
+    github = "fabaff";
+    githubId = 116184;
+    keys = [{
+      longkeyid = "dsa1024/0xE23CD2DD36A4397F";
+      fingerprint = "2F6C 930F D3C4 7E38 6AFA  4EB4 E23C D2DD 36A4 397F";
+    }];
+  };
+  fabianhauser = {
+    email = "fabian.nixos@fh2.ch";
+    github = "fabianhauser";
+    githubId = 368799;
+    name = "Fabian Hauser";
+    keys = [{
+      longkeyid = "rsa4096/0x8A52A140BEBF7D2C";
+      fingerprint = "50B7 11F4 3DFD 2018 DCE6  E8D0 8A52 A140 BEBF 7D2C";
+    }];
+  };
+  fabianhjr = {
+    email = "fabianhjr@protonmail.com";
+    github = "fabianhjr";
+    githubId = 303897;
+    name = "Fabián Heredia Montiel";
+  };
+  fadenb = {
+    email = "tristan.helmich+nixos@gmail.com";
+    github = "fadenb";
+    githubId = 878822;
+    name = "Tristan Helmich";
+  };
+  falsifian = {
+    email = "james.cook@utoronto.ca";
+    github = "falsifian";
+    githubId = 225893;
+    name = "James Cook";
+  };
+  fare = {
+    email = "fahree@gmail.com";
+    github = "fare";
+    githubId = 8073;
+    name = "Francois-Rene Rideau";
+  };
+  farlion = {
+    email = "florian.peter@gmx.at";
+    github = "workflow";
+    githubId = 1276854;
+    name = "Florian Peter";
+  };
+  fbrs = {
+    email = "yuuki@protonmail.com";
+    github = "cideM";
+    githubId = 4246921;
+    name = "Florian Beeres";
+  };
+  fdns = {
+    email = "fdns02@gmail.com";
+    github = "fdns";
+    githubId = 541748;
+    name = "Felipe Espinoza";
+  };
+  fehnomenal = {
+    email = "fehnomenal@fehn.systems";
+    github = "fehnomenal";
+    githubId = 9959940;
+    name = "Andreas Fehn";
+  };
+  felixscheinost = {
+    name = "Felix Scheinost";
+    email = "felix.scheinost@posteo.de";
+    github = "felixscheinost";
+    githubId = 31761492;
+  };
+  felixsinger = {
+    email = "felixsinger@posteo.net";
+    github = "felixsinger";
+    githubId = 628359;
+    name = "Felix Singer";
+  };
+  felschr = {
+    email = "dev@felschr.com";
+    github = "felschr";
+    githubId = 3314323;
+    name = "Felix Tenley";
+    keys = [{
+      longkeyid = "ed25519/0x910ACB9F6BD26F58";
+      fingerprint = "6AB3 7A28 5420 9A41 82D9  0068 910A CB9F 6BD2 6F58";
+    }];
+  };
+  ffinkdevs = {
+    email = "fink@h0st.space";
+    github = "ffinkdevs";
+    githubId = 45924649;
+    name = "Fabian Fink";
+  };
+  fgaz = {
+    email = "fgaz@fgaz.me";
+    github = "fgaz";
+    githubId = 8182846;
+    name = "Francesco Gazzetta";
+  };
+  figsoda = {
+    email = "figsoda@pm.me";
+    github = "figsoda";
+    githubId = 40620903;
+    name = "figsoda";
+  };
+  fionera = {
+    email = "nix@fionera.de";
+    github = "fionera";
+    githubId = 5741401;
+    name = "Tim Windelschmidt";
+  };
+  FireyFly = {
+    email = "nix@firefly.nu";
+    github = "FireyFly";
+    githubId = 415760;
+    name = "Jonas Höglund";
+  };
+  fishi0x01 = {
+    email = "fishi0x01@gmail.com";
+    github = "fishi0x01";
+    githubId = 10799507;
+    name = "Karl Fischer";
+  };
+  fitzgibbon = {
+    name = "Niall FitzGibbon";
+    email = "fitzgibbon.niall@gmail.com";
+    github = "fitzgibbon";
+    githubId = 617048;
+  };
+  Flakebi = {
+    email = "flakebi@t-online.de";
+    github = "Flakebi";
+    githubId = 6499211;
+    name = "Sebastian Neubauer";
+    keys = [{
+      longkeyid = "rsa4096/0xECC755EE583C1672";
+      fingerprint = "2F93 661D AC17 EA98 A104  F780 ECC7 55EE 583C 1672";
+    }];
+  };
+  flexw = {
+    email = "felix.weilbach@t-online.de";
+    github = "FlexW";
+    githubId = 19961516;
+    name = "Felix Weilbach";
+  };
+  fliegendewurst = {
+    email = "arne.keller@posteo.de";
+    github = "FliegendeWurst";
+    githubId = 12560461;
+    name = "Arne Keller";
+  };
+  flokli = {
+    email = "flokli@flokli.de";
+    github = "flokli";
+    githubId = 183879;
+    name = "Florian Klink";
+  };
+  FlorianFranzen = {
+    email = "Florian.Franzen@gmail.com";
+    github = "FlorianFranzen";
+    githubId = 781077;
+    name = "Florian Franzen";
+  };
+  florianjacob = {
+    email = "projects+nixos@florianjacob.de";
+    github = "florianjacob";
+    githubId = 1109959;
+    name = "Florian Jacob";
+  };
+  flosse = {
+    email = "mail@markus-kohlhase.de";
+    github = "flosse";
+    githubId = 276043;
+    name = "Markus Kohlhase";
+  };
+  fluffynukeit = {
+    email = "dan@fluffynukeit.com";
+    github = "fluffynukeit";
+    githubId = 844574;
+    name = "Daniel Austin";
+  };
+  flyfloh = {
+    email = "nix@halbmastwurf.de";
+    github = "flyfloh";
+    githubId = 74379;
+    name = "Florian Pester";
+  };
+  fmthoma = {
+    email = "f.m.thoma@googlemail.com";
+    github = "fmthoma";
+    githubId = 5918766;
+    name = "Franz Thoma";
+  };
+  fooker = {
+    email = "fooker@lab.sh";
+    github = "fooker";
+    githubId = 405105;
+    name = "Dustin Frisch";
+  };
+  forkk = {
+    email = "forkk@forkk.net";
+    github = "forkk";
+    githubId = 1300078;
+    name = "Andrew Okin";
+  };
+  fornever = {
+    email = "friedrich@fornever.me";
+    github = "fornever";
+    githubId = 92793;
+    name = "Friedrich von Never";
+  };
+  fortuneteller2k = {
+    email = "lythe1107@gmail.com";
+    github = "fortuneteller2k";
+    githubId = 20619776;
+    name = "fortuneteller2k";
+  };
+  fpletz = {
+    email = "fpletz@fnordicwalking.de";
+    github = "fpletz";
+    githubId = 114159;
+    name = "Franz Pletz";
+    keys = [{
+      longkeyid = "rsa4096/0x846FDED7792617B4";
+      fingerprint = "8A39 615D CE78 AF08 2E23  F303 846F DED7 7926 17B4";
+    }];
+  };
+  fps = {
+    email = "mista.tapas@gmx.net";
+    github = "fps";
+    githubId = 84968;
+    name = "Florian Paul Schmidt";
+  };
+
+  fragamus = {
+    email = "innovative.engineer@gmail.com";
+    github = "fragamus";
+    githubId = 119691;
+    name = "Michael Gough";
+  };
+
+  fredeb = {
+    email = "im@fredeb.dev";
+    github = "fredeeb";
+    githubId = 7551358;
+    name = "Frede Emil";
+  };
+  freepotion = {
+    email = "42352817+freepotion@users.noreply.github.com";
+    github = "freepotion";
+    githubId = 42352817;
+    name = "Free Potion";
+  };
+  freezeboy = {
+    email = "freezeboy@users.noreply.github.com";
+    github = "freezeboy";
+    githubId = 13279982;
+    name = "freezeboy";
+  };
+  Fresheyeball = {
+    email = "fresheyeball@gmail.com";
+    github = "Fresheyeball";
+    githubId = 609279;
+    name = "Isaac Shapira";
+  };
+  fridh = {
+    email = "fridh@fridh.nl";
+    github = "fridh";
+    githubId = 2129135;
+    name = "Frederik Rietdijk";
+  };
+  friedelino = {
+    email = "friede.mann@posteo.de";
+    github = "friedelino";
+    githubId = 46672819;
+    name = "Frido Friedemann";
+  };
+  frlan = {
+    email = "frank@frank.uvena.de";
+    github = "frlan";
+    githubId = 1010248;
+    name = "Frank Lanitz";
+  };
+  fro_ozen = {
+    email = "fro_ozen@gmx.de";
+    github = "froozen";
+    githubId = 1943632;
+    name = "fro_ozen";
+  };
+  frogamic = {
+    email = "frogamic@protonmail.com";
+    github = "frogamic";
+    githubId = 10263813;
+    name = "Dominic Shelton";
+  };
+  Frostman = {
+    email = "me@slukjanov.name";
+    github = "Frostman";
+    githubId = 134872;
+    name = "Sergei Lukianov";
+  };
+  frontsideair = {
+    email = "photonia@gmail.com";
+    github = "frontsideair";
+    githubId = 868283;
+    name = "Fatih Altinok";
+  };
+  ftrvxmtrx = {
+    email = "ftrvxmtrx@gmail.com";
+    github = "ftrvxmtrx";
+    githubId = 248148;
+    name = "Sigrid Solveig Haflínudóttir";
+  };
+  fuerbringer = {
+    email = "severin@fuerbringer.info";
+    github = "fuerbringer";
+    githubId = 10528737;
+    name = "Severin Fürbringer";
+  };
+  fufexan = {
+    email = "fufexan@protonmail.com";
+    github = "fufexan";
+    githubId = 36706276;
+    name = "Fufezan Mihai";
+  };
+  funfunctor = {
+    email = "eocallaghan@alterapraxis.com";
+    name = "Edward O'Callaghan";
+  };
+  fusion809 = {
+    email = "brentonhorne77@gmail.com";
+    github = "fusion809";
+    githubId = 4717341;
+    name = "Brenton Horne";
+  };
+  fuuzetsu = {
+    email = "fuuzetsu@fuuzetsu.co.uk";
+    github = "fuuzetsu";
+    githubId = 893115;
+    name = "Mateusz Kowalczyk";
+  };
+  fuwa = {
+    email = "echowss@gmail.com";
+    github = "fuwa0529";
+    githubId = 40521440;
+    name = "Haruka Akiyama";
+  };
+  fuzen = {
+    email = "me@fuzen.cafe";
+    github = "fuzen-py";
+    githubId = 17859309;
+    name = "Fuzen";
+  };
+  fuzzy-id = {
+    email = "hacking+nixos@babibo.de";
+    name = "Thomas Bach";
+  };
+  fxfactorial = {
+    email = "edgar.factorial@gmail.com";
+    github = "fxfactorial";
+    githubId = 3036816;
+    name = "Edgar Aroutiounian";
+  };
+  gabesoft = {
+    email = "gabesoft@gmail.com";
+    github = "gabesoft";
+    githubId = 606000;
+    name = "Gabriel Adomnicai";
+  };
+  Gabriel439 = {
+    email = "Gabriel439@gmail.com";
+    github = "Gabriel439";
+    githubId = 1313787;
+    name = "Gabriel Gonzalez";
+  };
+  gal_bolle = {
+    email = "florent.becker@ens-lyon.org";
+    github = "FlorentBecker";
+    githubId = 7047019;
+    name = "Florent Becker";
+  };
+  galagora = {
+    email = "lightningstrikeiv@gmail.com";
+    github = "galagora";
+    githubId = 45048741;
+    name = "Alwanga Oyango";
+  };
+  gamb = {
+    email = "adam.gamble@pm.me";
+    github = "gamb";
+    githubId = 293586;
+    name = "Adam Gamble";
+  };
+  garbas = {
+    email = "rok@garbas.si";
+    github = "garbas";
+    githubId = 20208;
+    name = "Rok Garbas";
+  };
+  garrison = {
+    email = "jim@garrison.cc";
+    github = "garrison";
+    githubId = 91987;
+    name = "Jim Garrison";
+  };
+  gavin = {
+    email = "gavin.rogers@holo.host";
+    github = "gavinrogers";
+    githubId = 2430469;
+    name = "Gavin Rogers";
+  };
+  gazally = {
+    email = "gazally@runbox.com";
+    github = "gazally";
+    githubId = 16470252;
+    name = "Gemini Lasswell";
+  };
+  gebner = {
+    email = "gebner@gebner.org";
+    github = "gebner";
+    githubId = 313929;
+    name = "Gabriel Ebner";
+  };
+  georgewhewell = {
+    email = "georgerw@gmail.com";
+    github = "georgewhewell";
+    githubId = 1176131;
+    name = "George Whewell";
+  };
+  georgyo = {
+    email = "george@shamm.as";
+    github = "georgyo";
+    githubId = 19374;
+    name = "George Shammas";
+    keys = [{
+      longkeyid = "rsa4096/0x82BB70D541AE2DB4";
+      fingerprint = "D0CF 440A A703 E0F9 73CB  A078 82BB 70D5 41AE 2DB4";
+    }];
+  };
+  gerschtli = {
+    email = "tobias.happ@gmx.de";
+    github = "Gerschtli";
+    githubId = 10353047;
+    name = "Tobias Happ";
+  };
+  gfrascadorio = {
+    email = "gfrascadorio@tutanota.com";
+    github = "gfrascadorio";
+    githubId = 37602871;
+    name = "Galois";
+  };
+  ggpeti = {
+    email = "ggpeti@gmail.com";
+    github = "ggpeti";
+    githubId = 3217744;
+    name = "Peter Ferenczy";
+  };
+  ghuntley = {
+    email = "ghuntley@ghuntley.com";
+    github = "ghuntley";
+    githubId = 127353;
+    name = "Geoffrey Huntley";
+  };
+  gila = {
+    email = "jeffry.molanus@gmail.com";
+    github = "gila";
+    githubId = 15957973;
+    name = "Jeffry Molanus";
+  };
+  gilligan = {
+    email = "tobias.pflug@gmail.com";
+    github = "gilligan";
+    githubId = 27668;
+    name = "Tobias Pflug";
+  };
+  giogadi = {
+    email = "lgtorres42@gmail.com";
+    github = "giogadi";
+    githubId = 1713676;
+    name = "Luis G. Torres";
+  };
+  gleber = {
+    email = "gleber.p@gmail.com";
+    github = "gleber";
+    githubId = 33185;
+    name = "Gleb Peregud";
+  };
+  glenns = {
+    email = "glenn.searby@gmail.com";
+    github = "glenns";
+    githubId = 615606;
+    name = "Glenn Searby";
+  };
+  glittershark = {
+    name = "Griffin Smith";
+    email = "root@gws.fyi";
+    github = "glittershark";
+    githubId = 1481027;
+    keys = [{
+      longkeyid = "rsa2048/0x44EF5B5E861C09A7";
+      fingerprint = "0F11 A989 879E 8BBB FDC1  E236 44EF 5B5E 861C 09A7";
+    }];
+  };
+  gloaming = {
+    email = "ch9871@gmail.com";
+    github = "gloaming";
+    githubId = 10156748;
+    name = "Craig Hall";
+  };
+  globin = {
+    email = "mail@glob.in";
+    github = "globin";
+    githubId = 1447245;
+    name = "Robin Gloster";
+  };
+  gnxlxnxx = {
+    email = "gnxlxnxx@web.de";
+    github = "gnxlxnxx";
+    githubId = 25820499;
+    name = "Roman Kretschmer";
+  };
+  goertzenator = {
+    email = "daniel.goertzen@gmail.com";
+    github = "goertzenator";
+    githubId = 605072;
+    name = "Daniel Goertzen";
+  };
+  goibhniu = {
+    email = "cillian.deroiste@gmail.com";
+    github = "cillianderoiste";
+    githubId = 643494;
+    name = "Cillian de Róiste";
+  };
+  Gonzih = {
+    email = "gonzih@gmail.com";
+    github = "Gonzih";
+    githubId = 266275;
+    name = "Max Gonzih";
+  };
+  goodrone = {
+    email = "goodrone@gmail.com";
+    github = "goodrone";
+    githubId = 1621335;
+    name = "Andrew Trachenko";
+  };
+  govanify = {
+    name = "Gauvain 'GovanifY' Roussel-Tarbouriech";
+    email = "gauvain@govanify.com";
+    github = "govanify";
+    githubId = 6375438;
+    keys = [{
+      longkeyid = "rsa4096/0xDE62E1E2A6145556";
+      fingerprint = "5214 2D39 A7CE F8FA 872B  CA7F DE62 E1E2 A614 5556";
+    }];
+  };
+  gpyh = {
+    email = "yacine.hmito@gmail.com";
+    github = "yacinehmito";
+    githubId = 6893840;
+    name = "Yacine Hmito";
+  };
+  graham33 = {
+    email = "graham@grahambennett.org";
+    github = "graham33";
+    githubId = 10908649;
+    name = "Graham Bennett";
+  };
+  grahamc = {
+    email = "graham@grahamc.com";
+    github = "grahamc";
+    githubId = 76716;
+    name = "Graham Christensen";
+  };
+  gravndal = {
+    email = "gaute.ravndal+nixos@gmail.com";
+    github = "gravndal";
+    githubId = 4656860;
+    name = "Gaute Ravndal";
+  };
+  grburst = {
+    email = "GRBurst@protonmail.com";
+    github = "GRBurst";
+    githubId = 4647221;
+    name = "GRBurst";
+    keys = [{
+      longkeyid = "rsa4096/0x797F623868CD00C2";
+      fingerprint = "7FC7 98AB 390E 1646 ED4D  8F1F 797F 6238 68CD 00C2";
+    }];
+  };
+  greizgh = {
+    email = "greizgh@ephax.org";
+    github = "greizgh";
+    githubId = 1313624;
+    name = "greizgh";
+  };
+  greydot = {
+    email = "lanablack@amok.cc";
+    github = "greydot";
+    githubId = 7385287;
+    name = "Lana Black";
+  };
+  gridaphobe = {
+    email = "eric@seidel.io";
+    github = "gridaphobe";
+    githubId = 201997;
+    name = "Eric Seidel";
+  };
+  gspia = {
+    email = "iahogsp@gmail.com";
+    github = "gspia";
+    githubId = 3320792;
+    name = "gspia";
+  };
+  guibert = {
+    email = "david.guibert@gmail.com";
+    github = "dguibert";
+    githubId = 1178864;
+    name = "David Guibert";
+  };
+  groodt = {
+    email = "groodt@gmail.com";
+    github = "groodt";
+    githubId = 343415;
+    name = "Greg Roodt";
+  };
+  gschwartz = {
+    email = "gsch@pennmedicine.upenn.edu";
+    github = "GregorySchwartz";
+    githubId = 2490088;
+    name = "Gregory Schwartz";
+  };
+  gtrunsec = {
+    email = "gtrunsec@hardenedlinux.org";
+    github = "GTrunSec";
+    githubId = 21156405;
+    name = "GuangTao Zhang";
+  };
+  guibou = {
+    email = "guillaum.bouchard@gmail.com";
+    github = "guibou";
+    githubId = 9705357;
+    name = "Guillaume Bouchard";
+  };
+  GuillaumeDesforges = {
+    email = "aceus02@gmail.com";
+    github = "GuillaumeDesforges";
+    githubId = 1882000;
+    name = "Guillaume Desforges";
+  };
+  guillaumekoenig = {
+    email = "guillaume.edward.koenig@gmail.com";
+    github = "guillaumekoenig";
+    githubId = 10654650;
+    name = "Guillaume Koenig";
+  };
+  guserav = {
+    email = "guserav@users.noreply.github.com";
+    github = "guserav";
+    githubId = 28863828;
+    name = "guserav";
+  };
+  guyonvarch = {
+    email = "joris@guyonvarch.me";
+    github = "guyonvarch";
+    githubId = 6768842;
+    name = "Joris Guyonvarch";
+  };
+  gvolpe = {
+    email = "volpegabriel@gmail.com";
+    github = "gvolpe";
+    githubId = 443978;
+    name = "Gabriel Volpe";
+  };
+  gytis-ivaskevicius = {
+    name = "Gytis Ivaskevicius";
+    email = "me@gytis.io";
+    github = "gytis-ivaskevicius";
+    githubId = 23264966;
+  };
+  hagl = {
+    email = "harald@glie.be";
+    github = "hagl";
+    githubId = 1162118;
+    name = "Harald Gliebe";
+  };
+  hakuch = {
+    email = "hakuch@gmail.com";
+    github = "hakuch";
+    githubId = 1498782;
+    name = "Jesse Haber-Kucharsky";
+  };
+  hamhut1066 = {
+    email = "github@hamhut1066.com";
+    github = "moredhel";
+    githubId = 1742172;
+    name = "Hamish Hutchings";
+  };
+  hanemile = {
+    email = "mail@emile.space";
+    github = "hanemile";
+    githubId = 22756350;
+    name = "Emile Hansmaennel";
+  };
+  hansjoergschurr = {
+    email = "commits@schurr.at";
+    github = "hansjoergschurr";
+    githubId = 9850776;
+    name = "Hans-Jörg Schurr";
+  };
+  HaoZeke = {
+    email = "r95g10@gmail.com";
+    github = "haozeke";
+    githubId = 4336207;
+    name = "Rohit Goswami";
+    keys = [{
+      longkeyid = "rsa4096/0x9CCCE36402CB49A6";
+      fingerprint = "74B1 F67D 8E43 A94A 7554  0768 9CCC E364 02CB 49A6";
+    }];
+  };
+  happysalada = {
+    email = "raphael@megzari.com";
+    github = "happysalada";
+    githubId = 5317234;
+    name = "Raphael Megzari";
+  };
+  happy-river = {
+    email = "happyriver93@runbox.com";
+    github = "happy-river";
+    githubId = 54728477;
+    name = "Happy River";
+  };
+  haslersn = {
+    email = "haslersn@fius.informatik.uni-stuttgart.de";
+    github = "haslersn";
+    githubId = 33969028;
+    name = "Sebastian Hasler";
+  };
+  havvy = {
+    email = "ryan.havvy@gmail.com";
+    github = "havvy";
+    githubId = 731722;
+    name = "Ryan Scheel";
+  };
+  hax404 = {
+    email = "hax404foogit@hax404.de";
+    github = "hax404";
+    githubId = 1379411;
+    name = "Georg Haas";
+  };
+  hbunke = {
+    email = "bunke.hendrik@gmail.com";
+    github = "hbunke";
+    githubId = 1768793;
+    name = "Hendrik Bunke";
+  };
+  hce = {
+    email = "hc@hcesperer.org";
+    github = "hce";
+    githubId = 147689;
+    name = "Hans-Christian Esperer";
+  };
+  hectorj = {
+    email = "hector.jusforgues+nixos@gmail.com";
+    github = "hectorj";
+    githubId = 2427959;
+    name = "Hector Jusforgues";
+  };
+  hedning = {
+    email = "torhedinbronner@gmail.com";
+    github = "hedning";
+    githubId = 71978;
+    name = "Tor Hedin Brønner";
+  };
+  heel = {
+    email = "parizhskiy@gmail.com";
+    github = "heel";
+    githubId = 287769;
+    name = "Sergii Paryzhskyi";
+  };
+  helkafen = {
+    email = "arnaudpourseb@gmail.com";
+    github = "Helkafen";
+    githubId = 2405974;
+    name = "Sébastian Méric de Bellefon";
+  };
+  henrikolsson = {
+    email = "henrik@fixme.se";
+    github = "henrikolsson";
+    githubId = 982322;
+    name = "Henrik Olsson";
+  };
+  henrytill = {
+    email = "henrytill@gmail.com";
+    github = "henrytill";
+    githubId = 6430643;
+    name = "Henry Till";
+  };
+  heph2 = {
+    email = "srht@mrkeebs.eu";
+    github = "heph2";
+    githubId = 87579883;
+    name = "Marco";
+  };
+  herberteuler = {
+    email = "herberteuler@gmail.com";
+    github = "herberteuler";
+    githubId = 1401179;
+    name = "Guanpeng Xu";
+  };
+  hexa = {
+    email = "hexa@darmstadt.ccc.de";
+    github = "mweinelt";
+    githubId = 131599;
+    name = "Martin Weinelt";
+  };
+  hh = {
+    email = "hh@m-labs.hk";
+    github = "HarryMakes";
+    githubId = 66358631;
+    name = "Harry Ho";
+  };
+  hhm = {
+    email = "heehooman+nixpkgs@gmail.com";
+    github = "hhm0";
+    githubId = 3656888;
+    name = "hhm";
+  };
+  higebu = {
+    name = "Yuya Kusakabe";
+    email = "yuya.kusakabe@gmail.com";
+    github = "higebu";
+    githubId = 733288;
+  };
+  hinton = {
+    email = "t@larkery.com";
+    name = "Tom Hinton";
+  };
+  hirenashah = {
+    email = "hiren@hiren.io";
+    github = "hirenashah";
+    githubId = 19825977;
+    name = "Hiren Shah";
+  };
+  hiro98 = {
+    email = "hiro@protagon.space";
+    github = "vale981";
+    githubId = 4025991;
+    name = "Valentin Boettcher";
+    keys = [{
+      longkeyid = "rsa2048/0xC22D4DE4D7B32D19";
+      fingerprint = "45A9 9917 578C D629 9F5F  B5B4 C22D 4DE4 D7B3 2D19";
+    }];
+  };
+  hjones2199 = {
+    email = "hjones2199@gmail.com";
+    github = "hjones2199";
+    githubId = 5525217;
+    name = "Hunter Jones";
+  };
+  hkjn = {
+    email = "me@hkjn.me";
+    name = "Henrik Jonsson";
+    github = "hkjn";
+    githubId = 287215;
+    keys = [{
+      longkeyid = "rsa4096/0x03EFBF839A5FDC15";
+      fingerprint = "D618 7A03 A40A 3D56 62F5  4B46 03EF BF83 9A5F DC15";
+    }];
+  };
+  hlolli = {
+    email = "hlolli@gmail.com";
+    github = "hlolli";
+    githubId = 6074754;
+    name = "Hlodver Sigurdsson";
+  };
+  hugoreeves = {
+    email = "hugo@hugoreeves.com";
+    github = "hugoreeves";
+    githubId = 20039091;
+    name = "Hugo Reeves";
+    keys = [{
+      longkeyid = "rsa4096/0x49FA39F8A7F735F9";
+      fingerprint = "78C2 E81C 828A 420B 269A  EBC1 49FA 39F8 A7F7 35F9";
+    }];
+  };
+  humancalico = {
+    email = "humancalico@disroot.org";
+    github = "humancalico";
+    githubId = 51334444;
+    name = "Akshat Agarwal";
+  };
+  hodapp = {
+    email = "hodapp87@gmail.com";
+    github = "Hodapp87";
+    githubId = 896431;
+    name = "Chris Hodapp";
+  };
+  holymonson = {
+    email = "holymonson@gmail.com";
+    github = "holymonson";
+    githubId = 902012;
+    name = "Monson Shao";
+  };
+  hongchangwu = {
+    email = "wuhc85@gmail.com";
+    github = "hongchangwu";
+    githubId = 362833;
+    name = "Hongchang Wu";
+  };
+  hoppla20 = {
+    email = "privat@vincentcui.de";
+    github = "hoppla20";
+    githubId = 25618740;
+    name = "Vincent Cui";
+  };
+  hoverbear = {
+    email = "operator+nix@hoverbear.org";
+    github = "hoverbear";
+    githubId = 130903;
+    name = "Ana Hobden";
+  };
+  holgerpeters = {
+    name = "Holger Peters";
+    email = "holger.peters@posteo.de";
+    github = "HolgerPeters";
+    githubId = 4097049;
+  };
+  hqurve = {
+    email = "hqurve@outlook.com";
+    github = "hqurve";
+    githubId = 53281855;
+    name = "hqurve";
+  };
+  hrdinka = {
+    email = "c.nix@hrdinka.at";
+    github = "hrdinka";
+    githubId = 1436960;
+    name = "Christoph Hrdinka";
+  };
+  hrhino = {
+    email = "hora.rhino@gmail.com";
+    github = "hrhino";
+    githubId = 28076058;
+    name = "Harrison Houghton";
+  };
+  hschaeidt = {
+    email = "he.schaeidt@gmail.com";
+    github = "hschaeidt";
+    githubId = 1614615;
+    name = "Hendrik Schaeidt";
+  };
+  htr = {
+    email = "hugo@linux.com";
+    github = "htr";
+    githubId = 39689;
+    name = "Hugo Tavares Reis";
+  };
+  hugolgst = {
+    email = "hugo.lageneste@pm.me";
+    github = "hugolgst";
+    githubId = 15371828;
+    name = "Hugo Lageneste";
+  };
+  hypersw = {
+    email = "baltic@hypersw.net";
+    github = "hypersw";
+    githubId = 2332070;
+    name = "Serge Baltic";
+  };
+  hyphon81 = {
+    email = "zero812n@gmail.com";
+    github = "hyphon81";
+    githubId = 12491746;
+    name = "Masato Yonekawa";
+  };
+  hyzual = {
+    email = "hyzual@gmail.com";
+    github = "Hyzual";
+    githubId = 2051507;
+    name = "Joris Masson";
+  };
+  hzeller = {
+    email = "h.zeller@acm.org";
+    github = "hzeller";
+    githubId = 140937;
+    name = "Henner Zeller";
+  };
+  i077 = {
+    email = "nixpkgs@imranhossa.in";
+    github = "i077";
+    githubId = 2789926;
+    name = "Imran Hossain";
+  };
+  iammrinal0 = {
+    email = "nixpkgs@mrinalpurohit.in";
+    github = "iammrinal0";
+    githubId = 890062;
+    name = "Mrinal";
+  };
+  iand675 = {
+    email = "ian@iankduncan.com";
+    github = "iand675";
+    githubId = 69209;
+    name = "Ian Duncan";
+  };
+  ianmjones = {
+    email = "ian@ianmjones.com";
+    github = "ianmjones";
+    githubId = 4710;
+    name = "Ian M. Jones";
+  };
+  ianwookim = {
+    email = "ianwookim@gmail.com";
+    github = "wavewave";
+    githubId = 1031119;
+    name = "Ian-Woo Kim";
+  };
+  iblech = {
+    email = "iblech@speicherleck.de";
+    github = "iblech";
+    githubId = 3661115;
+    name = "Ingo Blechschmidt";
+  };
+  icy-thought = {
+    name = "Icy-Thought";
+    email = "gilganyx@pm.me";
+    github = "Icy-Thought";
+    githubId = 53710398;
+  };
+  idontgetoutmuch = {
+    email = "dominic@steinitz.org";
+    github = "idontgetoutmuch";
+    githubId = 1550265;
+    name = "Dominic Steinitz";
+  };
+  igsha = {
+    email = "igor.sharonov@gmail.com";
+    github = "igsha";
+    githubId = 5345170;
+    name = "Igor Sharonov";
+  };
+  iimog = {
+    email = "iimog@iimog.org";
+    github = "iimog";
+    githubId = 7403236;
+    name = "Markus J. Ankenbrand";
+  };
+  ikervagyok = {
+    email = "ikervagyok@gmail.com";
+    github = "ikervagyok";
+    githubId = 7481521;
+    name = "Balázs Lengyel";
+  };
+  ilian = {
+    email = "ilian@tuta.io";
+    github = "ilian";
+    githubId = 25505957;
+    name = "Ilian";
+  };
+  ilikeavocadoes = {
+    email = "ilikeavocadoes@hush.com";
+    github = "ilikeavocadoes";
+    githubId = 36193715;
+    name = "Lassi Haasio";
+  };
+  illegalprime = {
+    email = "themichaeleden@gmail.com";
+    github = "illegalprime";
+    githubId = 4401220;
+    name = "Michael Eden";
+  };
+  illiusdope = {
+    email = "mat@marini.ca";
+    github = "illiusdope";
+    githubId = 61913481;
+    name = "Mat Marini";
+  };
+  illustris = {
+    email = "me@illustris.tech";
+    github = "illustris";
+    githubId = 3948275;
+    name = "Harikrishnan R";
+  };
+  ilya-fedin = {
+    email = "fedin-ilja2010@ya.ru";
+    github = "ilya-fedin";
+    githubId = 17829319;
+    name = "Ilya Fedin";
+  };
+  ilya-kolpakov = {
+    email = "ilya.kolpakov@gmail.com";
+    github = "ilya-kolpakov";
+    githubId = 592849;
+    name = "Ilya Kolpakov";
+  };
+  imalison = {
+    email = "IvanMalison@gmail.com";
+    github = "IvanMalison";
+    githubId = 1246619;
+    name = "Ivan Malison";
+  };
+  imalsogreg = {
+    email = "imalsogreg@gmail.com";
+    github = "imalsogreg";
+    githubId = 993484;
+    name = "Greg Hale";
+  };
+  imlonghao = {
+    email = "nixos@esd.cc";
+    github = "imlonghao";
+    githubId = 4951333;
+    name = "Hao Long";
+  };
+  immae = {
+    email = "ismael@bouya.org";
+    github = "immae";
+    githubId = 510202;
+    name = "Ismaël Bouya";
+  };
+  imuli = {
+    email = "i@imu.li";
+    github = "imuli";
+    githubId = 4085046;
+    name = "Imuli";
+  };
+  infinisil = {
+    email = "contact@infinisil.com";
+    github = "infinisil";
+    githubId = 20525370;
+    name = "Silvan Mosberger";
+    keys = [{
+      longkeyid = "rsa4096/0x422E9EDAE0157170";
+      fingerprint = "6C2B 55D4 4E04 8266 6B7D  DA1A 422E 9EDA E015 7170";
+    }];
+  };
+  ingenieroariel = {
+    email = "ariel@nunez.co";
+    github = "ingenieroariel";
+    githubId = 54999;
+    name = "Ariel Nunez";
+  };
+  irenes = {
+    name = "Irene Knapp";
+    email = "ireneista@gmail.com";
+    github = "IreneKnapp";
+    githubId = 157678;
+    keys = [{
+      longkeyid = "rsa4096/0xDBF252AFFB2619FD";
+      fingerprint = "E864 BDFA AB55 36FD C905  5195 DBF2 52AF FB26 19FD";
+    }];
+  };
+  ironpinguin = {
+    email = "michele@catalano.de";
+    github = "ironpinguin";
+    githubId = 137306;
+    name = "Michele Catalano";
+  };
+  isgy = {
+    name = "isgy";
+    email = "isgy@teiyg.com";
+    github = "isgy";
+    githubId = 13622947;
+    keys = [{
+      longkeyid = "rsa4096/0xD3E1B013B4631293";
+      fingerprint = "1412 816B A9FA F62F D051 1975 D3E1 B013 B463 1293";
+    }];
+  };
+  ivan = {
+    email = "ivan@ludios.org";
+    github = "ivan";
+    githubId = 4458;
+    name = "Ivan Kozik";
+  };
+  ivan-babrou = {
+    email = "nixpkgs@ivan.computer";
+    name = "Ivan Babrou";
+    github = "bobrik";
+    githubId = 89186;
+  };
+  ivan-timokhin = {
+    email = "nixpkgs@ivan.timokhin.name";
+    name = "Ivan Timokhin";
+    github = "ivan-timokhin";
+    githubId = 9802104;
+  };
+  ivan-tkatchev = {
+    email = "tkatchev@gmail.com";
+    name = "Ivan Tkatchev";
+  };
+  ivanbrennan = {
+    email = "ivan.brennan@gmail.com";
+    github = "ivanbrennan";
+    githubId = 1672874;
+    name = "Ivan Brennan";
+    keys = [{
+      longkeyid = "rsa4096/0x79C3C47DC652EA54";
+      fingerprint = "7311 2700 AB4F 4CDF C68C  F6A5 79C3 C47D C652 EA54";
+    }];
+  };
+  ivankovnatsky = {
+    email = "ikovnatsky@protonmail.ch";
+    github = "ivankovnatsky";
+    githubId = 75213;
+    name = "Ivan Kovnatsky";
+    keys = [{
+      longkeyid = "rsa4096/0x3A33FA4C82ED674F";
+      fingerprint = "6BD3 7248 30BD 941E 9180  C1A3 3A33 FA4C 82ED 674F";
+    }];
+  };
+  ivar = {
+    email = "ivar.scholten@protonmail.com";
+    github = "IvarWithoutBones";
+    githubId = 41924494;
+    name = "Ivar";
+  };
+  ixmatus = {
+    email = "parnell@digitalmentat.com";
+    github = "ixmatus";
+    githubId = 30714;
+    name = "Parnell Springmeyer";
+  };
+  ixxie = {
+    email = "matan@fluxcraft.net";
+    github = "ixxie";
+    githubId = 20320695;
+    name = "Matan Bendix Shenhav";
+  };
+  izorkin = {
+    email = "Izorkin@gmail.com";
+    github = "izorkin";
+    githubId = 26877687;
+    name = "Yurii Izorkin";
+  };
+  j0hax = {
+    name = "Johannes Arnold";
+    email = "johannes.arnold@stud.uni-hannover.de";
+    github = "j0hax";
+    githubId = 3802620;
+  };
+  j4m3s = {
+    name = "James Landrein";
+    email = "github@j4m3s.eu";
+    github = "j4m3s-s";
+    githubId = 9413812;
+  };
+  jacg = {
+    name = "Jacek Generowicz";
+    email = "jacg@my-post-office.net";
+    github = "jacg";
+    githubId = 2570854;
+  };
+  jasoncarr = {
+    email = "jcarr250@gmail.com";
+    github = "jasoncarr0";
+    githubId = 6874204;
+    name = "Jason Carr";
+  };
+  j-brn = {
+    email = "me@bricker.io";
+    github = "j-brn";
+    githubId = 40566146;
+    name = "Jonas Braun";
+  };
+  j-keck = {
+    email = "jhyphenkeck@gmail.com";
+    github = "j-keck";
+    githubId = 3081095;
+    name = "Jürgen Keck";
+  };
+  j03 = {
+    email = "github@johannesloetzsch.de";
+    github = "johannesloetzsch";
+    githubId = 175537;
+    name = "Johannes Lötzsch";
+  };
+  jackgerrits = {
+    email = "jack@jackgerrits.com";
+    github = "jackgerrits";
+    githubId = 7558482;
+    name = "Jack Gerrits";
+  };
+  jagajaga = {
+    email = "ars.seroka@gmail.com";
+    github = "jagajaga";
+    githubId = 2179419;
+    name = "Arseniy Seroka";
+  };
+  jakeisnt = {
+    name = "Jacob Chvatal";
+    email = "jake@isnt.online";
+    github = "jakeisnt";
+    githubId = 29869612;
+  };
+  jakelogemann = {
+    email = "jake.logemann@gmail.com";
+    github = "jakelogemann";
+    githubId = 820715;
+    name = "Jake Logemann";
+  };
+  jakestanger = {
+    email = "mail@jstanger.dev";
+    github = "JakeStanger";
+    githubId = 5057870;
+    name = "Jake Stanger";
+  };
+  jakewaksbaum = {
+    email = "jake.waksbaum@gmail.com";
+    github = "jbaum98";
+    githubId = 5283991;
+    name = "Jake Waksbaum";
+  };
+  jakubgs = {
+    email = "jakub@gsokolowski.pl";
+    github = "jakubgs";
+    githubId = 2212681;
+    name = "Jakub Grzgorz Sokołowski";
+  };
+  jamiemagee = {
+    email = "jamie.magee@gmail.com";
+    github = "JamieMagee";
+    githubId = 1358764;
+    name = "Jamie Magee";
+  };
+  jammerful = {
+    email = "jammerful@gmail.com";
+    github = "jammerful";
+    githubId = 20176306;
+    name = "jammerful";
+  };
+  jansol = {
+    email = "jan.solanti@paivola.fi";
+    github = "jansol";
+    githubId = 2588851;
+    name = "Jan Solanti";
+  };
+  jappie = {
+    email = "jappieklooster@hotmail.com";
+    github = "jappeace";
+    githubId = 3874017;
+    name = "Jappie Klooster";
+  };
+  javaguirre = {
+    email = "contacto@javaguirre.net";
+    github = "javaguirre";
+    githubId = 488556;
+    name = "Javier Aguirre";
+  };
+  jb55 = {
+    email = "jb55@jb55.com";
+    github = "jb55";
+    githubId = 45598;
+    name = "William Casarin";
+  };
+  jbcrail = {
+    name = "Joseph Crail";
+    email = "jbcrail@gmail.com";
+    github = "jbcrail";
+    githubId = 6038;
+  };
+  jbedo = {
+    email = "cu@cua0.org";
+    github = "jbedo";
+    githubId = 372912;
+    name = "Justin Bedő";
+  };
+  jbgi = {
+    email = "jb@giraudeau.info";
+    github = "jbgi";
+    githubId = 221929;
+    name = "Jean-Baptiste Giraudeau";
+  };
+  jchw = {
+    email = "johnwchadwick@gmail.com";
+    github = "jchv";
+    githubId = 938744;
+    name = "John Chadwick";
+  };
+  jcumming = {
+    email = "jack@mudshark.org";
+    github = "jcumming";
+    githubId = 1982341;
+    name = "Jack Cummings";
+  };
+  jdagilliland = {
+    email = "jdagilliland@gmail.com";
+    github = "jdagilliland";
+    githubId = 1383440;
+    name = "Jason Gilliland";
+  };
+  jdahm = {
+    email = "johann.dahm@gmail.com";
+    github = "jdahm";
+    githubId = 68032;
+    name = "Johann Dahm";
+  };
+  jdanek = {
+    email = "jdanek@redhat.com";
+    github = "jdanekrh";
+    githubId = 17877663;
+    keys = [{
+      longkeyid = "ed25519/0x69275CADF15D872E";
+      fingerprint = "D4A6 F051 AD58 2E7C BCED  5439 6927 5CAD F15D 872E";
+    }];
+    name = "Jiri Daněk";
+  };
+  jdbaldry = {
+    email = "jack.baldry@grafana.com";
+    github = "jdbaldry";
+    githubId = 4599384;
+    name = "Jack Baldry";
+  };
+  jdehaas = {
+    email = "qqlq@nullptr.club";
+    github = "jeroendehaas";
+    githubId = 117874;
+    name = "Jeroen de Haas";
+  };
+  jduan = {
+    name = "Jingjing Duan";
+    email = "duanjingjing@gmail.com";
+    github = "jduan";
+    githubId = 452450;
+  };
+  jefdaj = {
+    email = "jefdaj@gmail.com";
+    github = "jefdaj";
+    githubId = 1198065;
+    name = "Jeffrey David Johnson";
+  };
+  jefflabonte = {
+    email = "grimsleepless@protonmail.com";
+    github = "jefflabonte";
+    githubId = 9425955;
+    name = "Jean-François Labonté";
+  };
+  jensbin = {
+    email = "jensbin+git@pm.me";
+    github = "jensbin";
+    githubId = 1608697;
+    name = "Jens Binkert";
+  };
+  jeremyschlatter = {
+    email = "github@jeremyschlatter.com";
+    github = "jeremyschlatter";
+    githubId = 5741620;
+    name = "Jeremy Schlatter";
+  };
+  jerith666 = {
+    email = "github@matt.mchenryfamily.org";
+    github = "jerith666";
+    githubId = 854319;
+    name = "Matt McHenry";
+  };
+  jeschli = {
+    email = "jeschli@gmail.com";
+    github = "Jeschli";
+    githubId = 10786794;
+    name = "Markus Hihn";
+  };
+  jethro = {
+    email = "jethrokuan95@gmail.com";
+    github = "jethrokuan";
+    githubId = 1667473;
+    name = "Jethro Kuan";
+  };
+  jfb = {
+    email = "james@yamtime.com";
+    github = "tftio";
+    githubId = 143075;
+    name = "James Felix Black";
+  };
+  jflanglois = {
+    email = "yourstruly@julienlanglois.me";
+    github = "jflanglois";
+    githubId = 18501;
+    name = "Julien Langlois";
+  };
+  jfrankenau = {
+    email = "johannes@frankenau.net";
+    github = "jfrankenau";
+    githubId = 2736480;
+    name = "Johannes Frankenau";
+  };
+  jfroche = {
+    name = "Jean-François Roche";
+    email = "jfroche@pyxel.be";
+    github = "jfroche";
+    githubId = 207369;
+    keys = [{
+      longkeyid = "dsa1024/0xD1D09DE169EA19A0";
+      fingerprint = "7EB1 C02A B62B B464 6D7C  E4AE D1D0 9DE1 69EA 19A0";
+    }];
+  };
+  jgeerds = {
+    email = "jascha@geerds.org";
+    github = "jgeerds";
+    githubId = 1473909;
+    name = "Jascha Geerds";
+  };
+  jgertm = {
+    email = "jger.tm@gmail.com";
+    github = "jgertm";
+    githubId = 6616642;
+    name = "Tim Jaeger";
+  };
+  jgillich = {
+    email = "jakob@gillich.me";
+    github = "jgillich";
+    githubId = 347965;
+    name = "Jakob Gillich";
+  };
+  jglukasik = {
+    email = "joseph@jgl.me";
+    github = "jglukasik";
+    githubId = 6445082;
+    name = "Joseph Lukasik";
+  };
+  jhhuh = {
+    email = "jhhuh.note@gmail.com";
+    github = "jhhuh";
+    githubId = 5843245;
+    name = "Ji-Haeng Huh";
+  };
+  jhillyerd = {
+    email = "james+nixos@hillyerd.com";
+    github = "jhillyerd";
+    githubId = 2502736;
+    name = "James Hillyerd";
+  };
+  jiehong = {
+    email = "nixos@majiehong.com";
+    github = "Jiehong";
+    githubId = 1061229;
+    name = "Jiehong Ma";
+  };
+  jirkamarsik = {
+    email = "jiri.marsik89@gmail.com";
+    github = "jirkamarsik";
+    githubId = 184898;
+    name = "Jirka Marsik";
+  };
+  jitwit = {
+    email = "jrn@bluefarm.ca";
+    github = "jitwit";
+    githubId = 51518420;
+    name = "jitwit";
+  };
+  jjjollyjim = {
+    email = "jamie@kwiius.com";
+    github = "JJJollyjim";
+    githubId = 691552;
+    name = "Jamie McClymont";
+  };
+  jk = {
+    email = "hello+nixpkgs@j-k.io";
+    github = "06kellyjac";
+    githubId = 9866621;
+    name = "Jack";
+  };
+  jlesquembre = {
+    email = "jl@lafuente.me";
+    github = "jlesquembre";
+    githubId = 1058504;
+    name = "José Luis Lafuente";
+  };
+  jloyet = {
+    email = "ml@fatbsd.com";
+    github = "fatpat";
+    githubId = 822436;
+    name = "Jérôme Loyet";
+  };
+  jluttine = {
+    email = "jaakko.luttinen@iki.fi";
+    github = "jluttine";
+    githubId = 2195834;
+    name = "Jaakko Luttinen";
+  };
+  jm2dev = {
+    email = "jomarcar@gmail.com";
+    github = "jm2dev";
+    githubId = 474643;
+    name = "José Miguel Martínez Carrasco";
+  };
+  jmagnusj = {
+    email = "jmagnusj@gmail.com";
+    github = "magnusjonsson";
+    githubId = 8900;
+    name = "Johan Magnus Jonsson";
+  };
+  jmettes = {
+    email = "jonathan@jmettes.com";
+    github = "jmettes";
+    githubId = 587870;
+    name = "Jonathan Mettes";
+  };
+  jo1gi = {
+    email = "joakimholm@protonmail.com";
+    github = "jo1gi";
+    githubId = 26695750;
+    name = "Joakim Holm";
+  };
+  joachifm = {
+    email = "joachifm@fastmail.fm";
+    github = "joachifm";
+    githubId = 41977;
+    name = "Joachim Fasting";
+  };
+  joachimschmidt557 = {
+    email = "joachim.schmidt557@outlook.com";
+    github = "joachimschmidt557";
+    githubId = 28556218;
+    name = "Joachim Schmidt";
+  };
+  joamaki = {
+    email = "joamaki@gmail.com";
+    github = "joamaki";
+    githubId = 1102396;
+    name = "Jussi Maki";
+  };
+  jobojeha = {
+    email = "jobojeha@jeppener.de";
+    github = "jobojeha";
+    githubId = 60272884;
+    name = "Jonathan Jeppener-Haltenhoff";
+  };
+  joelancaster = {
+    email = "joe.a.lancas@gmail.com";
+    github = "joelancaster";
+    githubId = 16760945;
+    name = "Joe Lancaster";
+  };
+  joelburget = {
+    email = "joelburget@gmail.com";
+    github = "joelburget";
+    githubId = 310981;
+    name = "Joel Burget";
+  };
+  joelmo = {
+    email = "joel.moberg@gmail.com";
+    github = "joelmo";
+    githubId = 336631;
+    name = "Joel Moberg";
+  };
+  joelteon = {
+    email = "me@joelt.io";
+    name = "Joel Taylor";
+  };
+  joepie91 = {
+    email = "admin@cryto.net";
+    name = "Sven Slootweg";
+    github = "joepie91";
+    githubId = 1663259;
+  };
+  joesalisbury = {
+    email = "salisbury.joseph@gmail.com";
+    github = "JosephSalisbury";
+    githubId = 297653;
+    name = "Joe Salisbury";
+  };
+  johanot = {
+    email = "write@ownrisk.dk";
+    github = "johanot";
+    githubId = 998763;
+    name = "Johan Thomsen";
+  };
+  johbo = {
+    email = "johannes@bornhold.name";
+    github = "johbo";
+    githubId = 117805;
+    name = "Johannes Bornhold";
+  };
+  johnazoidberg = {
+    email = "git@danielschaefer.me";
+    github = "johnazoidberg";
+    githubId = 5307138;
+    name = "Daniel Schäfer";
+  };
+  johnchildren = {
+    email = "john.a.children@gmail.com";
+    github = "johnchildren";
+    githubId = 32305209;
+    name = "John Children";
+  };
+  johnmh = {
+    email = "johnmh@openblox.org";
+    github = "johnmh";
+    githubId = 2576152;
+    name = "John M. Harris, Jr.";
+  };
+  johnramsden = {
+    email = "johnramsden@riseup.net";
+    github = "johnramsden";
+    githubId = 8735102;
+    name = "John Ramsden";
+  };
+  johntitor = {
+    email = "huyuumi.dev@gmail.com";
+    github = "JohnTitor";
+    githubId = 25030997;
+    name = "Yuki Okushi";
+  };
+  jojosch = {
+    name = "Johannes Schleifenbaum";
+    email = "johannes@js-webcoding.de";
+    github = "jojosch";
+    githubId = 327488;
+    keys = [{
+      longkeyid = "ed25519/059093B1A278BCD0";
+      fingerprint = "7249 70E6 A661 D84E 8B47  678A 0590 93B1 A278 BCD0";
+    }];
+  };
+  joko = {
+    email = "ioannis.koutras@gmail.com";
+    github = "jokogr";
+    githubId = 1252547;
+    keys = [{
+      # compare with https://keybase.io/joko
+      longkeyid = "rsa2048/0x85EAE7D9DF56C5CA";
+      fingerprint = "B154 A8F9 0610 DB45 0CA8  CF39 85EA E7D9 DF56 C5CA";
+    }];
+    name = "Ioannis Koutras";
+  };
+  jonafato = {
+    email = "jon@jonafato.com";
+    github = "jonafato";
+    githubId = 392720;
+    name = "Jon Banafato";
+  };
+  jonathanmarler = {
+    email = "johnnymarler@gmail.com";
+    github = "marler8997";
+    githubId = 304904;
+    name = "Jonathan Marler";
+  };
+  jonathanreeve = {
+    email = "jon.reeve@gmail.com";
+    github = "JonathanReeve";
+    githubId = 1843676;
+    name = "Jonathan Reeve";
+  };
+  jonringer = {
+    email = "jonringer117@gmail.com";
+    github = "jonringer";
+    githubId = 7673602;
+    name = "Jonathan Ringer";
+  };
+  jorise = {
+    email = "info@jorisengbers.nl";
+    github = "JorisE";
+    githubId = 1767283;
+    name = "Joris Engbers";
+  };
+  jorsn = {
+    name = "Johannes Rosenberger";
+    email = "johannes@jorsn.eu";
+    github = "jorsn";
+    githubId = 4646725;
+  };
+  joshuafern = {
+    name = "Joshua Fern";
+    email = "joshuafern@protonmail.com";
+    github = "JoshuaFern";
+    githubId = 4300747;
+  };
+  jpas = {
+    name = "Jarrod Pas";
+    email = "jarrod@jarrodpas.com";
+    github = "jpas";
+    githubId = 5689724;
+  };
+  jpdoyle = {
+    email = "joethedoyle@gmail.com";
+    github = "jpdoyle";
+    githubId = 1918771;
+    name = "Joe Doyle";
+  };
+  jperras = {
+    email = "joel@nerderati.com";
+    github = "jperras";
+    githubId = 20675;
+    name = "Joël Perras";
+  };
+  jpierre03 = {
+    email = "nix@prunetwork.fr";
+    github = "jpierre03";
+    githubId = 954536;
+    name = "Jean-Pierre PRUNARET";
+  };
+  jpotier = {
+    email = "jpo.contributes.to.nixos@marvid.fr";
+    github = "jpotier";
+    githubId = 752510;
+    name = "Martin Potier";
+  };
+  jqueiroz = {
+    email = "nixos@johnjq.com";
+    github = "jqueiroz";
+    githubId = 4968215;
+    name = "Jonathan Queiroz";
+  };
+  jraygauthier = {
+    email = "jraygauthier@gmail.com";
+    github = "jraygauthier";
+    githubId = 4611077;
+    name = "Raymond Gauthier";
+  };
+  jschievink = {
+    email = "jonasschievink@gmail.com";
+    github = "jonas-schievink";
+    githubId = 1786438;
+    name = "Jonas Schievink";
+  };
+  jshcmpbll = {
+    email = "me@joshuadcampbell.com";
+    github = "jshcmpbll";
+    githubId = 16374374;
+    name = "Joshua Campbell";
+  };
+  jshholland = {
+    email = "josh@inv.alid.pw";
+    github = "jshholland";
+    githubId = 107689;
+    name = "Josh Holland";
+  };
+  jtcoolen = {
+    email = "jtcoolen@pm.me";
+    name = "Julien Coolen";
+    github = "jtcoolen";
+    githubId = 54635632;
+    keys = [{
+      longkeyid = "rsa4096/0x19642151C218F6F5";
+      fingerprint = "4C68 56EE DFDA 20FB 77E8  9169 1964 2151 C218 F6F5";
+    }];
+  };
+  jtobin = {
+    email = "jared@jtobin.io";
+    github = "jtobin";
+    githubId = 1414434;
+    name = "Jared Tobin";
+  };
+  jtojnar = {
+    email = "jtojnar@gmail.com";
+    github = "jtojnar";
+    githubId = 705123;
+    name = "Jan Tojnar";
+  };
+  juaningan = {
+    email = "juaningan@gmail.com";
+    github = "juaningan";
+    githubId = 810075;
+    name = "Juan Rodal";
+  };
+  juliendehos = {
+    email = "dehos@lisic.univ-littoral.fr";
+    github = "juliendehos";
+    githubId = 11947756;
+    name = "Julien Dehos";
+  };
+  julm = {
+    email = "julm+nixpkgs@sourcephile.fr";
+    github = "ju1m";
+    githubId = 21160136;
+    name = "Julien Moutinho";
+  };
+  jumper149 = {
+    email = "felixspringer149@gmail.com";
+    github = "jumper149";
+    githubId = 39434424;
+    name = "Felix Springer";
+  };
+  justinas = {
+    email = "justinas@justinas.org";
+    github = "justinas";
+    githubId = 662666;
+    name = "Justinas Stankevičius";
+  };
+  justinlovinger = {
+    email = "git@justinlovinger.com";
+    github = "JustinLovinger";
+    githubId = 7183441;
+    name = "Justin Lovinger";
+  };
+  justinwoo = {
+    email = "moomoowoo@gmail.com";
+    github = "justinwoo";
+    githubId = 2396926;
+    name = "Justin Woo";
+  };
+  jwatt = {
+    email = "jwatt@broken.watch";
+    github = "jjwatt";
+    githubId = 2397327;
+    name = "Jesse Wattenbarger";
+  };
+  jwiegley = {
+    email = "johnw@newartisans.com";
+    github = "jwiegley";
+    githubId = 8460;
+    name = "John Wiegley";
+  };
+  jwijenbergh = {
+    email = "jeroenwijenbergh@protonmail.com";
+    github = "jwijenbergh";
+    githubId = 46386452;
+    name = "Jeroen Wijenbergh";
+  };
+  jwilberding = {
+    email = "jwilberding@afiniate.com";
+    name = "Jordan Wilberding";
+  };
+  jwoudenberg = {
+    email = "nixpkgs@jasperwoudenberg.com";
+    github = "jwoudenberg";
+    githubId = 1525551;
+    name = "Jasper Woudenberg";
+  };
+  jwygoda = {
+    email = "jaroslaw@wygoda.me";
+    github = "jwygoda";
+    githubId = 20658981;
+    name = "Jarosław Wygoda";
+  };
+  jyp = {
+    email = "jeanphilippe.bernardy@gmail.com";
+    github = "jyp";
+    githubId = 27747;
+    name = "Jean-Philippe Bernardy";
+  };
+  jzellner = {
+    email = "jeffz@eml.cc";
+    github = "sofuture";
+    githubId = 66669;
+    name = "Jeff Zellner";
+  };
+  kaction = {
+    name = "Dmitry Bogatov";
+    email = "KAction@disroot.org";
+    github = "kaction";
+    githubId = 44864956;
+    keys = [{
+      longkeyid = "ed25519/0x749FD4DFA2E94236";
+      fingerprint = "3F87 0A7C A7B4 3731 2F13  6083 749F D4DF A2E9 4236";
+    }];
+  };
+  kaiha = {
+    email = "kai.harries@gmail.com";
+    github = "kaiha";
+    githubId = 6544084;
+    name = "Kai Harries";
+  };
+  kalbasit = {
+    email = "wael.nasreddine@gmail.com";
+    github = "kalbasit";
+    githubId = 87115;
+    name = "Wael Nasreddine";
+  };
+  kalekseev = {
+    email = "mail@kalekseev.com";
+    github = "kalekseev";
+    githubId = 367259;
+    name = "Konstantin Alekseev";
+  };
+  kamadorueda = {
+    name = "Kevin Amado";
+    email = "kamadorueda@gmail.com";
+    github = "kamadorueda";
+    githubId = 47480384;
+    keys = [{
+      longkeyid = "rsa4096/0x04D0CEAF916A9A40";
+      fingerprint = "2BE3 BAFD 793E A349 ED1F  F00F 04D0 CEAF 916A 9A40";
+    }];
+  };
+  kamilchm = {
+    email = "kamil.chm@gmail.com";
+    github = "kamilchm";
+    githubId = 1621930;
+    name = "Kamil Chmielewski";
+  };
+  kampfschlaefer = {
+    email = "arnold@arnoldarts.de";
+    github = "kampfschlaefer";
+    githubId = 3831860;
+    name = "Arnold Krille";
+  };
+  karantan = {
+    name = "Gasper Vozel";
+    email = "karantan@gmail.com";
+    github = "karantan";
+    githubId = 7062631;
+  };
+  KarlJoad = {
+    email = "karl@hallsby.com";
+    github = "KarlJoad";
+    githubId = 34152449;
+    name = "Karl Hallsby";
+  };
+  karolchmist = {
+    email = "info+nix@chmist.com";
+    name = "karolchmist";
+  };
+  kayhide = {
+    email = "kayhide@gmail.com";
+    github = "kayhide";
+    githubId = 1730718;
+    name = "Hideaki Kawai";
+  };
+  kazcw = {
+    email = "kaz@lambdaverse.org";
+    github = "kazcw";
+    githubId = 1047859;
+    name = "Kaz Wesley";
+  };
+  kcalvinalvin = {
+    email = "calvin@kcalvinalvin.info";
+    github = "kcalvinalvin";
+    githubId = 37185887;
+    name = "Calvin Kim";
+  };
+  kennyballou = {
+    email = "kb@devnulllabs.io";
+    github = "kennyballou";
+    githubId = 2186188;
+    name = "Kenny Ballou";
+    keys = [{
+      longkeyid = "rsa4096/0xB0CAA28A02958308";
+      fingerprint = "932F 3E8E 1C0F 4A98 95D7  B8B8 B0CA A28A 0295 8308";
+    }];
+  };
+  kentjames = {
+    email = "jameschristopherkent@gmail.com";
+    github = "kentjames";
+    githubId = 2029444;
+    name = "James Kent";
+  };
+  ketzacoatl = {
+    email = "ketzacoatl@protonmail.com";
+    github = "ketzacoatl";
+    githubId = 10122937;
+    name = "ketzacoatl";
+  };
+  kevincox = {
+    email = "kevincox@kevincox.ca";
+    github = "kevincox";
+    githubId = 494012;
+    name = "Kevin Cox";
+  };
+  kevingriffin = {
+    email = "me@kevin.jp";
+    github = "kevingriffin";
+    githubId = 209729;
+    name = "Kevin Griffin";
+  };
+  kfollesdal = {
+    email = "kfollesdal@gmail.com";
+    github = "kfollesdal";
+    githubId = 546087;
+    name = "Kristoffer K. Føllesdal";
+  };
+  kho-dialga = {
+    email = "ivandashenyou@gmail.com";
+    github = "kho-dialga";
+    githubId = 55767703;
+    name = "Iván Brito";
+  };
+  khumba = {
+    email = "bog@khumba.net";
+    github = "khumba";
+    githubId = 788813;
+    name = "Bryan Gardiner";
+  };
+  khushraj = {
+    email = "khushraj.rathod@gmail.com";
+    github = "KhushrajRathod";
+    githubId = 44947946;
+    name = "Khushraj Rathod";
+    keys = [{
+      longkeyid = "rsa2048/0xB77B2A40E7702F19";
+      fingerprint = "1988 3FD8 EA2E B4EC 0A93  1E22 B77B 2A40 E770 2F19";
+    }];
+  };
+  KibaFox = {
+    email = "kiba.fox@foxypossibilities.com";
+    github = "KibaFox";
+    githubId = 16481032;
+    name = "Kiba Fox";
+  };
+  kidd = {
+    email = "raimonster@gmail.com";
+    github = "kidd";
+    githubId = 25607;
+    name = "Raimon Grau";
+  };
+  kidonng = {
+    email = "hi@xuann.wang";
+    github = "kidonng";
+    githubId = 44045911;
+    name = "Kid";
+  };
+  kierdavis = {
+    email = "kierdavis@gmail.com";
+    github = "kierdavis";
+    githubId = 845652;
+    name = "Kier Davis";
+  };
+  killercup = {
+    email = "killercup@gmail.com";
+    github = "killercup";
+    githubId = 20063;
+    name = "Pascal Hertleif";
+  };
+  kiloreux = {
+    email = "kiloreux@gmail.com";
+    github = "kiloreux";
+    githubId = 6282557;
+    name = "Kiloreux Emperex";
+  };
+  kim0 = {
+    email = "email.ahmedkamal@googlemail.com";
+    github = "kim0";
+    githubId = 59667;
+    name = "Ahmed Kamal";
+  };
+  kimat = {
+    email = "mail@kimat.org";
+    github = "kimat";
+    githubId = 3081769;
+    name = "Kimat Boven";
+  };
+  kimburgess = {
+    email = "kim@acaprojects.com";
+    github = "kimburgess";
+    githubId = 843652;
+    name = "Kim Burgess";
+  };
+  kini = {
+    email = "keshav.kini@gmail.com";
+    github = "kini";
+    githubId = 691290;
+    name = "Keshav Kini";
+  };
+  kirelagin = {
+    email = "kirelagin@gmail.com";
+    github = "kirelagin";
+    githubId = 451835;
+    name = "Kirill Elagin";
+  };
+  kirikaza = {
+    email = "k@kirikaza.ru";
+    github = "kirikaza";
+    githubId = 804677;
+    name = "Kirill Kazakov";
+  };
+  kisonecat = {
+    email = "kisonecat@gmail.com";
+    github = "kisonecat";
+    githubId = 148352;
+    name = "Jim Fowler";
+  };
+  kiwi = {
+    email = "envy1988@gmail.com";
+    github = "Kiwi";
+    githubId = 35715;
+    name = "Robert Djubek";
+    keys = [{
+      longkeyid = "rsa4096/0x156C88A5B0A04B2A";
+      fingerprint = "8992 44FC D291 5CA2 0A97  802C 156C 88A5 B0A0 4B2A";
+    }];
+  };
+  kiyengar = {
+    email = "hello@kiyengar.net";
+    github = "karthikiyengar";
+    githubId = 8260207;
+    name = "Karthik Iyengar";
+  };
+  kkallio = {
+    email = "tierpluspluslists@gmail.com";
+    name = "Karn Kallio";
+  };
+  klntsky = {
+    email = "klntsky@gmail.com";
+    name = "Vladimir Kalnitsky";
+    github = "klntsky";
+    githubId = 18447310;
+  };
+  kloenk = {
+    email = "me@kloenk.de";
+    name = "Finn Behrens";
+    github = "kloenk";
+    githubId = 12898828;
+    keys = [{
+      longkeyid = "ed25519/0xB92445CFC9546F9D";
+      fingerprint = "6881 5A95 D715 D429 659B  48A4 B924 45CF C954 6F9D";
+    }];
+  };
+  kmcopper = {
+    email = "kmcopper@danwin1210.me";
+    name = "Kyle Copperfield";
+    github = "kmcopper";
+    githubId = 57132115;
+  };
+  kmeakin = {
+    email = "karlwfmeakin@gmail.com";
+    name = "Karl Meakin";
+    github = "Kmeakin";
+    githubId = 19665139;
+  };
+
+  kmein = {
+    email = "kieran.meinhardt@gmail.com";
+    name = "Kierán Meinhardt";
+    github = "kmein";
+    githubId = 10352507;
+  };
+  kmicklas = {
+    email = "maintainer@kmicklas.com";
+    name = "Ken Micklas";
+    github = "kmicklas";
+    githubId = 929096;
+  };
+  knairda = {
+    email = "adrian@kummerlaender.eu";
+    name = "Adrian Kummerlaender";
+    github = "KnairdA";
+    githubId = 498373;
+  };
+  knedlsepp = {
+    email = "josef.kemetmueller@gmail.com";
+    github = "knedlsepp";
+    githubId = 3287933;
+    name = "Josef Kemetmüller";
+  };
+  knl = {
+    email = "nikola@knezevic.co";
+    github = "knl";
+    githubId = 361496;
+    name = "Nikola Knežević";
+  };
+  kolaente = {
+    email = "k@knt.li";
+    github = "kolaente";
+    githubId = 13721712;
+    name = "Konrad Langenberg";
+  };
+  kolbycrouch = {
+    email = "kjc.devel@gmail.com";
+    github = "kolbycrouch";
+    githubId = 6346418;
+    name = "Kolby Crouch";
+  };
+  kolloch = {
+    email = "info@eigenvalue.net";
+    github = "kolloch";
+    githubId = 339354;
+    name = "Peter Kolloch";
+  };
+  konimex = {
+    email = "herdiansyah@netc.eu";
+    github = "konimex";
+    githubId = 15692230;
+    name = "Muhammad Herdiansyah";
+  };
+  koral = {
+    email = "koral@mailoo.org";
+    github = "k0ral";
+    githubId = 524268;
+    name = "Koral";
+  };
+  koslambrou = {
+    email = "koslambrou@gmail.com";
+    github = "koslambrou";
+    githubId = 2037002;
+    name = "Konstantinos";
+  };
+  kovirobi = {
+    email = "kovirobi@gmail.com";
+    github = "kovirobi";
+    githubId = 1903418;
+    name = "Kovacsics Robert";
+  };
+  kquick = {
+    email = "quick@sparq.org";
+    github = "kquick";
+    githubId = 787421;
+    name = "Kevin Quick";
+  };
+  kraem = {
+    email = "me@kraem.xyz";
+    github = "kraem";
+    githubId = 26622971;
+    name = "Ronnie Ebrin";
+  };
+  kragniz = {
+    email = "louis@kragniz.eu";
+    github = "kragniz";
+    githubId = 735008;
+    name = "Louis Taylor";
+  };
+  kranzes = {
+    email = "personal@ilanjoselevich.com";
+    github = "Kranzes";
+    githubId = 56614642;
+    name = "Ilan Joselevich";
+  };
+  krav = {
+    email = "kristoffer@microdisko.no";
+    github = "krav";
+    githubId = 4032;
+    name = "Kristoffer Thømt Ravneberg";
+  };
+  kritnich = {
+    email = "kritnich@kritni.ch";
+    github = "Kritnich";
+    githubId = 22116767;
+    name = "Kritnich";
+  };
+  kroell = {
+    email = "nixosmainter@makroell.de";
+    github = "rokk4";
+    githubId = 17659803;
+    name = "Matthias Axel Kröll";
+  };
+  kristian-brucaj = {
+    email = "kbrucaj@gmail.com";
+    github = "kristian-brucaj";
+    githubId = 8893110;
+    name = "Kristian Brucaj";
+  };
+  kristoff3r = {
+    email = "k.soeholm@gmail.com";
+    github = "kristoff3r";
+    githubId = 160317;
+    name = "Kristoffer Søholm";
+  };
+  ktf = {
+    email = "giulio.eulisse@cern.ch";
+    github = "ktf";
+    githubId = 10544;
+    name = "Giuluo Eulisse";
+  };
+  kthielen = {
+    email = "kthielen@gmail.com";
+    github = "kthielen";
+    githubId = 1409287;
+    name = "Kalani Thielen";
+  };
+  ktor = {
+    email = "kruszewsky@gmail.com";
+    github = "ktor";
+    githubId = 99639;
+    name = "Pawel Kruszewski";
+  };
+  ktosiek = {
+    email = "tomasz.kontusz@gmail.com";
+    github = "ktosiek";
+    githubId = 278013;
+    name = "Tomasz Kontusz";
+  };
+  kuznero = {
+    email = "roman@kuznero.com";
+    github = "kuznero";
+    githubId = 449813;
+    name = "Roman Kuznetsov";
+  };
+  kwohlfahrt = {
+    email = "kai.wohlfahrt@gmail.com";
+    github = "kwohlfahrt";
+    githubId = 2422454;
+    name = "Kai Wohlfahrt";
+  };
+  kyleondy = {
+    email = "kyle@ondy.org";
+    github = "kyleondy";
+    githubId = 1640900;
+    name = "Kyle Ondy";
+    keys = [{
+      longkeyid = "rsa4096/0xDB0E3C33491F91C9";
+      fingerprint = "3C79 9D26 057B 64E6 D907  B0AC DB0E 3C33 491F 91C9";
+    }];
+  };
+  kylesferrazza = {
+    name = "Kyle Sferrazza";
+    email = "kyle.sferrazza@gmail.com";
+
+    github = "kylesferrazza";
+    githubId = 6677292;
+
+    keys = [{
+      longkeyid = "rsa4096/81A1540948162372";
+      fingerprint = "5A9A 1C9B 2369 8049 3B48  CF5B 81A1 5409 4816 2372";
+    }];
+  };
+  l-as = {
+    email = "las@protonmail.ch";
+    github = "L-as";
+    githubId = 22075344;
+    keys = [{
+      longkeyid = "rsa2048/0xAC458A7D1087D025";
+      fingerprint = "A093 EA17 F450 D4D1 60A0  1194 AC45 8A7D 1087 D025";
+    }];
+    name = "Las Safin";
+  };
+  l3af = {
+    email = "L3afMeAlon3@gmail.com";
+    github = "L3afMe";
+    githubId = 72546287;
+    name = "L3af";
+  };
+  lach = {
+    email = "iam@lach.pw";
+    github = "CertainLach";
+    githubId = 6235312;
+    keys = [{
+      longkeyid = "rsa3072/40B5D6948143175F";
+      fingerprint = "323C 95B5 DBF7 2D74 8570  C0B7 40B5 D694 8143 175F";
+    }];
+    name = "Yaroslav Bolyukin";
+  };
+  laikq = {
+    email = "gwen@quasebarth.de";
+    github = "laikq";
+    githubId = 55911173;
+    name = "Gwendolyn Quasebarth";
+  };
+  larsr = {
+    email = "Lars.Rasmusson@gmail.com";
+    github = "larsr";
+    githubId = 182024;
+    name = "Lars Rasmusson";
+  };
+  lasandell = {
+    email = "lasandell@gmail.com";
+    github = "lasandell";
+    githubId = 2034420;
+    name = "Luke Sandell";
+  };
+  lambda-11235 = {
+    email = "taranlynn0@gmail.com";
+    github = "lambda-11235";
+    githubId = 16354815;
+    name = "Taran Lynn";
+  };
+  lassulus = {
+    email = "lassulus@gmail.com";
+    github = "Lassulus";
+    githubId = 621759;
+    name = "Lassulus";
+  };
+  lattfein = {
+    email = "lattfein@gmail.com";
+    # Their GitHub account was deleted.
+    #
+    # See: https://github.com/NixOS/nixpkgs/pull/69007 where this
+    # was added but is now owned by a ghost.
+    #
+    # Possibly the username lattfein (currently github ID 56827487) is
+    # owned by the same person, but we should confirm before adding
+    # the GitHub name or ID back.
+    # github = "lattfein";
+    name = "Koki Yasuno";
+  };
+  layus = {
+    email = "layus.on@gmail.com";
+    github = "layus";
+    githubId = 632767;
+    name = "Guillaume Maudoux";
+  };
+  lblasc = {
+    email = "lblasc@znode.net";
+    github = "lblasc";
+    githubId = 32152;
+    name = "Luka Blaskovic";
+  };
+  lbpdt = {
+    email = "nix@pdtpartners.com";
+    github = "lbpdt";
+    githubId = 45168934;
+    name = "Louis Blin";
+  };
+  lucc = {
+    email = "lucc+nix@posteo.de";
+    github = "lucc";
+    githubId = 1104419;
+    name = "Lucas Hoffmann";
+  };
+  ldelelis = {
+    email = "ldelelis@est.frba.utn.edu.ar";
+    github = "ldelelis";
+    githubId = 20250323;
+    name = "Lucio Delelis";
+  };
+  ldenefle = {
+    email = "ldenefle@gmail.com";
+    github = "ldenefle";
+    githubId = 20558127;
+    name = "Lucas Denefle";
+  };
+  ldesgoui = {
+    email = "ldesgoui@gmail.com";
+    github = "ldesgoui";
+    githubId = 2472678;
+    name = "Lucas Desgouilles";
+  };
+  league = {
+    email = "league@contrapunctus.net";
+    github = "league";
+    githubId = 50286;
+    name = "Christopher League";
+  };
+  leahneukirchen = {
+    email = "leah@vuxu.org";
+    github = "leahneukirchen";
+    githubId = 139;
+    name = "Leah Neukirchen";
+  };
+  lebastr = {
+    email = "lebastr@gmail.com";
+    github = "lebastr";
+    githubId = 887072;
+    name = "Alexander Lebedev";
+  };
+  ledif = {
+    email = "refuse@gmail.com";
+    github = "ledif";
+    githubId = 307744;
+    name = "Adam Fidel";
+  };
+  leemachin = {
+    email = "me@mrl.ee";
+    github = "leemachin";
+    githubId = 736291;
+    name = "Lee Machin";
+  };
+  leenaars = {
+    email = "ml.software@leenaa.rs";
+    github = "leenaars";
+    githubId = 4158274;
+    name = "Michiel Leenaars";
+  };
+  legendofmiracles = {
+    email = "legendofmiracles@protonmail.com";
+    github = "legendofmiracles";
+    githubId = 30902201;
+    name = "legendofmiracles";
+  };
+  lejonet = {
+    email = "daniel@kuehn.se";
+    github = "lejonet";
+    githubId = 567634;
+    name = "Daniel Kuehn";
+  };
+  leo60228 = {
+    email = "iakornfeld@gmail.com";
+    github = "leo60228";
+    githubId = 8355305;
+    name = "leo60228";
+  };
+  leonardoce = {
+    email = "leonardo.cecchi@gmail.com";
+    github = "leonardoce";
+    githubId = 1572058;
+    name = "Leonardo Cecchi";
+  };
+  leshainc = {
+    email = "leshainc@fomalhaut.me";
+    github = "LeshaInc";
+    githubId = 42153076;
+    name = "Alexey Nikashkin";
+  };
+  lesuisse = {
+    email = "thomas@gerbet.me";
+    github = "LeSuisse";
+    githubId = 737767;
+    name = "Thomas Gerbet";
+  };
+  lethalman = {
+    email = "lucabru@src.gnome.org";
+    github = "lethalman";
+    githubId = 480920;
+    name = "Luca Bruno";
+  };
+  leungbk = {
+    email = "leungbk@mailfence.com";
+    github = "leungbk";
+    githubId = 29217594;
+    name = "Brian Leung";
+  };
+  lewo = {
+    email = "lewo@abesis.fr";
+    github = "nlewo";
+    githubId = 3425311;
+    name = "Antoine Eiche";
+  };
+  lexuge = {
+    name = "Harry Ying";
+    email = "lexugeyky@outlook.com";
+    github = "LEXUGE";
+    githubId = 13804737;
+    keys = [{
+      longkeyid = "rsa4096/0xAE53B4C2E58EDD45";
+      fingerprint = "7FE2 113A A08B 695A C8B8  DDE6 AE53 B4C2 E58E DD45";
+    }];
+  };
+  lf- = {
+    email = "nix-maint@lfcode.ca";
+    github = "lf-";
+    githubId = 6652840;
+    name = "Jade";
+  };
+  lgcl = {
+    email = "dev@lgcl.de";
+    name = "Leon Vack";
+    github = "LogicalOverflow";
+    githubId = 5919957;
+  };
+  lheckemann = {
+    email = "git@sphalerite.org";
+    github = "lheckemann";
+    githubId = 341954;
+    name = "Linus Heckemann";
+  };
+  lhvwb = {
+    email = "nathaniel.baxter@gmail.com";
+    github = "nathanielbaxter";
+    githubId = 307589;
+    name = "Nathaniel Baxter";
+  };
+  liamdiprose = {
+    email = "liam@liamdiprose.com";
+    github = "liamdiprose";
+    githubId = 1769386;
+    name = "Liam Diprose";
+  };
+  liff = {
+    email = "liff@iki.fi";
+    github = "liff";
+    githubId = 124475;
+    name = "Olli Helenius";
+  };
+  lightbulbjim = {
+    email = "chris@killred.net";
+    github = "lightbulbjim";
+    githubId = 4312404;
+    name = "Chris Rendle-Short";
+  };
+  lightdiscord = {
+    email = "root@arnaud.sh";
+    github = "lightdiscord";
+    githubId = 24509182;
+    name = "Arnaud Pascal";
+  };
+  lihop = {
+    email = "nixos@leroy.geek.nz";
+    github = "lihop";
+    githubId = 3696783;
+    name = "Leroy Hopson";
+  };
+  lilyball = {
+    email = "lily@sb.org";
+    github = "lilyball";
+    githubId = 714;
+    name = "Lily Ballard";
+  };
+  limeytexan = {
+    email = "limeytexan@gmail.com";
+    github = "limeytexan";
+    githubId = 36448130;
+    name = "Michael Brantley";
+  };
+  linarcx = {
+    email = "linarcx@gmail.com";
+    github = "linarcx";
+    githubId = 10884422;
+    name = "Kaveh Ahangar";
+  };
+  linc01n = {
+    email = "git@lincoln.hk";
+    github = "linc01n";
+    githubId = 667272;
+    name = "Lincoln Lee";
+  };
+  linquize = {
+    email = "linquize@yahoo.com.hk";
+    github = "linquize";
+    githubId = 791115;
+    name = "Linquize";
+  };
+  linus = {
+    email = "linusarver@gmail.com";
+    github = "listx";
+    githubId = 725613;
+    name = "Linus Arver";
+  };
+  livnev = {
+    email = "lev@liv.nev.org.uk";
+    github = "livnev";
+    githubId = 3964494;
+    name = "Lev Livnev";
+    keys = [{
+      longkeyid = "rsa2048/0x68FF81E6A7850F49";
+      fingerprint = "74F5 E5CC 19D3 B5CB 608F  6124 68FF 81E6 A785 0F49";
+    }];
+  };
+  lourkeur = {
+    name = "Louis Bettens";
+    email = "louis@bettens.info";
+    github = "lourkeur";
+    githubId = 15657735;
+    keys = [{
+      longkeyid = "ed25519/0xDFE1D4A017337E2A";
+      fingerprint = "5B93 9CFA E8FC 4D8F E07A  3AEA DFE1 D4A0 1733 7E2A";
+    }];
+  };
+  luis = {
+    email = "luis.nixos@gmail.com";
+    github = "Luis-Hebendanz";
+    githubId = 22085373;
+    name = "Luis Hebendanz";
+  };
+  lionello = {
+    email = "lio@lunesu.com";
+    github = "lionello";
+    githubId = 591860;
+    name = "Lionello Lunesu";
+  };
+  lluchs = {
+    email = "lukas.werling@gmail.com";
+    github = "lluchs";
+    githubId = 516527;
+    name = "Lukas Werling";
+  };
+  lnl7 = {
+    email = "daiderd@gmail.com";
+    github = "lnl7";
+    githubId = 689294;
+    name = "Daiderd Jordan";
+  };
+  lo1tuma = {
+    email = "schreck.mathias@gmail.com";
+    github = "lo1tuma";
+    githubId = 169170;
+    name = "Mathias Schreck";
+  };
+  loewenheim = {
+    email = "loewenheim@mailbox.org";
+    github = "loewenheim";
+    githubId = 7622248;
+    name = "Sebastian Zivota";
+  };
+  locallycompact = {
+    email = "dan.firth@homotopic.tech";
+    github = "locallycompact";
+    githubId = 1267527;
+    name = "Daniel Firth";
+  };
+  lopsided98 = {
+    email = "benwolsieffer@gmail.com";
+    github = "lopsided98";
+    githubId = 5624721;
+    name = "Ben Wolsieffer";
+  };
+  loskutov = {
+    email = "ignat.loskutov@gmail.com";
+    github = "loskutov";
+    githubId = 1202012;
+    name = "Ignat Loskutov";
+  };
+  lostnet = {
+    email = "lost.networking@gmail.com";
+    github = "lostnet";
+    githubId = 1422781;
+    name = "Will Young";
+  };
+  louisdk1 = {
+    email = "louis@louis.dk";
+    github = "louisdk1";
+    githubId = 4969294;
+    name = "Louis Tim Larsen";
+  };
+  lovek323 = {
+    email = "jason@oconal.id.au";
+    github = "lovek323";
+    githubId = 265084;
+    name = "Jason O'Conal";
+  };
+  lovesegfault = {
+    email = "meurerbernardo@gmail.com";
+    github = "lovesegfault";
+    githubId = 7243783;
+    name = "Bernardo Meurer";
+    keys = [{
+      longkeyid = "rsa4096/0xF4C0D53B8D14C246";
+      fingerprint = "F193 7596 57D5 6DA4 CCD4  786B F4C0 D53B 8D14 C246";
+    }];
+  };
+  lowfatcomputing = {
+    email = "andreas.wagner@lowfatcomputing.org";
+    github = "lowfatcomputing";
+    githubId = 10626;
+    name = "Andreas Wagner";
+  };
+  lromor = {
+    email = "leonardo.romor@gmail.com";
+    github = "lromor";
+    githubId = 1597330;
+    name = "Leonardo Romor";
+  };
+  lrworth = {
+    email = "luke@worth.id.au";
+    name = "Luke Worth";
+  };
+  lschuermann = {
+    email = "leon.git@is.currently.online";
+    github = "lschuermann";
+    githubId = 5341193;
+    name = "Leon Schuermann";
+  };
+  lsix = {
+    email = "lsix@lancelotsix.com";
+    github = "lsix";
+    githubId = 724339;
+    name = "Lancelot SIX";
+  };
+  ltavard = {
+    email = "laure.tavard@univ-grenoble-alpes.fr";
+    github = "ltavard";
+    githubId = 8555953;
+    name = "Laure Tavard";
+  };
+  luc65r = {
+    email = "lucas@ransan.tk";
+    github = "luc65r";
+    githubId = 59375051;
+    name = "Lucas Ransan";
+  };
+  lucperkins = {
+    email = "lucperkins@gmail.com";
+    github = "lucperkins";
+    githubId = 1523104;
+    name = "Luc Perkins";
+  };
+  lucus16 = {
+    email = "lars.jellema@gmail.com";
+    github = "Lucus16";
+    githubId = 2487922;
+    name = "Lars Jellema";
+  };
+  ludo = {
+    email = "ludo@gnu.org";
+    github = "civodul";
+    githubId = 1168435;
+    name = "Ludovic Courtès";
+  };
+  lufia = {
+    email = "lufia@lufia.org";
+    github = "lufia";
+    githubId = 1784379;
+    name = "Kyohei Kadota";
+  };
+  Luflosi = {
+    name = "Luflosi";
+    email = "luflosi@luflosi.de";
+    github = "Luflosi";
+    githubId = 15217907;
+    keys = [{
+      longkeyid = "rsa4096/0x6F987CCF224D20B9";
+      fingerprint = "66D1 3048 2B5F 2069 81A6  6B83 6F98 7CCF 224D 20B9";
+    }];
+  };
+  luispedro = {
+    email = "luis@luispedro.org";
+    github = "luispedro";
+    githubId = 79334;
+    name = "Luis Pedro Coelho";
+  };
+  lukeadams = {
+    email = "luke.adams@belljar.io";
+    github = "lukeadams";
+    githubId = 3508077;
+    name = "Luke Adams";
+  };
+  lukebfox = {
+    email = "lbentley-fox1@sheffield.ac.uk";
+    github = "lukebfox";
+    githubId = 34683288;
+    name = "Luke Bentley-Fox";
+  };
+  lukegb = {
+    email = "nix@lukegb.com";
+    github = "lukegb";
+    githubId = 246745;
+    name = "Luke Granger-Brown";
+  };
+  lukego = {
+    email = "luke@snabb.co";
+    github = "lukego";
+    githubId = 13791;
+    name = "Luke Gorrie";
+  };
+  lumi = {
+    email = "lumi@pew.im";
+    github = "lumi-me-not";
+    githubId = 26020062;
+    name = "lumi";
+  };
+  lunik1 = {
+    email = "ch.nixpkgs@themaw.xyz";
+    github = "lunik1";
+    githubId = 13547699;
+    name = "Corin Hoad";
+    keys = [{
+      longkeyid = "rsa2048/0x6A37DF9483188492";
+      fingerprint = "BA3A 5886 AE6D 526E 20B4  57D6 6A37 DF94 8318 8492";
+    }];
+  };
+  luz = {
+    email = "luz666@daum.net";
+    github = "Luz";
+    githubId = 208297;
+    name = "Luz";
+  };
+  lw = {
+    email = "lw@fmap.me";
+    github = "lolwat97";
+    githubId = 2057309;
+    name = "Sergey Sofeychuk";
+  };
+  lxea = {
+    email = "nix@amk.ie";
+    github = "lxea";
+    githubId = 7910815;
+    name = "Alex McGrath";
+  };
+  lynty = {
+    email = "ltdong93+nix@gmail.com";
+    github = "lynty";
+    githubId = 39707188;
+    name = "Lynn Dong";
+  };
+  lyt = {
+    email = "wheatdoge@gmail.com";
+    name = "Tim Liou";
+  };
+  m1cr0man = {
+    email = "lucas+nix@m1cr0man.com";
+    github = "m1cr0man";
+    githubId = 3044438;
+    name = "Lucas Savva";
+  };
+  m3tti = {
+    email = "mathaeus.peter.sander@gmail.com";
+    name = "Mathaeus Sander";
+  };
+  ma27 = {
+    email = "maximilian@mbosch.me";
+    github = "ma27";
+    githubId = 6025220;
+    name = "Maximilian Bosch";
+  };
+  ma9e = {
+    email = "sean@lfo.team";
+    github = "furrycatherder";
+    githubId = 36235154;
+    name = "Sean Haugh";
+  };
+  maaslalani = {
+    email = "maaslalani0@gmail.com";
+    github = "maaslalani";
+    githubId = 42545625;
+    name = "Maas Lalani";
+  };
+  madjar = {
+    email = "georges.dubus@compiletoi.net";
+    github = "madjar";
+    githubId = 109141;
+    name = "Georges Dubus";
+  };
+  mafo = {
+    email = "Marc.Fontaine@gmx.de";
+    github = "MarcFontaine";
+    githubId = 1433367;
+    name = "Marc Fontaine";
+  };
+  magenbluten = {
+    email = "magenbluten@codemonkey.cc";
+    github = "magenbluten";
+    githubId = 1140462;
+    name = "magenbluten";
+  };
+  magnetophon = {
+    email = "bart@magnetophon.nl";
+    github = "magnetophon";
+    githubId = 7645711;
+    name = "Bart Brouns";
+  };
+  mahe = {
+    email = "matthias.mh.herrmann@gmail.com";
+    github = "2chilled";
+    githubId = 1238350;
+    name = "Matthias Herrmann";
+  };
+  majesticmullet = {
+    email = "hoccthomas@gmail.com.au";
+    github = "MajesticMullet";
+    githubId = 31056089;
+    name = "Tom Ho";
+  };
+  makefu = {
+    email = "makefu@syntax-fehler.de";
+    github = "makefu";
+    githubId = 115218;
+    name = "Felix Richter";
+  };
+  malo = {
+    email = "mbourgon@gmail.com";
+    github = "malob";
+    githubId = 2914269;
+    name = "Malo Bourgon";
+  };
+  malvo = {
+    email = "malte@malvo.org";
+    github = "malte-v";
+    githubId = 34393802;
+    name = "Malte Voos";
+  };
+  malbarbo = {
+    email = "malbarbo@gmail.com";
+    github = "malbarbo";
+    githubId = 1678126;
+    name = "Marco A L Barbosa";
+  };
+  malyn = {
+    email = "malyn@strangeGizmo.com";
+    github = "malyn";
+    githubId = 346094;
+    name = "Michael Alyn Miller";
+  };
+  manojkarthick = {
+    email = "smanojkarthick@gmail.com";
+    github = "manojkarthick";
+    githubId = 7802795;
+    name = "Manoj Karthick";
+  };
+  manveru = {
+    email = "m.fellinger@gmail.com";
+    github = "manveru";
+    githubId = 3507;
+    name = "Michael Fellinger";
+  };
+  maralorn = {
+    email = "malte.brandy@maralorn.de";
+    github = "maralorn";
+    githubId = 1651325;
+    name = "Malte Brandy";
+  };
+  marcweber = {
+    email = "marco-oweber@gmx.de";
+    github = "marcweber";
+    githubId = 34086;
+    name = "Marc Weber";
+  };
+  marcus7070 = {
+    email = "marcus@geosol.com.au";
+    github = "marcus7070";
+    githubId = 50230945;
+    name = "Marcus Boyd";
+  };
+  marenz = {
+    email = "marenz@arkom.men";
+    github = "marenz2569";
+    githubId = 12773269;
+    name = "Markus Schmidl";
+  };
+  markus1189 = {
+    email = "markus1189@gmail.com";
+    github = "markus1189";
+    githubId = 591567;
+    name = "Markus Hauck";
+  };
+  markuskowa = {
+    email = "markus.kowalewski@gmail.com";
+    github = "markuskowa";
+    githubId = 26470037;
+    name = "Markus Kowalewski";
+  };
+  markWot = {
+    email = "markus@wotringer.de";
+    name = "Markus Wotringer";
+  };
+  marijanp = {
+    name = "Marijan Petričević";
+    email = "marijan.petricevic94@gmail.com";
+    github = "marijanp";
+    githubId = 13599169;
+  };
+  marius851000 = {
+    email = "mariusdavid@laposte.net";
+    name = "Marius David";
+    github = "marius851000";
+    githubId = 22586596;
+  };
+  marsam = {
+    email = "marsam@users.noreply.github.com";
+    github = "marsam";
+    githubId = 65531;
+    name = "Mario Rodas";
+  };
+  martijnvermaat = {
+    email = "martijn@vermaat.name";
+    github = "martijnvermaat";
+    githubId = 623509;
+    name = "Martijn Vermaat";
+  };
+  martingms = {
+    email = "martin@mg.am";
+    github = "martingms";
+    githubId = 458783;
+    name = "Martin Gammelsæter";
+  };
+  marzipankaiser = {
+    email = "nixos@gaisseml.de";
+    github = "marzipankaiser";
+    githubId = 2551444;
+    name = "Marcial Gaißert";
+    keys = [{
+      longkeyid = "rsa2048/0xB629036BE399EEE9";
+      fingerprint = "B573 5118 0375 A872 FBBF  7770 B629 036B E399 EEE9";
+    }];
+  };
+  masipcat = {
+    email = "jordi@masip.cat";
+    github = "masipcat";
+    githubId = 775189;
+    name = "Jordi Masip";
+  };
+  matejc = {
+    email = "cotman.matej@gmail.com";
+    github = "matejc";
+    githubId = 854770;
+    name = "Matej Cotman";
+  };
+  mathnerd314 = {
+    email = "mathnerd314.gph+hs@gmail.com";
+    github = "mathnerd314";
+    githubId = 322214;
+    name = "Mathnerd314";
+  };
+  matklad = {
+    email = "aleksey.kladov@gmail.com";
+    github = "matklad";
+    githubId = 1711539;
+    name = "matklad";
+  };
+  matt-snider = {
+    email = "matt.snider@protonmail.com";
+    github = "matt-snider";
+    githubId = 11810057;
+    name = "Matt Snider";
+  };
+  mattchrist = {
+    email = "nixpkgs-matt@christ.systems";
+    github = "mattchrist";
+    githubId = 952712;
+    name = "Matt Christ";
+  };
+  matthewbauer = {
+    email = "mjbauer95@gmail.com";
+    github = "matthewbauer";
+    githubId = 19036;
+    name = "Matthew Bauer";
+  };
+  matthiasbeyer = {
+    email = "mail@beyermatthias.de";
+    github = "matthiasbeyer";
+    githubId = 427866;
+    name = "Matthias Beyer";
+  };
+  matthuszagh = {
+    email = "huszaghmatt@gmail.com";
+    github = "matthuszagh";
+    githubId = 7377393;
+    name = "Matt Huszagh";
+  };
+  matti-kariluoma = {
+    email = "matti@kariluo.ma";
+    github = "matti-kariluoma";
+    githubId = 279868;
+    name = "Matti Kariluoma";
+  };
+  maurer = {
+    email = "matthew.r.maurer+nix@gmail.com";
+    github = "maurer";
+    githubId = 136037;
+    name = "Matthew Maurer";
+  };
+  mausch = {
+    email = "mauricioscheffer@gmail.com";
+    github = "mausch";
+    githubId = 95194;
+    name = "Mauricio Scheffer";
+  };
+  maxdamantus = {
+    email = "maxdamantus@gmail.com";
+    github = "Maxdamantus";
+    githubId = 502805;
+    name = "Max Zerzouri";
+  };
+  maxeaubrey = {
+    email = "maxeaubrey@gmail.com";
+    github = "maxeaubrey";
+    githubId = 35892750;
+    name = "Maxine Aubrey";
+  };
+  maxhbr = {
+    email = "nixos@maxhbr.dev";
+    github = "maxhbr";
+    githubId = 1187050;
+    name = "Maximilian Huber";
+  };
+  maxxk = {
+    email = "maxim.krivchikov@gmail.com";
+    github = "maxxk";
+    githubId = 1191859;
+    name = "Maxim Krivchikov";
+  };
+  MayNiklas = {
+    email = "info@niklas-steffen.de";
+    github = "MayNiklas";
+    githubId = 44636701;
+    name = "Niklas Steffen";
+  };
+  mazurel = {
+    email = "mateusz.mazur@yahoo.com";
+    github = "Mazurel";
+    githubId = 22836301;
+    name = "Mateusz Mazur";
+  };
+  mbaeten = {
+    email = "mbaeten@users.noreply.github.com";
+    github = "mbaeten";
+    githubId = 2649304;
+    name = "M. Baeten";
+  };
+  mbaillie = {
+    email = "martin@baillie.id";
+    github = "martinbaillie";
+    githubId = 613740;
+    name = "Martin Baillie";
+  };
+  mbbx6spp = {
+    email = "me@susanpotter.net";
+    github = "mbbx6spp";
+    githubId = 564;
+    name = "Susan Potter";
+  };
+  mbe = {
+    email = "brandonedens@gmail.com";
+    github = "brandonedens";
+    githubId = 396449;
+    name = "Brandon Edens";
+  };
+  mbode = {
+    email = "maxbode@gmail.com";
+    github = "mbode";
+    githubId = 9051309;
+    name = "Maximilian Bode";
+  };
+  mboes = {
+    email = "mboes@tweag.net";
+    github = "mboes";
+    githubId = 51356;
+    name = "Mathieu Boespflug";
+  };
+  mbrgm = {
+    email = "marius@yeai.de";
+    github = "mbrgm";
+    githubId = 2971615;
+    name = "Marius Bergmann";
+  };
+  mcaju = {
+    email = "cajum.bugs@yandex.com";
+    github = "CajuM";
+    githubId = 10420834;
+    name = "Mihai-Drosi Caju";
+  };
+  mcbeth = {
+    email = "mcbeth@broggs.org";
+    github = "mcbeth";
+    githubId = 683809;
+    name = "Jeffrey Brent McBeth";
+  };
+  mcmtroffaes = {
+    email = "matthias.troffaes@gmail.com";
+    github = "mcmtroffaes";
+    githubId = 158568;
+    name = "Matthias C. M. Troffaes";
+  };
+  McSinyx = {
+    email = "mcsinyx@disroot.org";
+    github = "McSinyx";
+    githubId = 13689192;
+    name = "Nguyễn Gia Phong";
+    keys = [{
+      longkeyid = "rsa3072/0x27148B2C06A2224B";
+      fingerprint = "E90E 11B8 0493 343B 6132  E394 2714 8B2C 06A2 224B";
+    }];
+  };
+  mcwitt = {
+    email = "mcwitt@gmail.com";
+    github = "mcwitt";
+    githubId = 319411;
+    name = "Matt Wittmann";
+  };
+  mdaiter = {
+    email = "mdaiter8121@gmail.com";
+    github = "mdaiter";
+    githubId = 1377571;
+    name = "Matthew S. Daiter";
+  };
+  mdevlamynck = {
+    email = "matthias.devlamynck@mailoo.org";
+    github = "mdevlamynck";
+    githubId = 4378377;
+    name = "Matthias Devlamynck";
+  };
+  mdlayher = {
+    email = "mdlayher@gmail.com";
+    github = "mdlayher";
+    githubId = 1926905;
+    name = "Matt Layher";
+    keys = [{
+      longkeyid = "rsa2048/0x77BFE531397EDE94";
+      fingerprint = "D709 03C8 0BE9 ACDC 14F0  3BFB 77BF E531 397E DE94";
+    }];
+  };
+  mdsp = {
+    github = "Mdsp9070";
+    githubId = 44469426;
+    name = "Matheus de Souza Pessanha";
+    email = "matheus_pessanha2001@outlook.com";
+    keys = [{
+      longkeyid = "rsa4096/6DFD656220A3B849";
+      fingerprint = "2D4D 488F 17FB FF75 664E  C016 6DFD 6562 20A3 B849";
+    }];
+  };
+  meatcar = {
+    email = "nixpkgs@denys.me";
+    github = "meatcar";
+    githubId = 191622;
+    name = "Denys Pavlov";
+  };
+  meditans = {
+    email = "meditans@gmail.com";
+    github = "meditans";
+    githubId = 4641445;
+    name = "Carlo Nucera";
+  };
+  megheaiulian = {
+    email = "iulian.meghea@gmail.com";
+    github = "megheaiulian";
+    githubId = 1788114;
+    name = "Meghea Iulian";
+  };
+  mehandes = {
+    email = "niewskici@gmail.com";
+    github = "mehandes";
+    githubId = 32581276;
+    name = "Matt Deming";
+  };
+  meisternu = {
+    email = "meister@krutt.org";
+    github = "meisternu";
+    githubId = 8263431;
+    name = "Matt Miemiec";
+  };
+  melchips = {
+    email = "truphemus.francois@gmail.com";
+    github = "melchips";
+    githubId = 365721;
+    name = "Francois Truphemus";
+  };
+  melsigl = {
+    email = "melanie.bianca.sigl@gmail.com";
+    github = "melsigl";
+    githubId = 15093162;
+    name = "Melanie B. Sigl";
+  };
+  melkor333 = {
+    email = "samuel@ton-kunst.ch";
+    github = "melkor333";
+    githubId = 6412377;
+    name = "Samuel Ruprecht";
+  };
+  metabar = {
+    email = "softs@metabarcoding.org";
+    name = "Celine Mercier";
+  };
+  kira-bruneau = {
+    email = "kira.bruneau@pm.me";
+    name = "Kira Bruneau";
+    github = "kira-bruneau";
+    githubId = 382041;
+  };
+  meutraa = {
+    email = "paul+nixpkgs@lost.host";
+    name = "Paul Meredith";
+    github = "meutraa";
+    githubId = 68550871;
+  };
+  mephistophiles = {
+    email = "mussitantesmortem@gmail.com";
+    name = "Maxim Zhukov";
+    github = "Mephistophiles";
+    githubId = 4850908;
+  };
+  mfossen = {
+    email = "msfossen@gmail.com";
+    github = "mfossen";
+    githubId = 3300322;
+    name = "Mitchell Fossen";
+  };
+  mgdelacroix = {
+    email = "mgdelacroix@gmail.com";
+    github = "mgdelacroix";
+    githubId = 223323;
+    name = "Miguel de la Cruz";
+  };
+  mgdm = {
+    email = "michael@mgdm.net";
+    github = "mgdm";
+    githubId = 71893;
+    name = "Michael Maclean";
+  };
+  mgregoire = {
+    email = "gregoire@martinache.net";
+    github = "M-Gregoire";
+    githubId = 9469313;
+    name = "Gregoire Martinache";
+  };
+  mgttlinger = {
+    email = "megoettlinger@gmail.com";
+    github = "mgttlinger";
+    githubId = 5120487;
+    name = "Merlin Göttlinger";
+  };
+  mguentner = {
+    email = "code@klandest.in";
+    github = "mguentner";
+    githubId = 668926;
+    name = "Maximilian Güntner";
+  };
+  mhaselsteiner = {
+    email = "magdalena.haselsteiner@gmx.at";
+    github = "mhaselsteiner";
+    githubId = 20536514;
+    name = "Magdalena Haselsteiner";
+  };
+  mic92 = {
+    email = "joerg@thalheim.io";
+    github = "mic92";
+    githubId = 96200;
+    name = "Jörg Thalheim";
+    keys = [{
+      # compare with https://keybase.io/Mic92
+      longkeyid = "rsa4096/0x003F2096411B5F92";
+      fingerprint = "3DEE 1C55 6E1C 3DC5 54F5  875A 003F 2096 411B 5F92";
+    }];
+  };
+  michaelpj = {
+    email = "michaelpj@gmail.com";
+    github = "michaelpj";
+    githubId = 1699466;
+    name = "Michael Peyton Jones";
+  };
+  michalrus = {
+    email = "m@michalrus.com";
+    github = "michalrus";
+    githubId = 4366292;
+    name = "Michal Rus";
+  };
+  michelk = {
+    email = "michel@kuhlmanns.info";
+    github = "michelk";
+    githubId = 1404919;
+    name = "Michel Kuhlmann";
+  };
+  michojel = {
+    email = "mic.liamg@gmail.com";
+    github = "michojel";
+    githubId = 21156022;
+    name = "Michal Minář";
+  };
+  mickours = {
+    email = "mickours@gmail.com<";
+    github = "mickours";
+    githubId = 837312;
+    name = "Michael Mercier";
+  };
+  midchildan = {
+    email = "git@midchildan.org";
+    github = "midchildan";
+    githubId = 7343721;
+    name = "midchildan";
+    keys = [{
+      longkeyid = "rsa4096/0x186A1EDAC5C63F83";
+      fingerprint = "FEF0 AE2D 5449 3482 5F06  40AA 186A 1EDA C5C6 3F83";
+    }];
+  };
+  mikefaille = {
+    email = "michael@faille.io";
+    github = "mikefaille";
+    githubId = 978196;
+    name = "Michaël Faille";
+  };
+  mikoim = {
+    email = "ek@esh.ink";
+    github = "mikoim";
+    githubId = 3958340;
+    name = "Eshin Kunishima";
+  };
+  mikesperber = {
+    email = "sperber@deinprogramm.de";
+    github = "mikesperber";
+    githubId = 1387206;
+    name = "Mike Sperber";
+  };
+  mikroskeem = {
+    email = "mikroskeem@mikroskeem.eu";
+    github = "mikroskeem";
+    githubId = 3490861;
+    name = "Mark Vainomaa";
+    keys = [{
+      longkeyid = "rsa4096/0xDA015B05B5A11B22";
+      fingerprint = "DB43 2895 CF68 F0CE D4B7  EF60 DA01 5B05 B5A1 1B22";
+    }];
+  };
+  milesbreslin = {
+    email = "milesbreslin@gmail.com";
+    github = "milesbreslin";
+    githubId = 38543128;
+    name = "Miles Breslin";
+  };
+  millerjason = {
+    email = "mailings-github@millerjason.com";
+    github = "millerjason";
+    githubId = 7610974;
+    name = "Jason Miller";
+  };
+  miltador = {
+    email = "miltador@yandex.ua";
+    name = "Vasiliy Solovey";
+  };
+  mimame = {
+    email = "miguel.madrid.mencia@gmail.com";
+    github = "mimame";
+    githubId = 3269878;
+    name = "Miguel Madrid Mencía";
+  };
+  mindavi = {
+    email = "rol3517@gmail.com";
+    github = "Mindavi";
+    githubId = 9799623;
+    name = "Rick van Schijndel";
+  };
+  minijackson = {
+    email = "minijackson@riseup.net";
+    github = "minijackson";
+    githubId = 1200507;
+    name = "Rémi Nicole";
+    keys = [{
+      longkeyid = "rsa2048/0xFEA888C9F5D64F62";
+      fingerprint = "3196 83D3 9A1B 4DE1 3DC2  51FD FEA8 88C9 F5D6 4F62";
+    }];
+  };
+  mir06 = {
+    email = "armin.leuprecht@uni-graz.at";
+    github = "mir06";
+    githubId = 8479244;
+    name = "Armin Leuprecht";
+  };
+  mirdhyn = {
+    email = "mirdhyn@gmail.com";
+    github = "mirdhyn";
+    githubId = 149558;
+    name = "Merlin Gaillard";
+  };
+  mirrexagon = {
+    email = "mirrexagon@mirrexagon.com";
+    github = "mirrexagon";
+    githubId = 1776903;
+    name = "Andrew Abbott";
+  };
+  mitchmindtree = {
+    email = "mail@mitchellnordine.com";
+    github = "mitchmindtree";
+    githubId = 4587373;
+    name = "Mitchell Nordine";
+  };
+  mjanczyk = {
+    email = "m@dragonvr.pl";
+    github = "mjanczyk";
+    githubId = 1001112;
+    name = "Marcin Janczyk";
+  };
+  mjlbach = {
+    email = "m.j.lbach@gmail.com";
+    github = "mjlbach";
+    githubId = 13316262;
+    name = "Michael Lingelbach";
+  };
+  mjp = {
+    email = "mike@mythik.co.uk";
+    github = "MikePlayle";
+    githubId = 16974598;
+    name = "Mike Playle";
+  };
+  mkaito = {
+    email = "chris@mkaito.net";
+    github = "mkaito";
+    githubId = 20434;
+    name = "Christian Höppner";
+  };
+  mkazulak = {
+    email = "kazulakm@gmail.com";
+    github = "mulderr";
+    githubId = 5698461;
+    name = "Maciej Kazulak";
+  };
+  mkf = {
+    email = "m@mikf.pl";
+    github = "mkf";
+    githubId = 7753506;
+    name = "Michał Krzysztof Feiler";
+    keys = [{
+      longkeyid = "rsa4096/0xE35C2D7C2C6AC724";
+      fingerprint = "1E36 9940 CC7E 01C4 CFE8  F20A E35C 2D7C 2C6A C724";
+    }];
+  };
+  mkg = {
+    email = "mkg@vt.edu";
+    github = "mkgvt";
+    githubId = 22477669;
+    name = "Mark K Gardner";
+  };
+  mkg20001 = {
+    email = "mkg20001+nix@gmail.com";
+    github = "mkg20001";
+    githubId = 7735145;
+    name = "Maciej Krüger";
+    keys = [{
+      longkeyid = "rsa4096/0x0D948CE19CF49C5F";
+      fingerprint = "E90C BA34 55B3 6236 740C  038F 0D94 8CE1 9CF4 9C5F";
+    }];
+  };
+  mlieberman85 = {
+    email = "mlieberman85@gmail.com";
+    github = "mlieberman85";
+    githubId = 622577;
+    name = "Michael Lieberman";
+  };
+  mlvzk = {
+    name = "mlvzk";
+    email = "mlvzk@users.noreply.github.com";
+    github = "mlvzk";
+    githubId = 44906333;
+  };
+  mmahut = {
+    email = "marek.mahut@gmail.com";
+    github = "mmahut";
+    githubId = 104795;
+    name = "Marek Mahut";
+  };
+  mmai = {
+    email = "henri.bourcereau@gmail.com";
+    github = "mmai";
+    githubId = 117842;
+    name = "Henri Bourcereau";
+  };
+  mmesch = {
+    email = "mmesch@noreply.github.com";
+    github = "mmesch";
+    githubId = 2597803;
+    name = "Matthias Meschede";
+  };
+  mmilata = {
+    email = "martin@martinmilata.cz";
+    github = "mmilata";
+    githubId = 85857;
+    name = "Martin Milata";
+  };
+  mmlb = {
+    email = "manny@peekaboo.mmlb.icu";
+    github = "mmlb";
+    githubId = 708570;
+    name = "Manuel Mendez";
+  };
+  mnacamura = {
+    email = "m.nacamura@gmail.com";
+    github = "mnacamura";
+    githubId = 45770;
+    name = "Mitsuhiro Nakamura";
+  };
+  moaxcp = {
+    email = "moaxcp@gmail.com";
+    github = "moaxcp";
+    githubId = 7831184;
+    name = "John Mercier";
+  };
+  modulistic = {
+    email = "modulistic@gmail.com";
+    github = "modulistic";
+    githubId = 1902456;
+    name = "Pablo Costa";
+  };
+  mog = {
+    email = "mog-lists@rldn.net";
+    github = "mogorman";
+    githubId = 64710;
+    name = "Matthew O'Gorman";
+  };
+  Mogria = {
+    email = "m0gr14@gmail.com";
+    github = "mogria";
+    githubId = 754512;
+    name = "Mogria";
+  };
+  mohe2015 = {
+    name = "Moritz Hedtke";
+    email = "Moritz.Hedtke@t-online.de";
+    github = "mohe2015";
+    githubId = 13287984;
+    keys = [{
+      longkeyid = "rsa4096/0x6794D45A488C2EDE";
+      fingerprint = "1248 D3E1 1D11 4A85 75C9  8934 6794 D45A 488C 2EDE";
+    }];
+  };
+  monsieurp = {
+    email = "monsieurp@gentoo.org";
+    github = "monsieurp";
+    githubId = 350116;
+    name = "Patrice Clement";
+  };
+  montag451 = {
+    email = "montag451@laposte.net";
+    github = "montag451";
+    githubId = 249317;
+    name = "montag451";
+  };
+  moosingin3space = {
+    email = "moosingin3space@gmail.com";
+    github = "moosingin3space";
+    githubId = 830082;
+    name = "Nathan Moos";
+  };
+  moredread = {
+    email = "code@apb.name";
+    github = "moredread";
+    githubId = 100848;
+    name = "André-Patrick Bubel";
+    keys = [{
+      longkeyid = "rsa8192/0x118CE7C424B45728";
+      fingerprint = "4412 38AD CAD3 228D 876C  5455 118C E7C4 24B4 5728";
+    }];
+  };
+  moretea = {
+    email = "maarten@moretea.nl";
+    github = "moretea";
+    githubId = 99988;
+    name = "Maarten Hoogendoorn";
+  };
+  MostAwesomeDude = {
+    email = "cds@corbinsimpson.com";
+    github = "MostAwesomeDude";
+    githubId = 118035;
+    name = "Corbin Simpson";
+  };
+  mothsart = {
+    email = "jerem.ferry@gmail.com";
+    github = "mothsart";
+    githubId = 10601196;
+    name = "Jérémie Ferry";
+  };
+  mounium = {
+    email = "muoniurn@gmail.com";
+    github = "mounium";
+    githubId = 20026143;
+    name = "Katona László";
+  };
+  MP2E = {
+    email = "MP2E@archlinux.us";
+    github = "MP2E";
+    githubId = 167708;
+    name = "Cray Elliott";
+  };
+  mpcsh = {
+    email = "m@mpc.sh";
+    github = "mpcsh";
+    githubId = 2894019;
+    name = "Mark Cohen";
+  };
+  mpickering = {
+    email = "matthewtpickering@gmail.com";
+    github = "mpickering";
+    githubId = 1216657;
+    name = "Matthew Pickering";
+  };
+  mpoquet = {
+    email = "millian.poquet@gmail.com";
+    github = "mpoquet";
+    githubId = 3502831;
+    name = "Millian Poquet";
+  };
+  mpscholten = {
+    email = "marc@mpscholten.de";
+    github = "mpscholten";
+    githubId = 2072185;
+    name = "Marc Scholten";
+  };
+  mpsyco = {
+    email = "fr.st-amour@gmail.com";
+    github = "fstamour";
+    githubId = 2881922;
+    name = "Francis St-Amour";
+  };
+  mtrsk = {
+    email = "marcos.schonfinkel@protonmail.com";
+    github = "mtrsk";
+    githubId = 16356569;
+    name = "Marcos Benevides";
+  };
+  mredaelli = {
+    email = "massimo@typish.io";
+    github = "mredaelli";
+    githubId = 3073833;
+    name = "Massimo Redaelli";
+  };
+  mrkkrp = {
+    email = "markkarpov92@gmail.com";
+    github = "mrkkrp";
+    githubId = 8165792;
+    name = "Mark Karpov";
+  };
+  mrmebelman = {
+    email = "burzakovskij@protonmail.com";
+    github = "MrMebelMan";
+    githubId = 15896005;
+    name = "Vladyslav Burzakovskyy";
+  };
+  mrVanDalo = {
+    email = "contact@ingolf-wagner.de";
+    github = "mrVanDalo";
+    githubId = 839693;
+    name = "Ingolf Wanger";
+  };
+  msackman = {
+    email = "matthew@wellquite.org";
+    name = "Matthew Sackman";
+  };
+  mschneider = {
+    email = "markus.schneider.sic+nix@gmail.com";
+    name = "Markus Schneider";
+  };
+  mschristiansen = {
+    email = "mikkel@rheosystems.com";
+    github = "mschristiansen";
+    githubId = 437005;
+    name = "Mikkel Christiansen";
+  };
+  mschuwalow = {
+    github = "mschuwalow";
+    githubId = 16665913;
+    name = "Maxim Schuwalow";
+    email = "maxim.schuwalow@gmail.com";
+  };
+  msiedlarek = {
+    email = "mikolaj@siedlarek.pl";
+    github = "msiedlarek";
+    githubId = 133448;
+    name = "Mikołaj Siedlarek";
+  };
+  msm = {
+    email = "msm@tailcall.net";
+    github = "msm-code";
+    githubId = 7026881;
+    name = "Jarosław Jedynak";
+  };
+  mstarzyk = {
+    email = "mstarzyk@gmail.com";
+    github = "mstarzyk";
+    githubId = 111304;
+    name = "Maciek Starzyk";
+  };
+  msteen = {
+    email = "emailmatthijs@gmail.com";
+    github = "msteen";
+    githubId = 788953;
+    name = "Matthijs Steen";
+  };
+  mstrangfeld = {
+    email = "marvin@strangfeld.io";
+    github = "mstrangfeld";
+    githubId = 36842980;
+    name = "Marvin Strangfeld";
+  };
+  mt-caret = {
+    email = "mtakeda.enigsol@gmail.com";
+    github = "mt-caret";
+    githubId = 4996739;
+    name = "Masayuki Takeda";
+  };
+  MtP = {
+    email = "marko.nixos@poikonen.de";
+    github = "MtP76";
+    githubId = 2176611;
+    name = "Marko Poikonen";
+  };
+  mtreca = {
+    email = "maxime.treca@gmail.com";
+    github = "mtreca";
+    githubId = 16440823;
+    name = "Maxime Tréca";
+  };
+  mtreskin = {
+    email = "zerthurd@gmail.com";
+    github = "Zert";
+    githubId = 39034;
+    name = "Max Treskin";
+  };
+  mudri = {
+    email = "lamudri@gmail.com";
+    github = "laMudri";
+    githubId = 5139265;
+    name = "James Wood";
+  };
+  mudrii = {
+    email = "mudreac@gmail.com";
+    github = "mudrii";
+    githubId = 220262;
+    name = "Ion Mudreac";
+  };
+  muflax = {
+    email = "mail@muflax.com";
+    github = "muflax";
+    githubId = 69918;
+    name = "Stefan Dorn";
+  };
+  multun = {
+    email = "victor.collod@epita.fr";
+    github = "multun";
+    githubId = 5047140;
+    name = "Victor Collod";
+  };
+  musfay = {
+    email = "musfay@protonmail.com";
+    github = "musfay";
+    githubId = 33374965;
+    name = "Mustafa Çalışkan";
+  };
+  mupdt = {
+    email = "nix@pdtpartners.com";
+    github = "mupdt";
+    githubId = 25388474;
+    name = "Matej Urbas";
+  };
+  mvnetbiz = {
+    email = "mvnetbiz@gmail.com";
+    github = "mvnetbiz";
+    githubId = 6455574;
+    name = "Matt Votava";
+  };
+  maxwilson = {
+    email = "nixpkgs@maxwilson.dev";
+    github = "mwilsoncoding";
+    githubId = 43796009;
+    name = "Max Wilson";
+  };
+  myrl = {
+    email = "myrl.0xf@gmail.com";
+    github = "myrl";
+    githubId = 9636071;
+    name = "Myrl Hex";
+  };
+  nadrieril = {
+    email = "nadrieril@gmail.com";
+    github = "nadrieril";
+    githubId = 6783654;
+    name = "Nadrieril Feneanar";
+  };
+  nalbyuites = {
+    email = "ashijit007@gmail.com";
+    github = "nalbyuites";
+    githubId = 1009523;
+    name = "Ashijit Pramanik";
+  };
+  namore = {
+    email = "namor@hemio.de";
+    github = "namore";
+    githubId = 1222539;
+    name = "Roman Naumann";
+  };
+  nasirhm = {
+    email = "nasirhussainm14@gmail.com";
+    github = "nasirhm";
+    githubId = 35005234;
+    name = "Nasir Hussain";
+    keys = [{
+      longkeyid = "rsa4096/0xD8126E559CE7C35D";
+      fingerprint = "7A10 AB8E 0BEC 566B 090C  9BE3 D812 6E55 9CE7 C35D";
+    }];
+  };
+  Nate-Devv = {
+    email = "natedevv@gmail.com";
+    name = "Nathan Moore";
+  };
+  nathan-gs = {
+    email = "nathan@nathan.gs";
+    github = "nathan-gs";
+    githubId = 330943;
+    name = "Nathan Bijnens";
+  };
+  nathyong = {
+    email = "nathyong@noreply.github.com";
+    github = "nathyong";
+    githubId = 818502;
+    name = "Nathan Yong";
+  };
+  natto1784 = {
+    email = "natto@weirdnatto.in";
+    github = "natto1784";
+    githubId = 56316606;
+    name = "Amneesh Singh";
+  };
+  nbren12 = {
+    email = "nbren12@gmail.com";
+    github = "nbren12";
+    githubId = 1386642;
+    name = "Noah Brenowitz";
+  };
+  ncfavier = {
+    email = "n@monade.li";
+    github = "ncfavier";
+    githubId = 4323933;
+    name = "Naïm Favier";
+    keys = [{
+      longkeyid = "rsa2048/0x49B07322580B7EE2";
+      fingerprint = "51A0 705E 7DD2 3CBC 5EAA  B43E 49B0 7322 580B 7EE2";
+    }];
+  };
+  nckx = {
+    email = "github@tobias.gr";
+    github = "nckx";
+    githubId = 364510;
+    name = "Tobias Geerinckx-Rice";
+  };
+  ndl = {
+    email = "ndl@endl.ch";
+    github = "ndl";
+    githubId = 137805;
+    name = "Alexander Tsvyashchenko";
+  };
+  neeasade = {
+    email = "nathanisom27@gmail.com";
+    github = "neeasade";
+    githubId = 3747396;
+    name = "Nathan Isom";
+  };
+  neonfuz = {
+    email = "neonfuz@gmail.com";
+    github = "neonfuz";
+    githubId = 2590830;
+    name = "Sage Raflik";
+  };
+  nequissimus = {
+    email = "tim@nequissimus.com";
+    github = "nequissimus";
+    githubId = 628342;
+    name = "Tim Steinbach";
+  };
+  nessdoor = {
+    name = "Tomas Antonio Lopez";
+    email = "entropy.overseer@protonmail.com";
+    githubId = 25993494;
+  };
+  netcrns = {
+    email = "jason.wing@gmx.de";
+    github = "netcrns";
+    githubId = 34162313;
+    name = "Jason Wing";
+  };
+  netixx = {
+    email = "dev.espinetfrancois@gmail.com";
+    github = "netixx";
+    githubId = 1488603;
+    name = "François Espinet";
+  };
+  neverbehave = {
+    email = "i@never.pet";
+    github = "NeverBehave";
+    githubId = 17120571;
+    name = "Xinhao Luo";
+  };
+  newam = {
+    email = "alexmgit@protonmail.com";
+    github = "newAM";
+    githubId = 7845120;
+    name = "Alex M.";
+  };
+  nikitavoloboev = {
+    email = "nikita.voloboev@gmail.com";
+    github = "nikitavoloboev";
+    githubId = 6391776;
+    name = "Nikita Voloboev";
+  };
+  nfjinjing = {
+    email = "nfjinjing@gmail.com";
+    name = "Jinjing Wang";
+  };
+  nh2 = {
+    email = "mail@nh2.me";
+    github = "nh2";
+    githubId = 399535;
+    name = "Niklas Hambüchen";
+  };
+  nhooyr = {
+    email = "anmol@aubble.com";
+    github = "nhooyr";
+    githubId = 10180857;
+    name = "Anmol Sethi";
+  };
+  nicbk = {
+    email = "nicolas@nicbk.com";
+    github = "nicbk";
+    githubId = 77309427;
+    name = "Nicolás Kennedy";
+    keys = [{
+      longkeyid = "rsa4096/0xC061089EFEBF7A35";
+      fingerprint = "7BC1 77D9 C222 B1DC FB2F  0484 C061 089E FEBF 7A35";
+    }];
+  };
+  nichtsfrei = {
+    email = "philipp.eder@posteo.net";
+    github = "nichtsfrei";
+    githubId = 1665818;
+    name = "Philipp Eder";
+  };
+  nickcao = {
+    name = "Nick Cao";
+    email = "nickcao@nichi.co";
+    github = "NickCao";
+    githubId = 15247171;
+  };
+  nickhu = {
+    email = "me@nickhu.co.uk";
+    github = "nickhu";
+    githubId = 450276;
+    name = "Nick Hu";
+  };
+  nicknovitski = {
+    email = "nixpkgs@nicknovitski.com";
+    github = "nicknovitski";
+    githubId = 151337;
+    name = "Nick Novitski";
+  };
+  nico202 = {
+    email = "anothersms@gmail.com";
+    github = "nico202";
+    githubId = 8214542;
+    name = "Nicolò Balzarotti";
+  };
+  NieDzejkob = {
+    email = "kuba@kadziolka.net";
+    github = "NieDzejkob";
+    githubId = 23580910;
+    name = "Jakub Kądziołka";
+    keys = [{
+      longkeyid = "rsa4096/0xE315A75846131564";
+      fingerprint = "E576 BFB2 CF6E B13D F571  33B9 E315 A758 4613 1564";
+    }];
+  };
+  NikolaMandic = {
+    email = "nikola@mandic.email";
+    github = "NikolaMandic";
+    githubId = 4368690;
+    name = "Ratko Mladic";
+  };
+  nilp0inter = {
+    email = "robertomartinezp@gmail.com";
+    github = "nilp0inter";
+    githubId = 1224006;
+    name = "Roberto Abdelkader Martínez Pérez";
+  };
+  nilsirl = {
+    email = "nils@nilsand.re";
+    github = "NilsIrl";
+    githubId = 26231126;
+    name = "Nils ANDRÉ-CHANG";
+  };
+  nils-degroot = {
+    email = "nils@peeko.nl";
+    github = "nils-degroot";
+    githubId = 53556985;
+    name = "Nils de Groot";
+  };
+  ninjatrappeur = {
+    email = "felix@alternativebit.fr";
+    github = "ninjatrappeur";
+    githubId = 1219785;
+    name = "Félix Baylac-Jacqué";
+  };
+  ninjin = {
+    email = "pontus@stenetorp.se";
+    github = "ninjin";
+    githubId = 354934;
+    name = "Pontus Stenetorp";
+    keys = [{
+      longkeyid = "rsa4096/0xD430287500E6483C";
+      fingerprint = "0966 2F9F 3FDA C22B C22E  4CE1 D430 2875 00E6 483C";
+    }];
+  };
+  nioncode = {
+    email = "nioncode+github@gmail.com";
+    github = "nioncode";
+    githubId = 3159451;
+    name = "Nicolas Schneider";
+  };
+  nkje = {
+    name = "Niels Kristian Lyshøj Jensen";
+    email = "n@nk.je";
+    github = "NKJe";
+    githubId = 1102306;
+    keys = [{
+      longkeyid = "nistp256/0xDE3BADFECD31A89D";
+      fingerprint = "B956 C6A4 22AF 86A0 8F77  A8CA DE3B ADFE CD31 A89D";
+    }];
+  };
+  nitsky = {
+    name = "nitsky";
+    email = "492793+nitsky@users.noreply.github.com";
+    github = "nitsky";
+    githubId = 492793;
+  };
+  nkpvk = {
+    email = "niko.pavlinek@gmail.com";
+    github = "nkpvk";
+    githubId = 16385648;
+    name = "Niko Pavlinek";
+  };
+  nixbitcoin = {
+    email = "nixbitcoin@i2pmail.org";
+    github = "nixbitcoin";
+    githubId = 45737139;
+    name = "nixbitcoindev";
+    keys = [{
+      longkeyid = "rsa4096/0xDD11F9AD5308B3BA";
+      fingerprint = "577A 3452 7F3E 2A85 E80F  E164 DD11 F9AD 5308 B3BA";
+    }];
+  };
+  nixinator = {
+    email = "33lockdown33@protonmail.com";
+    github = "nixinator";
+    githubId = 66913205;
+    name = "Rick Sanchez";
+  };
+  nixy = {
+    email = "nixy@nixy.moe";
+    github = "nixy";
+    githubId = 7588406;
+    name = "Andrew R. M.";
+  };
+  nloomans = {
+    email = "noah@nixos.noahloomans.com";
+    github = "nloomans";
+    githubId = 7829481;
+    name = "Noah Loomans";
+  };
+  nmattia = {
+    email = "nicolas@nmattia.com";
+    github = "nmattia";
+    githubId = 6930756;
+    name = "Nicolas Mattia";
+  };
+  nobbz = {
+    name = "Norbert Melzer";
+    email = "timmelzer+nixpkgs@gmail.com";
+    github = "NobbZ";
+    githubId = 58951;
+  };
+  nocoolnametom = {
+    email = "nocoolnametom@gmail.com";
+    github = "nocoolnametom";
+    githubId = 810877;
+    name = "Tom Doggett";
+  };
+  nomeata = {
+    email = "mail@joachim-breitner.de";
+    github = "nomeata";
+    githubId = 148037;
+    name = "Joachim Breitner";
+  };
+  nomisiv = {
+    email = "simon@nomisiv.com";
+    github = "NomisIV";
+    githubId = 47303199;
+    name = "Simon Gutgesell";
+  };
+  noneucat = {
+    email = "andy@lolc.at";
+    github = "noneucat";
+    githubId = 40049608;
+    name = "Andy Chun";
+  };
+  noreferences = {
+    email = "norkus@norkus.net";
+    github = "noreferences";
+    githubId = 13085275;
+    name = "Juozas Norkus";
+  };
+  norfair = {
+    email = "syd@cs-syd.eu";
+    github = "NorfairKing";
+    githubId = 3521180;
+    name = "Tom Sydney Kerckhove";
+  };
+  notthemessiah = {
+    email = "brian.cohen.88@gmail.com";
+    github = "notthemessiah";
+    githubId = 2946283;
+    name = "Brian Cohen";
+  };
+  novoxudonoser = {
+    email = "radnovox@gmail.com";
+    github = "novoxudonoser";
+    githubId = 6052922;
+    name = "Kirill Struokov";
+  };
+  np = {
+    email = "np.nix@nicolaspouillard.fr";
+    github = "np";
+    githubId = 5548;
+    name = "Nicolas Pouillard";
+  };
+  nphilou = {
+    email = "nphilou@gmail.com";
+    github = "nphilou";
+    githubId = 9939720;
+    name = "Philippe Nguyen";
+  };
+  nrdxp = {
+    email = "tim.deh@pm.me";
+    github = "nrdxp";
+    githubId = 34083928;
+    name = "Tim DeHerrera";
+  };
+  nshalman = {
+    email = "nahamu@gmail.com";
+    github = "nshalman";
+    githubId = 20391;
+    name = "Nahum Shalman";
+  };
+  nslqqq = {
+    email = "nslqqq@gmail.com";
+    name = "Nikita Mikhailov";
+  };
+  nthorne = {
+    email = "notrupertthorne@gmail.com";
+    github = "nthorne";
+    githubId = 1839979;
+    name = "Niklas Thörne";
+  };
+  nullx76 = {
+    email = "nix@xirion.net";
+    github = "NULLx76";
+    githubId = 1809198;
+    name = "Victor Roest";
+  };
+  numinit = {
+    email = "me@numin.it";
+    github = "numinit";
+    githubId = 369111;
+    name = "Morgan Jones";
+  };
+  numkem = {
+    name = "Sebastien Bariteau";
+    email = "numkem@numkem.org";
+    github = "numkem";
+    githubId = 332423;
+  };
+  nyanloutre = {
+    email = "paul@nyanlout.re";
+    github = "nyanloutre";
+    githubId = 7677321;
+    name = "Paul Trehiou";
+  };
+  nyanotech = {
+    name = "nyanotech";
+    email = "nyanotechnology@gmail.com";
+    github = "nyanotech";
+    githubId = 33802077;
+  };
+  nyarly = {
+    email = "nyarly@gmail.com";
+    github = "nyarly";
+    githubId = 127548;
+    name = "Judson Lester";
+  };
+  nzhang-zh = {
+    email = "n.zhang.hp.au@gmail.com";
+    github = "nzhang-zh";
+    githubId = 30825096;
+    name = "Ning Zhang";
+  };
+  obadz = {
+    email = "obadz-nixos@obadz.com";
+    github = "obadz";
+    githubId = 3359345;
+    name = "obadz";
+  };
+  obsidian-systems-maintenance = {
+    name = "Obsidian Systems Maintenance";
+    email = "maintainer@obsidian.systems";
+    github = "obsidian-systems-maintenance";
+    githubId = 80847921;
+  };
+  obfusk = {
+    email = "flx@obfusk.net";
+    github = "obfusk";
+    githubId = 1260687;
+    name = "Felix C. Stegerman";
+    keys = [{
+      longkeyid = "rsa4096/0x2F9607F09B360F2D";
+      fingerprint = "D5E4 A51D F8D2 55B9 FAC6  A9BB 2F96 07F0 9B36 0F2D";
+    }];
+  };
+  odi = {
+    email = "oliver.dunkl@gmail.com";
+    github = "odi";
+    githubId = 158758;
+    name = "Oliver Dunkl";
+  };
+  offline = {
+    email = "jaka@x-truder.net";
+    github = "offlinehacker";
+    githubId = 585547;
+    name = "Jaka Hudoklin";
+  };
+  oida = {
+    email = "oida@posteo.de";
+    github = "oida";
+    githubId = 7249506;
+    name = "oida";
+  };
+  okasu = {
+    email = "oka.sux@gmail.com";
+    name = "Okasu";
+  };
+  olcai = {
+    email = "dev@timan.info";
+    github = "olcai";
+    githubId = 20923;
+    name = "Erik Timan";
+  };
+  olebedev = {
+    email = "ole6edev@gmail.com";
+    github = "olebedev";
+    githubId = 848535;
+    name = "Oleg Lebedev";
+  };
+  olejorgenb = {
+    email = "olejorgenb@yahoo.no";
+    github = "olejorgenb";
+    githubId = 72201;
+    name = "Ole Jørgen Brønner";
+  };
+  olynch = {
+    email = "owen@olynch.me";
+    github = "olynch";
+    githubId = 4728903;
+    name = "Owen Lynch";
+  };
+  omasanori = {
+    email = "167209+omasanori@users.noreply.github.com";
+    github = "omasanori";
+    githubId = 167209;
+    name = "Masanori Ogino";
+  };
+  omgbebebe = {
+    email = "omgbebebe@gmail.com";
+    github = "omgbebebe";
+    githubId = 588167;
+    name = "Sergey Bubnov";
+  };
+  omnipotententity = {
+    email = "omnipotententity@gmail.com";
+    github = "omnipotententity";
+    githubId = 1538622;
+    name = "Michael Reilly";
+  };
+  onixie = {
+    email = "onixie@gmail.com";
+    github = "onixie";
+    githubId = 817073;
+    name = "Yc. Shen";
+  };
+  onsails = {
+    email = "andrey@onsails.com";
+    github = "onsails";
+    githubId = 107261;
+    name = "Andrey Kuznetsov";
+  };
+  onny = {
+    email = "onny@project-insanity.org";
+    github = "onny";
+    githubId = 757752;
+    name = "Jonas Heinrich";
+  };
+  ony = {
+    name = "Mykola Orliuk";
+    email = "virkony@gmail.com";
+    github = "ony";
+    githubId = 11265;
+  };
+  OPNA2608 = {
+    email = "christoph.neidahl@gmail.com";
+    github = "OPNA2608";
+    githubId = 23431373;
+    name = "Christoph Neidahl";
+  };
+  orbekk = {
+    email = "kjetil.orbekk@gmail.com";
+    github = "orbekk";
+    githubId = 19862;
+    name = "KJ Ørbekk";
+  };
+  orbitz = {
+    email = "mmatalka@gmail.com";
+    github = "orbitz";
+    githubId = 75299;
+    name = "Malcolm Matalka";
+  };
+  orivej = {
+    email = "orivej@gmx.fr";
+    github = "orivej";
+    githubId = 101514;
+    name = "Orivej Desh";
+  };
+  oro = {
+    email = "marco@orovecchia.at";
+    github = "oro";
+    githubId = 357005;
+    name = "Marco Orovecchia";
+  };
+  osener = {
+    email = "ozan@ozansener.com";
+    github = "osener";
+    githubId = 111265;
+    name = "Ozan Sener";
+  };
+  otavio = {
+    email = "otavio.salvador@ossystems.com.br";
+    github = "otavio";
+    githubId = 25278;
+    name = "Otavio Salvador";
+  };
+  otwieracz = {
+    email = "slawek@otwiera.cz";
+    github = "otwieracz";
+    githubId = 108072;
+    name = "Slawomir Gonet";
+  };
+  oxalica = {
+    email = "oxalicc@pm.me";
+    github = "oxalica";
+    githubId = 14816024;
+    name = "oxalica";
+    keys = [{
+      longkeyid = "rsa4096/0xCED392DE0C483D00";
+      fingerprint = "5CB0 E9E5 D5D5 71F5 7F54  0FEA CED3 92DE 0C48 3D00";
+    }];
+  };
+  oxij = {
+    email = "oxij@oxij.org";
+    github = "oxij";
+    githubId = 391919;
+    name = "Jan Malakhovski";
+    keys = [{
+      longkeyid = "rsa2048/0x0E6CA66E5C557AA8";
+      fingerprint = "514B B966 B46E 3565 0508  86E8 0E6C A66E 5C55 7AA8";
+    }];
+  };
+  oxzi = {
+    email = "post@0x21.biz";
+    github = "oxzi";
+    githubId = 8402811;
+    name = "Alvar Penning";
+    keys = [{
+      longkeyid = "rsa4096/0xF32A45637FA25E31";
+      fingerprint = "EB14 4E67 E57D 27E2 B5A4  CD8C F32A 4563 7FA2 5E31";
+    }];
+  };
+  oyren = {
+    email = "m.scheuren@oyra.eu";
+    github = "oyren";
+    githubId = 15930073;
+    name = "Moritz Scheuren";
+  };
+  pablovsky = {
+    email = "dealberapablo07@gmail.com";
+    github = "pablo1107";
+    githubId = 17091659;
+    name = "Pablo Andres Dealbera";
+  };
+  pacien = {
+    email = "b4gx3q.nixpkgs@pacien.net";
+    github = "pacien";
+    githubId = 1449319;
+    name = "Pacien Tran-Girard";
+  };
+  pacman99 = {
+    email = "pachum99@gmail.com";
+    github = "Pacman99";
+    githubId = 16345849;
+    name = "Parthiv Seetharaman";
+  };
+  paddygord = {
+    email = "pgpatrickgordon@gmail.com";
+    github = "paddygord";
+    githubId = 10776658;
+    name = "Patrick Gordon";
+  };
+  paholg = {
+    email = "paho@paholg.com";
+    github = "paholg";
+    githubId = 4908217;
+    name = "Paho Lurie-Gregg";
+  };
+  pakhfn = {
+    email = "pakhfn@gmail.com";
+    github = "pakhfn";
+    githubId = 11016164;
+    name = "Fedor Pakhomov";
+  };
+  paluh = {
+    email = "paluho@gmail.com";
+    github = "paluh";
+    githubId = 190249;
+    name = "Tomasz Rybarczyk";
+  };
+  pamplemousse = {
+    email = "xav.maso@gmail.com";
+    github = "Pamplemousse";
+    githubId = 2647236;
+    name = "Xavier Maso";
+  };
+  panaeon = {
+    email = "vitalii.voloshyn@gmail.com";
+    github = "panaeon";
+    githubId = 686076;
+    name = "Vitalii Voloshyn";
+  };
+  pandaman = {
+    email = "kointosudesuyo@infoseek.jp";
+    github = "pandaman64";
+    githubId = 1788628;
+    name = "pandaman";
+  };
+  paperdigits = {
+    email = "mica@silentumbrella.com";
+    github = "paperdigits";
+    githubId = 71795;
+    name = "Mica Semrick";
+  };
+  paraseba = {
+    email = "paraseba@gmail.com";
+    github = "paraseba";
+    githubId = 20792;
+    name = "Sebastian Galkin";
+  };
+  parasrah = {
+    email = "nixos@parasrah.com";
+    github = "parasrah";
+    githubId = 14935550;
+    name = "Brad Pfannmuller";
+  };
+  pashashocky = {
+    email = "pashashocky@gmail.com";
+    github = "pashashocky";
+    githubId = 673857;
+    name = "Pash Shocky";
+  };
+  pashev = {
+    email = "pashev.igor@gmail.com";
+    github = "ip1981";
+    githubId = 131844;
+    name = "Igor Pashev";
+  };
+  pasqui23 = {
+    email = "p3dimaria@hotmail.it";
+    github = "pasqui23";
+    githubId = 6931743;
+    name = "pasqui23";
+  };
+  patryk27 = {
+    email = "wychowaniec.patryk@gmail.com";
+    github = "Patryk27";
+    githubId = 3395477;
+    name = "Patryk Wychowaniec";
+    keys = [{
+      longkeyid = "rsa4096/0xF62547D075E09767";
+      fingerprint = "196A BFEC 6A1D D1EC 7594  F8D1 F625 47D0 75E0 9767";
+    }];
+  };
+  patternspandemic = {
+    email = "patternspandemic@live.com";
+    github = "patternspandemic";
+    githubId = 15645854;
+    name = "Brad Christensen";
+  };
+  payas = {
+    email = "relekarpayas@gmail.com";
+    github = "payasrelekar";
+    githubId = 24254289;
+    name = "Payas Relekar";
+  };
+  pawelpacana = {
+    email = "pawel.pacana@gmail.com";
+    github = "pawelpacana";
+    githubId = 116740;
+    name = "Paweł Pacana";
+  };
+  pbogdan = {
+    email = "ppbogdan@gmail.com";
+    github = "pbogdan";
+    githubId = 157610;
+    name = "Piotr Bogdan";
+  };
+  pborzenkov = {
+    email = "pavel@borzenkov.net";
+    github = "pborzenkov";
+    githubId = 434254;
+    name = "Pavel Borzenkov";
+  };
+  pblkt = {
+    email = "pebblekite@gmail.com";
+    github = "pblkt";
+    githubId = 6498458;
+    name = "pebble kite";
+  };
+  pcarrier = {
+    email = "pc@rrier.ca";
+    github = "pcarrier";
+    githubId = 8641;
+    name = "Pierre Carrier";
+  };
+  pengmeiyu = {
+    email = "pengmyu@gmail.com";
+    github = "pmeiyu";
+    githubId = 8529551;
+    name = "Peng Mei Yu";
+  };
+  penguwin = {
+    email = "penguwin@penguwin.eu";
+    github = "penguwin";
+    githubId = 13225611;
+    name = "Nicolas Martin";
+  };
+  p3psi = {
+    name = "Elliot Boo";
+    email = "p3psi.boo@gmail.com";
+    github = "p3psi-boo";
+    githubId = 43925055;
+  };
+  periklis = {
+    email = "theopompos@gmail.com";
+    github = "periklis";
+    githubId = 152312;
+    name = "Periklis Tsirakidis";
+  };
+  petabyteboy = {
+    email = "milan@petabyte.dev";
+    github = "petabyteboy";
+    githubId = 3250809;
+    name = "Milan Pässler";
+  };
+  petercommand = {
+    email = "petercommand@gmail.com";
+    github = "petercommand";
+    githubId = 1260660;
+    name = "petercommand";
+  };
+  peterhoeg = {
+    email = "peter@hoeg.com";
+    github = "peterhoeg";
+    githubId = 722550;
+    name = "Peter Hoeg";
+  };
+  peterromfeldhk = {
+    email = "peter.romfeld.hk@gmail.com";
+    github = "peterromfeldhk";
+    githubId = 5515707;
+    name = "Peter Romfeld";
+  };
+  petersjt014 = {
+    email = "petersjt014@gmail.com";
+    github = "petersjt014";
+    githubId = 29493551;
+    name = "Josh Peters";
+  };
+  peti = {
+    email = "simons@cryp.to";
+    github = "peti";
+    githubId = 28323;
+    name = "Peter Simons";
+  };
+  petrosagg = {
+    email = "petrosagg@gmail.com";
+    github = "petrosagg";
+    githubId = 939420;
+    name = "Petros Angelatos";
+  };
+  petterstorvik = {
+    email = "petterstorvik@gmail.com";
+    github = "storvik";
+    githubId = 3438604;
+    name = "Petter Storvik";
+  };
+  p-h = {
+    email = "p@hurlimann.org";
+    github = "p-h";
+    githubId = 645664;
+    name = "Philippe Hürlimann";
+  };
+  philandstuff = {
+    email = "philip.g.potter@gmail.com";
+    github = "philandstuff";
+    githubId = 581269;
+    name = "Philip Potter";
+  };
+  phile314 = {
+    email = "nix@314.ch";
+    github = "phile314";
+    githubId = 1640697;
+    name = "Philipp Hausmann";
+  };
+  Philipp-M = {
+    email = "philipp@mildenberger.me";
+    github = "Philipp-M";
+    githubId = 9267430;
+    name = "Philipp Mildenberger";
+  };
+  Phlogistique = {
+    email = "noe.rubinstein@gmail.com";
+    github = "Phlogistique";
+    githubId = 421510;
+    name = "Noé Rubinstein";
+  };
+  phreedom = {
+    email = "phreedom@yandex.ru";
+    github = "phreedom";
+    githubId = 62577;
+    name = "Evgeny Egorochkin";
+  };
+  phryneas = {
+    email = "mail@lenzw.de";
+    github = "phryneas";
+    githubId = 4282439;
+    name = "Lenz Weber";
+  };
+  phunehehe = {
+    email = "phunehehe@gmail.com";
+    github = "phunehehe";
+    githubId = 627831;
+    name = "Hoang Xuan Phu";
+  };
+  piegames = {
+    name = "piegames";
+    email = "nix@piegames.de";
+    github = "piegamesde";
+    githubId = 14054505;
+  };
+  pierrechevalier83 = {
+    email = "pierrechevalier83@gmail.com";
+    github = "pierrechevalier83";
+    githubId = 5790907;
+    name = "Pierre Chevalier";
+  };
+  pierreis = {
+    email = "pierre@pierre.is";
+    github = "pierreis";
+    githubId = 203973;
+    name = "Pierre Matri";
+  };
+  pierrer = {
+    email = "pierrer@pi3r.be";
+    github = "pierrer";
+    githubId = 93115;
+    name = "Pierre Radermecker";
+  };
+  pierron = {
+    email = "nixos@nbp.name";
+    github = "nbp";
+    githubId = 1179566;
+    name = "Nicolas B. Pierron";
+  };
+  pimeys = {
+    email = "julius@nauk.io";
+    github = "pimeys";
+    githubId = 34967;
+    name = "Julius de Bruijn";
+  };
+  pingiun = {
+    email = "nixos@pingiun.com";
+    github = "pingiun";
+    githubId = 1576660;
+    name = "Jelle Besseling";
+    keys = [{
+      longkeyid = "rsa4096/0x9712452E8BE3372E";
+      fingerprint = "A3A3 65AE 16ED A7A0 C29C  88F1 9712 452E 8BE3 372E";
+    }];
+  };
+  pinpox = {
+    email = "mail@pablo.tools";
+    github = "pinpox";
+    githubId = 1719781;
+    name = "Pablo Ovelleiro Corral";
+    keys = [{
+      longkeyid = "sa4096/0x823A6154426408D3";
+      fingerprint = "D03B 218C AE77 1F77 D7F9  20D9 823A 6154 4264 08D3";
+    }];
+  };
+  piotr = {
+    email = "ppietrasa@gmail.com";
+    name = "Piotr Pietraszkiewicz";
+  };
+  pjbarnoy = {
+    email = "pjbarnoy@gmail.com";
+    github = "pjbarnoy";
+    githubId = 119460;
+    name = "Perry Barnoy";
+  };
+  pjjw = {
+    email = "peter@shortbus.org";
+    github = "pjjw";
+    githubId = 638;
+    name = "Peter Woodman";
+  };
+  pjones = {
+    email = "pjones@devalot.com";
+    github = "pjones";
+    githubId = 3737;
+    name = "Peter Jones";
+  };
+  pkmx = {
+    email = "pkmx.tw@gmail.com";
+    github = "pkmx";
+    githubId = 610615;
+    name = "Chih-Mao Chen";
+  };
+  plabadens = {
+    name = "Pierre Labadens";
+    email = "labadens.pierre+nixpkgs@gmail.com";
+    github = "plabadens";
+    githubId = 4303706;
+    keys = [{
+      longkeyid = "rsa2048/0xF55814E4D6874375";
+      fingerprint = "B00F E582 FD3F 0732 EA48  3937 F558 14E4 D687 4375";
+    }];
+  };
+  plchldr = {
+    email = "mail@oddco.de";
+    github = "plchldr";
+    githubId = 11639001;
+    name = "Jonas Beyer";
+  };
+  plcplc = {
+    email = "plcplc@gmail.com";
+    github = "plcplc";
+    githubId = 358550;
+    name = "Philip Lykke Carlsen";
+  };
+  plumps = {
+    email = "maks.bronsky@web.de";
+    github = "plumps";
+    githubId = 13000278;
+    name = "Maksim Bronsky";
+  };
+  PlushBeaver = {
+    name = "Dmitry Kozlyuk";
+    email = "dmitry.kozliuk+nixpkgs@gmail.com";
+    github = "PlushBeaver";
+    githubId = 8988269;
+  };
+  pmahoney = {
+    email = "pat@polycrystal.org";
+    github = "pmahoney";
+    githubId = 103822;
+    name = "Patrick Mahoney";
+  };
+  pmenke = {
+    email = "nixos@pmenke.de";
+    github = "pmenke-de";
+    githubId = 898922;
+    name = "Philipp Menke";
+    keys = [{
+      longkeyid = "rsa4096/0xEB7F2D4CCBE23B69";
+      fingerprint = "ED54 5EFD 64B6 B5AA EC61 8C16 EB7F 2D4C CBE2 3B69";
+    }];
+  };
+  pmeunier = {
+    email = "pierre-etienne.meunier@inria.fr";
+    github = "P-E-Meunier";
+    githubId = 17021304;
+    name = "Pierre-Étienne Meunier";
+  };
+  pmiddend = {
+    email = "pmidden@secure.mailbox.org";
+    github = "pmiddend";
+    githubId = 178496;
+    name = "Philipp Middendorf";
+  };
+  pmyjavec = {
+    email = "pauly@myjavec.com";
+    github = "pmyjavec";
+    githubId = 315096;
+    name = "Pauly Myjavec";
+  };
+  pnelson = {
+    email = "me@pnelson.ca";
+    github = "pnelson";
+    githubId = 579773;
+    name = "Philip Nelson";
+  };
+  pneumaticat = {
+    email = "kevin@potatofrom.space";
+    github = "pneumaticat";
+    githubId = 11365056;
+    name = "Kevin Liu";
+  };
+  pnotequalnp = {
+    email = "kevin@pnotequalnp.com";
+    github = "pnotequalnp";
+    githubId = 46154511;
+    name = "Kevin Mullins";
+    keys = [{
+      longkeyid = "rsa4096/361820A45DB41E9A";
+      fingerprint = "2CD2 B030 BD22 32EF DF5A  008A 3618 20A4 5DB4 1E9A";
+    }];
+  };
+  polendri = {
+    email = "paul@ijj.li";
+    github = "polendri";
+    githubId = 1829032;
+    name = "Paul Hendry";
+  };
+  polygon = {
+    email = "polygon@wh2.tu-dresden.de";
+    name = "Polygon";
+    github = "polygon";
+    githubId = 51489;
+  };
+  polyrod = {
+    email = "dc1mdp@gmail.com";
+    github = "polyrod";
+    githubId = 24878306;
+    name = "Maurizio Di Pietro";
+  };
+  pombeirp = {
+    email = "nix@endgr.33mail.com";
+    github = "PombeirP";
+    githubId = 138074;
+    name = "Pedro Pombeiro";
+  };
+  poscat = {
+    email = "poscat@mail.poscat.moe";
+    github = "poscat0x04";
+    githubId = 53291983;
+    name = "Poscat Tarski";
+    keys = [{
+      longkeyid = "rsa4096/2D2595A00D08ACE0";
+      fingerprint = "48AD DE10 F27B AFB4 7BB0  CCAF 2D25 95A0 0D08 ACE0";
+    }];
+  };
+  pradeepchhetri = {
+    email = "pradeep.chhetri89@gmail.com";
+    github = "pradeepchhetri";
+    githubId = 2232667;
+    name = "Pradeep Chhetri";
+  };
+  pradyuman = {
+    email = "me@pradyuman.co";
+    github = "pradyuman";
+    githubId = 9904569;
+    name = "Pradyuman Vig";
+    keys = [{
+      longkeyid = "rsa4096/4F74D5361C4CA31E";
+      fingerprint = "240B 57DE 4271 2480 7CE3  EAC8 4F74 D536 1C4C A31E";
+    }];
+  };
+  preisschild = {
+    email = "florian@florianstroeger.com";
+    github = "Preisschild";
+    githubId = 11898437;
+    name = "Florian Ströger";
+  };
+  priegger = {
+    email = "philipp@riegger.name";
+    github = "priegger";
+    githubId = 228931;
+    name = "Philipp Riegger";
+  };
+  prikhi = {
+    email = "pavan.rikhi@gmail.com";
+    github = "prikhi";
+    githubId = 1304102;
+    name = "Pavan Rikhi";
+  };
+  primeos = {
+    email = "dev.primeos@gmail.com";
+    github = "primeos";
+    githubId = 7537109;
+    name = "Michael Weiss";
+    keys = [
+      {
+        longkeyid = "ed25519/0x130826A6C2A389FD"; # Git only
+        fingerprint = "86A7 4A55 07D0 58D1 322E  37FD 1308 26A6 C2A3 89FD";
+      }
+      {
+        longkeyid = "rsa3072/0xBCA9943DD1DF4C04"; # Email, etc.
+        fingerprint = "AF85 991C C950 49A2 4205  1933 BCA9 943D D1DF 4C04";
+      }
+    ];
+  };
+  Profpatsch = {
+    email = "mail@profpatsch.de";
+    github = "Profpatsch";
+    githubId = 3153638;
+    name = "Profpatsch";
+  };
+  proglodyte = {
+    email = "proglodyte23@gmail.com";
+    github = "proglodyte";
+    githubId = 18549627;
+    name = "Proglodyte";
+  };
+  progval = {
+    email = "progval+nix@progval.net";
+    github = "ProgVal";
+    githubId = 406946;
+    name = "Valentin Lorentz";
+  };
+  proofofkeags = {
+    email = "keagan.mcclelland@gmail.com";
+    github = "ProofOfKeags";
+    githubId = 4033651;
+    name = "Keagan McClelland";
+  };
+  protoben = {
+    email = "protob3n@gmail.com";
+    github = "protoben";
+    githubId = 4633847;
+    name = "Ben Hamlin";
+  };
+  prusnak = {
+    email = "pavol@rusnak.io";
+    github = "prusnak";
+    githubId = 42201;
+    name = "Pavol Rusnak";
+    keys = [{
+      longkeyid = "rsa4096/0x91F3B339B9A02A3D";
+      fingerprint = "86E6 792F C27B FD47 8860  C110 91F3 B339 B9A0 2A3D";
+    }];
+  };
+  psanford = {
+    email = "psanford@sanford.io";
+    github = "psanford";
+    githubId = 33375;
+    name = "Peter Sanford";
+  };
+  psibi = {
+    email = "sibi@psibi.in";
+    github = "psibi";
+    githubId = 737477;
+    name = "Sibi Prabakaran";
+  };
+  pstn = {
+    email = "philipp@xndr.de";
+    name = "Philipp Steinpaß";
+  };
+  pSub = {
+    email = "mail@pascal-wittmann.de";
+    github = "pSub";
+    githubId = 83842;
+    name = "Pascal Wittmann";
+  };
+  psyanticy = {
+    email = "iuns@outlook.fr";
+    github = "PsyanticY";
+    githubId = 20524473;
+    name = "Psyanticy";
+  };
+  ptival = {
+    email = "valentin.robert.42@gmail.com";
+    github = "Ptival";
+    githubId = 478606;
+    name = "Valentin Robert";
+  };
+  ptrhlm = {
+    email = "ptrhlm0@gmail.com";
+    github = "ptrhlm";
+    githubId = 9568176;
+    name = "Piotr Halama";
+  };
+  puckipedia = {
+    email = "puck@puckipedia.com";
+    github = "puckipedia";
+    githubId = 488734;
+    name = "Puck Meerburg";
+  };
+  puffnfresh = {
+    email = "brian@brianmckenna.org";
+    github = "puffnfresh";
+    githubId = 37715;
+    name = "Brian McKenna";
+  };
+  purcell = {
+    email = "steve@sanityinc.com";
+    github = "purcell";
+    githubId = 5636;
+    name = "Steve Purcell";
+  };
+  puzzlewolf = {
+    email = "nixos@nora.pink";
+    github = "puzzlewolf";
+    githubId = 23097564;
+    name = "Nora Widdecke";
+  };
+  pyrolagus = {
+    email = "pyrolagus@gmail.com";
+    github = "PyroLagus";
+    githubId = 4579165;
+    name = "Danny Bautista";
+  };
+  peelz = {
+    email = "peelz.dev+nixpkgs@gmail.com";
+    github = "louistakepillz";
+    githubId = 920910;
+    name = "peelz";
+  };
+  q3k = {
+    email = "q3k@q3k.org";
+    github = "q3k";
+    githubId = 315234;
+    name = "Serge Bazanski";
+  };
+  qknight = {
+    email = "js@lastlog.de";
+    github = "qknight";
+    githubId = 137406;
+    name = "Joachim Schiele";
+  };
+  qoelet = {
+    email = "kenny@machinesung.com";
+    github = "qoelet";
+    githubId = 115877;
+    name = "Kenny Shen";
+  };
+  queezle = {
+    email = "git@queezle.net";
+    github = "qzle";
+    githubId = 1024891;
+    name = "Jens Nolte";
+  };
+  quentini = {
+    email = "quentini@airmail.cc";
+    github = "QuentinI";
+    githubId = 18196237;
+    name = "Quentin Inkling";
+  };
+  qyliss = {
+    email = "hi@alyssa.is";
+    github = "alyssais";
+    githubId = 2768870;
+    name = "Alyssa Ross";
+    keys = [{
+      longkeyid = "rsa4096/736CCDF9EF51BD97";
+      fingerprint = "7573 56D7 79BB B888 773E  415E 736C CDF9 EF51 BD97";
+    }];
+  };
+  r-burns = {
+    email = "rtburns@protonmail.com";
+    github = "r-burns";
+    githubId = 52847440;
+    name = "Ryan Burns";
+  };
+  raboof = {
+    email = "arnout@bzzt.net";
+    github = "raboof";
+    githubId = 131856;
+    name = "Arnout Engelen";
+  };
+  RaghavSood = {
+    email = "r@raghavsood.com";
+    github = "RaghavSood";
+    githubId = 903072;
+    name = "Raghav Sood";
+  };
+  rafaelgg = {
+    email = "rafael.garcia.gallego@gmail.com";
+    github = "rafaelgg";
+    githubId = 1016742;
+    name = "Rafael García";
+  };
+  raquelgb = {
+    email = "raquel.garcia.bautista@gmail.com";
+    github = "raquelgb";
+    githubId = 1246959;
+    name = "Raquel García";
+  };
+  ragge = {
+    email = "r.dahlen@gmail.com";
+    github = "ragnard";
+    githubId = 882;
+    name = "Ragnar Dahlen";
+  };
+  ralith = {
+    email = "ben.e.saunders@gmail.com";
+    github = "ralith";
+    githubId = 104558;
+    name = "Benjamin Saunders";
+  };
+  ramkromberg = {
+    email = "ramkromberg@mail.com";
+    github = "ramkromberg";
+    githubId = 14829269;
+    name = "Ram Kromberg";
+  };
+  ranfdev = {
+    email = "ranfdev@gmail.com";
+    name = "Lorenzo Miglietta";
+    github = "ranfdev";
+    githubId = 23294184;
+  };
+  rardiol = {
+    email = "ricardo.ardissone@gmail.com";
+    github = "rardiol";
+    githubId = 11351304;
+    name = "Ricardo Ardissone";
+  };
+  rasendubi = {
+    email = "rasen.dubi@gmail.com";
+    github = "rasendubi";
+    githubId = 1366419;
+    name = "Alexey Shmalko";
+  };
+  raskin = {
+    email = "7c6f434c@mail.ru";
+    github = "7c6f434c";
+    githubId = 1891350;
+    name = "Michael Raskin";
+  };
+  ratsclub = {
+    email = "victor@freire.dev.br";
+    github = "ratsclub";
+    githubId = 25647735;
+    name = "Victor Freire";
+  };
+  ravloony = {
+    email = "ravloony@gmail.com";
+    name = "Tom Macdonald";
+  };
+  rawkode = {
+    email = "david.andrew.mckay@gmail.com";
+    github = "rawkode";
+    githubId = 145816;
+    name = "David McKay";
+  };
+  razvan = {
+    email = "razvan.panda@gmail.com";
+    github = "razvan-panda";
+    githubId = 1758708;
+    name = "Răzvan Flavius Panda";
+  };
+  rb2k = {
+    email = "nix@marc-seeger.com";
+    github = "rb2k";
+    githubId = 9519;
+    name = "Marc Seeger";
+  };
+  rbasso = {
+    email = "rbasso@sharpgeeks.net";
+    github = "rbasso";
+    githubId = 16487165;
+    name = "Rafael Basso";
+  };
+  rbrewer = {
+    email = "rwb123@gmail.com";
+    github = "rbrewer123";
+    githubId = 743058;
+    name = "Rob Brewer";
+  };
+  rdnetto = {
+    email = "rdnetto@gmail.com";
+    github = "rdnetto";
+    githubId = 1973389;
+    name = "Reuben D'Netto";
+  };
+  redbaron = {
+    email = "ivanov.maxim@gmail.com";
+    github = "redbaron";
+    githubId = 16624;
+    name = "Maxim Ivanov";
+  };
+  redfish64 = {
+    email = "engler@gmail.com";
+    github = "redfish64";
+    githubId = 1922770;
+    name = "Tim Engler";
+  };
+  redvers = {
+    email = "red@infect.me";
+    github = "redvers";
+    githubId = 816465;
+    name = "Redvers Davies";
+  };
+  reedrw = {
+    email = "reedrw5601@gmail.com";
+    github = "reedrw";
+    githubId = 21069876;
+    name = "Reed Williams";
+  };
+  refnil = {
+    email = "broemartino@gmail.com";
+    github = "refnil";
+    githubId = 1142322;
+    name = "Martin Lavoie";
+  };
+  regnat = {
+    email = "regnat@regnat.ovh";
+    github = "regnat";
+    githubId = 7226587;
+    name = "Théophane Hufschmitt";
+  };
+  relrod = {
+    email = "ricky@elrod.me";
+    github = "relrod";
+    githubId = 43930;
+    name = "Ricky Elrod";
+  };
+  rembo10 = {
+    email = "rembo10@users.noreply.github.com";
+    github = "rembo10";
+    githubId = 801525;
+    name = "rembo10";
+  };
+  renatoGarcia = {
+    email = "fgarcia.renato@gmail.com";
+    github = "renatoGarcia";
+    githubId = 220211;
+    name = "Renato Garcia";
+  };
+  rencire = {
+    email = "546296+rencire@users.noreply.github.com";
+    github = "rencire";
+    githubId = 546296;
+    name = "Eric Ren";
+  };
+  renzo = {
+    email = "renzocarbonara@gmail.com";
+    github = "k0001";
+    githubId = 3302;
+    name = "Renzo Carbonara";
+  };
+  retrry = {
+    email = "retrry@gmail.com";
+    github = "retrry";
+    githubId = 500703;
+    name = "Tadas Barzdžius";
+  };
+  rexim = {
+    email = "reximkut@gmail.com";
+    github = "rexim";
+    githubId = 165283;
+    name = "Alexey Kutepov";
+  };
+  rgrunbla = {
+    email = "remy@grunblatt.org";
+    github = "rgrunbla";
+    githubId = 42433779;
+    name = "Rémy Grünblatt";
+  };
+  rguevara84 = {
+    email = "fuzztkd@gmail.com";
+    github = "rguevara84";
+    githubId = 12279531;
+    name = "Ricardo Guevara";
+  };
+  rht = {
+    email = "rhtbot@protonmail.com";
+    github = "rht";
+    githubId = 395821;
+    name = "rht";
+  };
+  rhoriguchi = {
+    email = "ryan.horiguchi@gmail.com";
+    github = "rhoriguchi ";
+    githubId = 6047658;
+    name = "Ryan Horiguchi";
+  };
+  ribose-jeffreylau = {
+    name = "Jeffrey Lau";
+    email = "jeffrey.lau@ribose.com";
+    github = "ribose-jeffreylau";
+    githubId = 2649467;
+  };
+  richardipsum = {
+    email = "richardipsum@fastmail.co.uk";
+    github = "richardipsum";
+    githubId = 10631029;
+    name = "Richard Ipsum";
+  };
+  rick68 = {
+    email = "rick68@gmail.com";
+    github = "rick68";
+    githubId = 42619;
+    name = "Wei-Ming Yang";
+  };
+  rickynils = {
+    email = "rickynils@gmail.com";
+    github = "rickynils";
+    githubId = 16779;
+    name = "Rickard Nilsson";
+  };
+  riey = {
+    email = "creeper844@gmail.com";
+    github = "Riey";
+    githubId = 14910534;
+    name = "Riey";
+  };
+  rika = {
+    email = "rika@paymentswit.ch";
+    github = "NekomimiScience";
+    githubId = 1810487;
+    name = "Rika";
+  };
+  rileyinman = {
+    email = "rileyminman@gmail.com";
+    github = "rileyinman";
+    githubId = 37246692;
+    name = "Riley Inman";
+  };
+  ris = {
+    email = "code@humanleg.org.uk";
+    github = "risicle";
+    githubId = 807447;
+    name = "Robert Scott";
+  };
+  risson = {
+    name = "Marc Schmitt";
+    email = "marc.schmitt@risson.space";
+    github = "rissson";
+    githubId = 18313093;
+    keys = [
+      {
+        longkeyid = "rsa4096/0xF6FD87B15C263EC9";
+        fingerprint = "8A0E 6A7C 08AB B9DE 67DE  2A13 F6FD 87B1 5C26 3EC9";
+      }
+      {
+        longkeyid = "ed25519/0xBBB7A6801DF1E03F";
+        fingerprint = "C0A7 A9BB 115B C857 4D75  EA99 BBB7 A680 1DF1 E03F";
+      }
+    ];
+  };
+  rittelle = {
+    email = "rittelle@posteo.de";
+    github = "rittelle";
+    githubId = 33598633;
+    name = "Lennart Rittel";
+  };
+  rixed = {
+    email = "rixed-github@happyleptic.org";
+    github = "rixed";
+    githubId = 449990;
+    name = "Cedric Cellier";
+  };
+  rkitover = {
+    email = "rkitover@gmail.com";
+    github = "rkitover";
+    githubId = 77611;
+    name = "Rafael Kitover";
+  };
+  rkoe = {
+    email = "rk@simple-is-better.org";
+    github = "rkoe";
+    githubId = 2507744;
+    name = "Roland Koebler";
+  };
+  rizary = {
+    email = "andika@numtide.com";
+    github = "Rizary";
+    githubId = 7221768;
+    name = "Andika Demas Riyandi";
+  };
+  rkrzr = {
+    email = "ops+nixpkgs@channable.com";
+    github = "rkrzr";
+    githubId = 82817;
+    name = "Robert Kreuzer";
+  };
+  rlupton20 = {
+    email = "richard.lupton@gmail.com";
+    github = "rlupton20";
+    githubId = 13752145;
+    name = "Richard Lupton";
+  };
+  rmcgibbo = {
+    email = "rmcgibbo@gmail.com";
+    github = "rmcgibbo";
+    githubId = 641278;
+    name = "Robert T. McGibbon";
+  };
+  rnhmjoj = {
+    email = "rnhmjoj@inventati.org";
+    github = "rnhmjoj";
+    githubId = 2817565;
+    name = "Michele Guerini Rocco";
+    keys = [{
+      longkeyid = "ed25519/0xBFBAF4C975F76450";
+      fingerprint = "92B2 904F D293 C94D C4C9  3E6B BFBA F4C9 75F7 6450";
+    }];
+  };
+  roastiek = {
+    email = "r.dee.b.b@gmail.com";
+    github = "roastiek";
+    githubId = 422802;
+    name = "Rostislav Beneš";
+  };
+  rob = {
+    email = "rob.vermaas@gmail.com";
+    github = "rbvermaa";
+    githubId = 353885;
+    name = "Rob Vermaas";
+  };
+  robaca = {
+    email = "carsten@r0hrbach.de";
+    github = "robaca";
+    githubId = 580474;
+    name = "Carsten Rohrbach";
+  };
+  robberer = {
+    email = "robberer@freakmail.de";
+    github = "robberer";
+    githubId = 6204883;
+    name = "Longrin Wischnewski";
+  };
+  robbinch = {
+    email = "robbinch33@gmail.com";
+    github = "robbinch";
+    githubId = 12312980;
+    name = "Robbin C.";
+  };
+  roberth = {
+    email = "nixpkgs@roberthensing.nl";
+    github = "roberth";
+    githubId = 496447;
+    name = "Robert Hensing";
+  };
+  robertodr = {
+    email = "roberto.diremigio@gmail.com";
+    github = "robertodr";
+    githubId = 3708689;
+    name = "Roberto Di Remigio";
+  };
+  robertoszek = {
+    email = "robertoszek@robertoszek.xyz";
+    github = "robertoszek";
+    githubId = 1080963;
+    name = "Roberto";
+  };
+  robgssp = {
+    email = "robgssp@gmail.com";
+    github = "robgssp";
+    githubId = 521306;
+    name = "Rob Glossop";
+  };
+  roblabla = {
+    email = "robinlambertz+dev@gmail.com";
+    github = "roblabla";
+    githubId = 1069318;
+    name = "Robin Lambertz";
+  };
+  roconnor = {
+    email = "roconnor@theorem.ca";
+    github = "roconnor";
+    githubId = 852967;
+    name = "Russell O'Connor";
+  };
+  roelvandijk = {
+    email = "roel@lambdacube.nl";
+    github = "roelvandijk";
+    githubId = 710906;
+    name = "Roel van Dijk";
+  };
+  romildo = {
+    email = "malaquias@gmail.com";
+    github = "romildo";
+    githubId = 1217934;
+    name = "José Romildo Malaquias";
+  };
+  ronanmacf = {
+    email = "macfhlar@tcd.ie";
+    github = "ronanmacf";
+    githubId = 25930627;
+    name = "Ronan Mac Fhlannchadha";
+  };
+  rongcuid = {
+    email = "rongcuid@outlook.com";
+    github = "rongcuid";
+    githubId = 1312525;
+    name = "Rongcui Dong";
+  };
+  ronthecookie = {
+    name = "Ron B";
+    email = "me@ronthecookie.me";
+    github = "ronthecookie";
+    githubId = 2526321;
+    keys = [{
+      longkeyid = "rsa2048/0x6F5B32DE5E5FA80C";
+      fingerprint = "4B2C DDA5 FA35 642D 956D  7294 6F5B 32DE 5E5F A80C";
+    }];
+  };
+  roosemberth = {
+    email = "roosembert.palacios+nixpkgs@posteo.ch";
+    github = "roosemberth";
+    githubId = 3621083;
+    name = "Roosembert (Roosemberth) Palacios";
+    keys = [{
+      longkeyid = "rsa2048/0xCAAAECE5C2242BB7";
+      fingerprint = "78D9 1871 D059 663B 6117  7532 CAAA ECE5 C224 2BB7";
+    }];
+  };
+  rople380 = {
+    name = "rople380";
+    email = "55679162+rople380@users.noreply.github.com";
+    github = "rople380";
+    githubId = 55679162;
+    keys = [{
+      longkeyid = "rsa2048/0x8526B7574A536236";
+      fingerprint = "1401 1B63 393D 16C1 AA9C  C521 8526 B757 4A53 6236";
+    }];
+  };
+  rowanG077 = {
+    email = "goemansrowan@gmail.com";
+    github = "rowanG077";
+    githubId = 7439756;
+    name = "Rowan Goemans";
+  };
+  royneary = {
+    email = "christian@ulrich.earth";
+    github = "royneary";
+    githubId = 1942810;
+    name = "Christian Ulrich";
+  };
+  rpearce = {
+    email = "me@robertwpearce.com";
+    github = "rpearce";
+    githubId = 592876;
+    name = "Robert W. Pearce";
+  };
+  rprospero = {
+    email = "rprospero+nix@gmail.com";
+    github = "rprospero";
+    githubId = 1728853;
+    name = "Adam Washington";
+  };
+  rps = {
+    email = "robbpseaton@gmail.com";
+    github = "robertseaton";
+    githubId = 221121;
+    name = "Robert P. Seaton";
+  };
+  rraval = {
+    email = "ronuk.raval@gmail.com";
+    github = "rraval";
+    githubId = 373566;
+    name = "Ronuk Raval";
+  };
+  rszibele = {
+    email = "richard@szibele.com";
+    github = "rszibele";
+    githubId = 1387224;
+    name = "Richard Szibele";
+  };
+  rsynnest = {
+    email = "contact@rsynnest.com";
+    github = "rsynnest";
+    githubId = 4392850;
+    name = "Roland Synnestvedt";
+  };
+  rtburns-jpl = {
+    email = "rtburns@jpl.nasa.gov";
+    github = "rtburns-jpl";
+    githubId = 47790121;
+    name = "Ryan Burns";
+  };
+  rtreffer = {
+    email = "treffer+nixos@measite.de";
+    github = "rtreffer";
+    githubId = 61306;
+    name = "Rene Treffer";
+  };
+  rushmorem = {
+    email = "rushmore@webenchanter.com";
+    github = "rushmorem";
+    githubId = 4958190;
+    name = "Rushmore Mushambi";
+  };
+  russell = {
+    email = "russell.sim@gmail.com";
+    github = "russell";
+    githubId = 2660;
+    name = "Russell Sim";
+  };
+  ruuda = {
+    email = "dev+nix@veniogames.com";
+    github = "ruuda";
+    githubId = 506953;
+    name = "Ruud van Asseldonk";
+  };
+  rvarago = {
+    email = "rafael.varago@gmail.com";
+    github = "rvarago";
+    githubId = 7365864;
+    name = "Rafael Varago";
+  };
+  rvl = {
+    email = "dev+nix@rodney.id.au";
+    github = "rvl";
+    githubId = 1019641;
+    name = "Rodney Lorrimar";
+  };
+  rvlander = {
+    email = "rvlander@gaetanandre.eu";
+    github = "rvlander";
+    githubId = 5236428;
+    name = "Gaëtan André";
+  };
+  rvolosatovs = {
+    email = "rvolosatovs@riseup.net";
+    github = "rvolosatovs";
+    githubId = 12877905;
+    name = "Roman Volosatovs";
+  };
+  ryanartecona = {
+    email = "ryanartecona@gmail.com";
+    github = "ryanartecona";
+    githubId = 889991;
+    name = "Ryan Artecona";
+  };
+  ryanorendorff = {
+    email = "12442942+ryanorendorff@users.noreply.github.com";
+    github = "ryanorendorff";
+    githubId = 12442942;
+    name = "Ryan Orendorff";
+  };
+  ryansydnor = {
+    email = "ryan.t.sydnor@gmail.com";
+    github = "ryansydnor";
+    githubId = 1832096;
+    name = "Ryan Sydnor";
+  };
+  ryantm = {
+    email = "ryan@ryantm.com";
+    github = "ryantm";
+    githubId = 4804;
+    name = "Ryan Mulligan";
+  };
+  ryantrinkle = {
+    email = "ryan.trinkle@gmail.com";
+    github = "ryantrinkle";
+    githubId = 1156448;
+    name = "Ryan Trinkle";
+  };
+  rybern = {
+    email = "ryan.bernstein@columbia.edu";
+    github = "rybern";
+    githubId = 4982341;
+    name = "Ryan Bernstein";
+  };
+  rycee = {
+    email = "robert@rycee.net";
+    github = "rycee";
+    githubId = 798147;
+    name = "Robert Helgesson";
+    keys = [{
+      longkeyid = "rsa4096/0x3573356C25C424D4";
+      fingerprint = "36CA CF52 D098 CC0E 78FB  0CB1 3573 356C 25C4 24D4";
+    }];
+  };
+  ryneeverett = {
+    email = "ryneeverett@gmail.com";
+    github = "ryneeverett";
+    githubId = 3280280;
+    name = "Ryne Everett";
+  };
+  rytone = {
+    email = "max@ryt.one";
+    github = "rytone";
+    githubId = 8082305;
+    name = "Maxwell Beck";
+    keys = [{
+      longkeyid = "rsa2048/0xBB3EFA303760A0DB";
+      fingerprint = "D260 79E3 C2BC 2E43 905B  D057 BB3E FA30 3760 A0DB";
+    }];
+  };
+  rzetterberg = {
+    email = "richard.zetterberg@gmail.com";
+    github = "rzetterberg";
+    githubId = 766350;
+    name = "Richard Zetterberg";
+  };
+  s1341 = {
+    email = "s1341@shmarya.net";
+    name = "Shmarya Rubenstein";
+    github = "s1341";
+    githubId = 5682183;
+  };
+  samb96 = {
+    email = "samb96@gmail.com";
+    github = "samb96";
+    githubId = 819426;
+    name = "Sam Bickley";
+  };
+  samdoshi = {
+    email = "sam@metal-fish.co.uk";
+    github = "samdoshi";
+    githubId = 112490;
+    name = "Sam Doshi";
+  };
+  samdroid-apps = {
+    email = "sam@sam.today";
+    github = "samdroid-apps";
+    githubId = 6022042;
+    name = "Sam Parkinson";
+  };
+  samlich = {
+    email = "nixos@samli.ch";
+    github = "samlich";
+    githubId = 1349989;
+    name = "samlich";
+    keys = [{
+      longkeyid = "rsa4096/B1568953B1939F1C";
+      fingerprint = "AE8C 0836 FDF6 3FFC 9580  C588 B156 8953 B193 9F1C";
+    }];
+  };
+  samrose = {
+    email = "samuel.rose@gmail.com";
+    github = "samrose";
+    githubId = 115821;
+    name = "Sam Rose";
+  };
+  samueldr = {
+    email = "samuel@dionne-riel.com";
+    github = "samueldr";
+    githubId = 132835;
+    name = "Samuel Dionne-Riel";
+  };
+  samuelgrf = {
+    email = "git@samuelgrf.com";
+    github = "samuelgrf";
+    githubId = 67663538;
+    name = "Samuel Gräfenstein";
+    keys = [{
+      longkeyid = "rsa4096/0xEF76A063F15C63C8";
+      fingerprint = "FF24 5832 8FAF 4660 18C6  186E EF76 A063 F15C 63C8";
+    }];
+  };
+  samuelrivas = {
+    email = "samuelrivas@gmail.com";
+    github = "samuelrivas";
+    githubId = 107703;
+    name = "Samuel Rivas";
+  };
+  sander = {
+    email = "s.vanderburg@tudelft.nl";
+    github = "svanderburg";
+    githubId = 1153271;
+    name = "Sander van der Burg";
+  };
+  sarcasticadmin = {
+    email = "rob@sarcasticadmin.com";
+    github = "sarcasticadmin";
+    githubId = 30531572;
+    name = "Robert James Hernandez";
+  };
+  sargon = {
+    email = "danielehlers@mindeye.net";
+    github = "sargon";
+    githubId = 178904;
+    name = "Daniel Ehlers";
+  };
+  saschagrunert = {
+    email = "mail@saschagrunert.de";
+    github = "saschagrunert";
+    githubId = 695473;
+    name = "Sascha Grunert";
+  };
+  sauyon = {
+    email = "s@uyon.co";
+    github = "sauyon";
+    githubId = 2347889;
+    name = "Sauyon Lee";
+  };
+  savannidgerinel = {
+    email = "savanni@luminescent-dreams.com";
+    github = "savannidgerinel";
+    githubId = 8534888;
+    name = "Savanni D'Gerinel";
+  };
+  sayanarijit = {
+    email = "sayanarijit@gmail.com";
+    github = "sayanarijit";
+    githubId = 11632726;
+    name = "Arijit Basu";
+  };
+  sb0 = {
+    email = "sb@m-labs.hk";
+    github = "sbourdeauducq";
+    githubId = 720864;
+    name = "Sébastien Bourdeauducq";
+  };
+  sbond75 = {
+    name = "sbond75";
+    email = "43617712+sbond75@users.noreply.github.com";
+    github = "sbond75";
+    githubId = 43617712;
+  };
+  sboosali = {
+    email = "SamBoosalis@gmail.com";
+    github = "sboosali";
+    githubId = 2320433;
+    name = "Sam Boosalis";
+  };
+  sbruder = {
+    email = "nixos@sbruder.de";
+    github = "sbruder";
+    githubId = 15986681;
+    name = "Simon Bruder";
+  };
+  scalavision = {
+    email = "scalavision@gmail.com";
+    github = "scalavision";
+    githubId = 3958212;
+    name = "Tom Sorlie";
+  };
+  schmitthenner = {
+    email = "development@schmitthenner.eu";
+    github = "fkz";
+    githubId = 354463;
+    name = "Fabian Schmitthenner";
+  };
+  schmittlauch = {
+    name = "Trolli Schmittlauch";
+    email = "t.schmittlauch+nixos@orlives.de";
+    github = "schmittlauch";
+    githubId = 1479555;
+  };
+  schneefux = {
+    email = "schneefux+nixos_pkg@schneefux.xyz";
+    github = "schneefux";
+    githubId = 15379000;
+    name = "schneefux";
+  };
+  schnusch = {
+    email = "schnusch@users.noreply.github.com";
+    github = "schnusch";
+    githubId = 5104601;
+    name = "schnusch";
+  };
+  schristo = {
+    email = "schristopher@konputa.com";
+    name = "Scott Christopher";
+  };
+  scode = {
+    email = "peter.schuller@infidyne.com";
+    github = "scode";
+    githubId = 59476;
+    name = "Peter Schuller";
+  };
+  scolobb = {
+    email = "sivanov@colimite.fr";
+    github = "scolobb";
+    githubId = 11320;
+    name = "Sergiu Ivanov";
+  };
+  screendriver = {
+    email = "nix@echooff.de";
+    github = "screendriver";
+    githubId = 149248;
+    name = "Christian Rackerseder";
+  };
+  Scriptkiddi = {
+    email = "nixos@scriptkiddi.de";
+    github = "scriptkiddi";
+    githubId = 3598650;
+    name = "Fritz Otlinghaus";
+  };
+  scubed2 = {
+    email = "scubed2@gmail.com";
+    github = "scubed2";
+    githubId = 7401858;
+    name = "Sterling Stein";
+  };
+  sdier = {
+    email = "scott@dier.name";
+    github = "sdier";
+    githubId = 11613056;
+    name = "Scott Dier";
+  };
+  sdll = {
+    email = "sasha.delly@gmail.com";
+    github = "sdll";
+    githubId = 17913919;
+    name = "Sasha Illarionov";
+  };
+  SeanZicari = {
+    email = "sean.zicari@gmail.com";
+    github = "SeanZicari";
+    githubId = 2343853;
+    name = "Sean Zicari";
+  };
+  seb314 = {
+    email = "sebastian@seb314.com";
+    github = "seb314";
+    githubId = 19472270;
+    name = "Sebastian";
+  };
+  sebbadk = {
+    email = "sebastian@sebba.dk";
+    github = "SEbbaDK";
+    githubId = 1567527;
+    name = "Sebastian Hyberts";
+  };
+  sellout = {
+    email = "greg@technomadic.org";
+    github = "sellout";
+    githubId = 33031;
+    name = "Greg Pfeil";
+  };
+  sengaya = {
+    email = "tlo@sengaya.de";
+    github = "sengaya";
+    githubId = 1286668;
+    name = "Thilo Uttendorfer";
+  };
+  sephalon = {
+    email = "me@sephalon.net";
+    github = "sephalon";
+    githubId = 893474;
+    name = "Stefan Wiehler";
+  };
+  sepi = {
+    email = "raffael@mancini.lu";
+    github = "sepi";
+    githubId = 529649;
+    name = "Raffael Mancini";
+  };
+  seppeljordan = {
+    email = "sebastian.jordan.mail@googlemail.com";
+    github = "seppeljordan";
+    githubId = 4805746;
+    name = "Sebastian Jordan";
+  };
+  seqizz = {
+    email = "seqizz@gmail.com";
+    github = "seqizz";
+    githubId = 307899;
+    name = "Gurkan Gur";
+  };
+  servalcatty = {
+    email = "servalcat@pm.me";
+    github = "servalcatty";
+    githubId = 51969817;
+    name = "Serval";
+    keys = [{
+      longkeyid = "rsa4096/0x4A2AAAA382F8294C";
+      fingerprint = "A317 37B3 693C 921B 480C  C629 4A2A AAA3 82F8 294C";
+    }];
+  };
+  seylerius = {
+    name = "Sable Seyler";
+    email = "sable@seyleri.us";
+    github = "seylerius";
+    githubId = 1145981;
+    keys = [{
+      longkeyid = "rsa4096/0xDC26B921A9E9DBDE";
+      fingerprint = "7246 B6E1 ABB9 9A48 4395  FD11 DC26 B921 A9E9 DBDE";
+    }];
+  };
+  sfrijters = {
+    email = "sfrijters@gmail.com";
+    github = "sfrijters";
+    githubId = 918365;
+    name = "Stefan Frijters";
+  };
+  sgo = {
+    email = "stig@stig.io";
+    github = "stigtsp";
+    githubId = 75371;
+    name = "Stig Palmquist";
+  };
+  sgraf = {
+    email = "sgraf1337@gmail.com";
+    github = "sgraf812";
+    githubId = 1151264;
+    name = "Sebastian Graf";
+  };
+  shahrukh330 = {
+    email = "shahrukh330@gmail.com";
+    github = "shahrukh330";
+    githubId = 1588288;
+    name = "Shahrukh Khan";
+  };
+  shamilton = {
+    email = "sgn.hamilton@protonmail.com";
+    github = "SCOTT-HAMILTON";
+    githubId = 24496705;
+    name = "Scott Hamilton";
+  };
+  ShamrockLee = {
+    name = "Shamrock Lee";
+    email = "44064051+ShamrockLee@users.noreply.github.com";
+    github = "ShamrockLee";
+    githubId = 44064051;
+  };
+  shanemikel = {
+    email = "shanepearlman@pm.me";
+    github = "shanemikel";
+    githubId = 6720672;
+    name = "Shane Pearlman";
+  };
+  shawndellysse = {
+    email = "sdellysse@gmail.com";
+    github = "shawndellysse";
+    githubId = 293035;
+    name = "Shawn Dellysse";
+  };
+  shazow = {
+    email = "andrey.petrov@shazow.net";
+    github = "shazow";
+    githubId = 6292;
+    name = "Andrey Petrov";
+  };
+  sheenobu = {
+    email = "sheena.artrip@gmail.com";
+    github = "sheenobu";
+    githubId = 1443459;
+    name = "Sheena Artrip";
+  };
+  sheepforce = {
+    email = "phillip.seeber@googlemail.com";
+    github = "sheepforce";
+    githubId = 16844216;
+    name = "Phillip Seeber";
+  };
+  sheganinans = {
+    email = "sheganinans@gmail.com";
+    github = "sheganinans";
+    githubId = 2146203;
+    name = "Aistis Raulinaitis";
+  };
+  shell = {
+    email = "cam.turn@gmail.com";
+    github = "VShell";
+    githubId = 251028;
+    name = "Shell Turner";
+  };
+  shlevy = {
+    email = "shea@shealevy.com";
+    github = "shlevy";
+    githubId = 487050;
+    name = "Shea Levy";
+  };
+  shmish111 = {
+    email = "shmish111@gmail.com";
+    github = "shmish111";
+    githubId = 934267;
+    name = "David Smith";
+  };
+  shnarazk = {
+    email = "shujinarazaki@protonmail.com";
+    github = "shnarazk";
+    githubId = 997855;
+    name = "Narazaki Shuji";
+  };
+  shofius = {
+    name = "Sam Hofius";
+    email = "sam@samhofi.us";
+    github = "kf5grd";
+    githubId = 18297490;
+  };
+  shou = {
+    email = "x+g@shou.io";
+    github = "Shou";
+    githubId = 819413;
+    name = "Benedict Aas";
+  };
+  shreerammodi = {
+    name = "Shreeram Modi";
+    email = "shreerammodi10@gmail.com";
+    github = "Shrimpram";
+    githubId = 67710369;
+    keys = [{
+      longkeyid = "rsa4096/0x163B16EE76ED24CE";
+      fingerprint = "EA88 EA07 26E9 6CBF 6365  3966 163B 16EE 76ED 24CE";
+    }];
+  };
+  shyim = {
+    email = "s.sayakci@gmail.com";
+    github = "shyim";
+    githubId = 6224096;
+    name = "Soner Sayakci";
+  };
+  siddharthist = {
+    email = "langston.barrett@gmail.com";
+    github = "langston-barrett";
+    githubId = 4294323;
+    name = "Langston Barrett";
+  };
+  siers = {
+    email = "veinbahs+nixpkgs@gmail.com";
+    github = "siers";
+    githubId = 235147;
+    name = "Raitis Veinbahs";
+  };
+  sifmelcara = {
+    email = "ming@culpring.com";
+    github = "sifmelcara";
+    githubId = 10496191;
+    name = "Ming Chuan";
+  };
+  sigma = {
+    email = "yann.hodique@gmail.com";
+    github = "sigma";
+    githubId = 16090;
+    name = "Yann Hodique";
+  };
+  sikmir = {
+    email = "sikmir@gmail.com";
+    github = "sikmir";
+    githubId = 688044;
+    name = "Nikolay Korotkiy";
+    keys = [{
+      longkeyid = "rsa2048/0xD1DE6D7F693663A5";
+      fingerprint = "ADF4 C13D 0E36 1240 BD01  9B51 D1DE 6D7F 6936 63A5";
+    }];
+  };
+  simonchatts = {
+    email = "code@chatts.net";
+    github = "simonchatts";
+    githubId = 11135311;
+    name = "Simon Chatterjee";
+  };
+  simonkampe = {
+    email = "simon.kampe+nix@gmail.com";
+    github = "simonkampe";
+    githubId = 254799;
+    name = "Simon Kämpe";
+  };
+  simonvandel = {
+    email = "simon.vandel@gmail.com";
+    github = "simonvandel";
+    githubId = 2770647;
+    name = "Simon Vandel Sillesen";
+  };
+  siraben = {
+    email = "bensiraphob@gmail.com";
+    github = "siraben";
+    githubId = 8219659;
+    name = "Siraphob Phipathananunth";
+  };
+  siriobalmelli = {
+    email = "sirio@b-ad.ch";
+    github = "siriobalmelli";
+    githubId = 23038812;
+    name = "Sirio Balmelli";
+    keys = [{
+      longkeyid = "ed25519/0xF72C4A887F9A24CA";
+      fingerprint = "B234 EFD4 2B42 FE81 EE4D  7627 F72C 4A88 7F9A 24CA";
+    }];
+  };
+  sivteck = {
+    email = "sivaram1992@gmail.com";
+    github = "sivteck";
+    githubId = 8017899;
+    name = "Sivaram Balakrishnan";
+  };
+  sjagoe = {
+    email = "simon@simonjagoe.com";
+    github = "sjagoe";
+    githubId = 80012;
+    name = "Simon Jagoe";
+  };
+  sjau = {
+    email = "nixos@sjau.ch";
+    github = "sjau";
+    githubId = 848812;
+    name = "Stephan Jau";
+  };
+  sjfloat = {
+    email = "steve+nixpkgs@jonescape.com";
+    github = "sjfloat";
+    githubId = 216167;
+    name = "Steve Jones";
+  };
+  sjmackenzie = {
+    email = "setori88@gmail.com";
+    github = "sjmackenzie";
+    githubId = 158321;
+    name = "Stewart Mackenzie";
+  };
+  sjourdois = {
+    email = "sjourdois@gmail.com";
+    name = "Stéphane ‘kwisatz’ Jourdois";
+  };
+  skeidel = {
+    email = "svenkeidel@gmail.com";
+    github = "svenkeidel";
+    githubId = 266500;
+    name = "Sven Keidel";
+  };
+  skrzyp = {
+    email = "jot.skrzyp@gmail.com";
+    name = "Jakub Skrzypnik";
+  };
+  skykanin = {
+    email = "skykanin@users.noreply.github.com";
+    github = "skykanin";
+    githubId = 3789764;
+    name = "skykanin";
+  };
+  sleexyz = {
+    email = "freshdried@gmail.com";
+    github = "sleexyz";
+    githubId = 1505617;
+    name = "Sean Lee";
+  };
+  SlothOfAnarchy = {
+    email = "slothofanarchy1@gmail.com";
+    github = "SlothOfAnarchy";
+    githubId = 12828415;
+    name = "Michel Weitbrecht";
+  };
+  smakarov = {
+    email = "setser200018@gmail.com";
+    github = "setser";
+    githubId = 12733495;
+    name = "Sergey Makarov";
+    keys = [{
+      longkeyid = "rsa2048/6AA23A1193B7064B";
+      fingerprint = "6F8A 18AE 4101 103F 3C54  24B9 6AA2 3A11 93B7 064B";
+    }];
+  };
+  smaret = {
+    email = "sebastien.maret@icloud.com";
+    github = "smaret";
+    githubId = 95471;
+    name = "Sébastien Maret";
+    keys = [{
+      longkeyid = "rsa4096/0x86E30E5A0F5FC59C";
+      fingerprint = "4242 834C D401 86EF 8281  4093 86E3 0E5A 0F5F C59C";
+    }];
+  };
+  smironov = {
+    email = "grrwlf@gmail.com";
+    github = "grwlf";
+    githubId = 4477729;
+    name = "Sergey Mironov";
+  };
+  sna = {
+    email = "abouzahra.9@wright.edu";
+    github = "s-na";
+    githubId = 20214715;
+    name = "S. Nordin Abouzahra";
+  };
+  snaar = {
+    email = "snaar@snaar.net";
+    github = "snaar";
+    githubId = 602439;
+    name = "Serguei Narojnyi";
+  };
+  snicket2100 = {
+    email = "57048005+snicket2100@users.noreply.github.com";
+    github = "snicket2100";
+    githubId = 57048005;
+    name = "snicket2100";
+  };
+  snyh = {
+    email = "snyh@snyh.org";
+    github = "snyh";
+    githubId = 1437166;
+    name = "Xia Bin";
+  };
+  softinio = {
+    email = "code@softinio.com";
+    github = "softinio";
+    githubId = 3371635;
+    name = "Salar Rahmanian";
+  };
+  sohalt = {
+    email = "nixos@sohalt.net";
+    github = "sohalt";
+    githubId = 2157287;
+    name = "sohalt";
+  };
+  solson = {
+    email = "scott@solson.me";
+    github = "solson";
+    githubId = 26806;
+    name = "Scott Olson";
+  };
+  sondr3 = {
+    email = "nilsen.sondre@gmail.com";
+    github = "sondr3";
+    githubId = 2280539;
+    name = "Sondre Nilsen";
+    keys = [{
+      longkeyid = "ed25519/0x25676BCBFFAD76B1";
+      fingerprint = "0EC3 FA89 EFBA B421 F82E  40B0 2567 6BCB FFAD 76B1";
+    }];
+  };
+  sophrosyne = {
+    email = "joshuaortiz@tutanota.com";
+    github = "sophrosyne97";
+    githubId = 53029739;
+    name = "Joshua Ortiz";
+  };
+  sorki = {
+    email = "srk@48.io";
+    github = "sorki";
+    githubId = 115308;
+    name = "Richard Marko";
+  };
+  sorpaas = {
+    email = "hi@that.world";
+    github = "sorpaas";
+    githubId = 6277322;
+    name = "Wei Tang";
+  };
+  spacefrogg = {
+    email = "spacefrogg-nixos@meterriblecrew.net";
+    github = "spacefrogg";
+    githubId = 167881;
+    name = "Michael Raitza";
+  };
+  spacekookie = {
+    email = "kookie@spacekookie.de";
+    github = "spacekookie";
+    githubId = 7669898;
+    name = "Katharina Fey";
+  };
+  spease = {
+    email = "peasteven@gmail.com";
+    github = "spease";
+    githubId = 2825204;
+    name = "Steven Pease";
+  };
+  spencerjanssen = {
+    email = "spencerjanssen@gmail.com";
+    github = "spencerjanssen";
+    githubId = 2600039;
+    name = "Spencer Janssen";
+  };
+  spinus = {
+    email = "tomasz.czyz@gmail.com";
+    github = "spinus";
+    githubId = 950799;
+    name = "Tomasz Czyż";
+  };
+  sprock = {
+    email = "rmason@mun.ca";
+    github = "sprock";
+    githubId = 6391601;
+    name = "Roger Mason";
+  };
+  spwhitt = {
+    email = "sw@swhitt.me";
+    github = "spwhitt";
+    githubId = 1414088;
+    name = "Spencer Whitt";
+  };
+  squalus = {
+    email = "squalus@tuta.io";
+    github = "squalus";
+    githubId = 36899624;
+    name = "squalus";
+  };
+  srapenne = {
+    email = "solene@perso.pw";
+    github = "rapenne-s";
+    githubId = 248016;
+    name = "Solène Rapenne";
+  };
+  srghma = {
+    email = "srghma@gmail.com";
+    github = "srghma";
+    githubId = 7573215;
+    name = "Sergei Khoma";
+  };
+  srgom = {
+    email = "srgom@users.noreply.github.com";
+    github = "srgom";
+    githubId = 8103619;
+    name = "SRGOM";
+  };
+  srhb = {
+    email = "sbrofeldt@gmail.com";
+    github = "srhb";
+    githubId = 219362;
+    name = "Sarah Brofeldt";
+  };
+  SShrike = {
+    email = "severen@shrike.me";
+    github = "severen";
+    githubId = 4061736;
+    name = "Severen Redwood";
+  };
+  sstef = {
+    email = "stephane@nix.frozenid.net";
+    github = "fkstef";
+    githubId = 8668915;
+    name = "Stephane Schitter";
+  };
+  steell = {
+    email = "steve@steellworks.com";
+    github = "Steell";
+    githubId = 1699155;
+    name = "Steve Elliott";
+  };
+  stelcodes = {
+    email = "stel@stel.codes";
+    github = "stelcodes";
+    githubId = 22163194;
+    name = "Stel Abrego";
+  };
+  stephank = {
+    email = "nix@stephank.nl";
+    github = "stephank";
+    githubId = 89950;
+    name = "Stéphan Kochen";
+  };
+  stephenmw = {
+    email = "stephen@q5comm.com";
+    github = "stephenmw";
+    githubId = 231788;
+    name = "Stephen Weinberg";
+  };
+  stephenwithph = {
+    name = "StephenWithPH";
+    email = "StephenWithPH@users.noreply.github.com";
+    github = "StephenWithPH";
+    githubId = 2990492;
+  };
+  sterfield = {
+    email = "sterfield@gmail.com";
+    github = "sterfield";
+    githubId = 5747061;
+    name = "Guillaume Loetscher";
+  };
+  sternenseemann = {
+    email = "sternenseemann@systemli.org";
+    github = "sternenseemann";
+    githubId = 3154475;
+    name = "Lukas Epple";
+  };
+  steshaw = {
+    name = "Steven Shaw";
+    email = "steven@steshaw.org";
+    github = "steshaw";
+    githubId = 45735;
+    keys = [{
+      longkeyid = "rsa4096/0x1D9A17DFD23DCB91";
+      fingerprint = "0AFE 77F7 474D 1596 EE55  7A29 1D9A 17DF D23D CB91";
+    }];
+  };
+  stesie = {
+    email = "stesie@brokenpipe.de";
+    github = "stesie";
+    githubId = 113068;
+    name = "Stefan Siegl";
+  };
+  steve-chavez = {
+    email = "stevechavezast@gmail.com";
+    github = "steve-chavez";
+    githubId = 1829294;
+    name = "Steve Chávez";
+  };
+  steveej = {
+    email = "mail@stefanjunker.de";
+    github = "steveej";
+    githubId = 1181362;
+    name = "Stefan Junker";
+  };
+  stianlagstad = {
+    email = "stianlagstad@gmail.com";
+    github = "stianlagstad";
+    githubId = 4340859;
+    name = "Stian Lågstad";
+  };
+  StijnDW = {
+    email = "nixdev@rinsa.eu";
+    github = "Stekke";
+    githubId = 1751956;
+    name = "Stijn DW";
+  };
+  StillerHarpo = {
+    email = "florianengel39@gmail.com";
+    github = "StillerHarpo";
+    githubId = 25526706;
+    name = "Florian Engel";
+  };
+  stites = {
+    email = "sam@stites.io";
+    github = "stites";
+    githubId = 1694705;
+    name = "Sam Stites";
+  };
+  stumoss = {
+    email = "samoss@gmail.com";
+    github = "stumoss";
+    githubId = 638763;
+    name = "Stuart Moss";
+  };
+  stunkymonkey = {
+    email = "account@buehler.rocks";
+    github = "Stunkymonkey";
+    githubId = 1315818;
+    name = "Felix Bühler";
+  };
+  stupremee = {
+    email = "jutus.k@protonmail.com";
+    github = "Stupremee";
+    githubId = 39732259;
+    name = "Justus K";
+  };
+  SubhrajyotiSen = {
+      email = "subhrajyoti12@gmail.com";
+      github = "SubhrajyotiSen";
+      githubId = 12984845;
+      name = "Subhrajyoti Sen";
+  };
+  suhr = {
+    email = "suhr@i2pmail.org";
+    github = "suhr";
+    githubId = 65870;
+    name = "Сухарик";
+  };
+  sumnerevans = {
+    email = "me@sumnerevans.com";
+    github = "sumnerevans";
+    githubId = 16734772;
+    name = "Sumner Evans";
+  };
+  superbo = {
+    email = "supernbo@gmail.com";
+    github = "SuperBo";
+    githubId = 2666479;
+    name = "Y Nguyen";
+  };
+  superherointj = {
+    name = "Sérgio G.";
+    email = "5861043+superherointj@users.noreply.github.com";
+    github = "superherointj";
+    githubId = 5861043;
+  };
+  SuperSandro2000 = {
+    email = "sandro.jaeckel@gmail.com";
+    github = "SuperSandro2000";
+    githubId = 7258858;
+    name = "Sandro Jäckel";
+  };
+  SuprDewd = {
+    email = "suprdewd@gmail.com";
+    github = "SuprDewd";
+    githubId = 187109;
+    name = "Bjarki Ágúst Guðmundsson";
+  };
+  suryasr007 = {
+    email = "94suryateja@gmail.com";
+    github = "suryasr007";
+    githubId = 10533926;
+    name = "Surya Teja V";
+  };
+  suvash = {
+    email = "suvash+nixpkgs@gmail.com";
+    github = "suvash";
+    githubId = 144952;
+    name = "Suvash Thapaliya";
+  };
+  sveitser = {
+    email = "sveitser@gmail.com";
+    github = "sveitser";
+    githubId = 1040871;
+    name = "Mathis Antony";
+  };
+  svend = {
+    email = "svend@svends.net";
+    github = "svend";
+    githubId = 306190;
+    name = "Svend Sorensen";
+  };
+  svrana = {
+    email = "shaw@vranix.com";
+    github = "svrana";
+    githubId = 850665;
+    name = "Shaw Vrana";
+  };
+  svsdep = {
+    email = "svsdep@gmail.com";
+    github = "svsdep";
+    githubId = 36695359;
+    name = "Vasyl Solovei";
+  };
+  swarren83 = {
+    email = "shawn.w.warren@gmail.com";
+    github = "swarren83";
+    githubId = 4572854;
+    name = "Shawn Warren";
+  };
+  swdunlop = {
+    email = "swdunlop@gmail.com";
+    github = "swdunlop";
+    githubId = 120188;
+    name = "Scott W. Dunlop";
+  };
+  sweber = {
+    email = "sweber2342+nixpkgs@gmail.com";
+    github = "sweber83";
+    githubId = 19905904;
+    name = "Simon Weber";
+  };
+  swflint = {
+    email = "swflint@flintfam.org";
+    github = "swflint";
+    githubId = 1771109;
+    name = "Samuel W. Flint";
+  };
+  swistak35 = {
+    email = "me@swistak35.com";
+    github = "swistak35";
+    githubId = 332289;
+    name = "Rafał Łasocha";
+  };
+  syberant = {
+    email = "sybrand@neuralcoding.com";
+    github = "syberant";
+    githubId = 20063502;
+    name = "Sybrand Aarnoutse";
+  };
+  symphorien = {
+    email = "symphorien_nixpkgs@xlumurb.eu";
+    github = "symphorien";
+    githubId = 12595971;
+    name = "Guillaume Girol";
+  };
+  synthetica = {
+    email = "nix@hilhorst.be";
+    github = "Synthetica9";
+    githubId = 7075751;
+    name = "Patrick Hilhorst";
+  };
+  szczyp = {
+    email = "qb@szczyp.com";
+    github = "szczyp";
+    githubId = 203195;
+    name = "Szczyp";
+  };
+  szlend = {
+    email = "pub.nix@zlender.si";
+    github = "szlend";
+    githubId = 7301807;
+    name = "Simon Žlender";
+  };
+  sztupi = {
+    email = "attila.sztupak@gmail.com";
+    github = "sztupi";
+    githubId = 143103;
+    name = "Attila Sztupak";
+  };
+  t184256 = {
+    email = "monk@unboiled.info";
+    github = "t184256";
+    githubId = 5991987;
+    name = "Alexander Sosedkin";
+  };
+  tadeokondrak = {
+    email = "me@tadeo.ca";
+    github = "tadeokondrak";
+    githubId = 4098453;
+    name = "Tadeo Kondrak";
+    keys = [{
+      longkeyid = "ed25519/0xFBE607FCC49516D3";
+      fingerprint = "0F2B C0C7 E77C 5B42 AC5B  4C18 FBE6 07FC C495 16D3";
+    }];
+  };
+  tadfisher = {
+    email = "tadfisher@gmail.com";
+    github = "tadfisher";
+    githubId = 129148;
+    name = "Tad Fisher";
+  };
+  taeer = {
+    email = "taeer@necsi.edu";
+    github = "Radvendii";
+    githubId = 1239929;
+    name = "Taeer Bar-Yam";
+  };
+  taha = {
+    email = "xrcrod@gmail.com";
+    github = "tgharib";
+    githubId = 6457015;
+    name = "Taha Gharib";
+  };
+  tailhook = {
+    email = "paul@colomiets.name";
+    github = "tailhook";
+    githubId = 321799;
+    name = "Paul Colomiets";
+  };
+  takagiy = {
+    email = "takagiy.4dev@gmail.com";
+    github = "takagiy";
+    githubId = 18656090;
+    name = "Yuki Takagi";
+  };
+  taketwo = {
+    email = "alexandrov88@gmail.com";
+    github = "taketwo";
+    githubId = 1241736;
+    name = "Sergey Alexandrov";
+  };
+  takikawa = {
+    email = "asumu@igalia.com";
+    github = "takikawa";
+    githubId = 64192;
+    name = "Asumu Takikawa";
+  };
+  taktoa = {
+    email = "taktoa@gmail.com";
+    github = "taktoa";
+    githubId = 553443;
+    name = "Remy Goldschmidt";
+  };
+  taku0 = {
+    email = "mxxouy6x3m_github@tatapa.org";
+    github = "taku0";
+    githubId = 870673;
+    name = "Takuo Yonezawa";
+  };
+  talkara = {
+    email = "taito.horiuchi@relexsolutions.com";
+    github = "talkara";
+    githubId = 51232929;
+    name = "Taito Horiuchi";
+  };
+  talyz = {
+    email = "kim.lindberger@gmail.com";
+    github = "talyz";
+    githubId = 63433;
+    name = "Kim Lindberger";
+  };
+  taneb = {
+    email = "nvd1234@gmail.com";
+    github = "Taneb";
+    githubId = 1901799;
+    name = "Nathan van Doorn";
+  };
+  tari = {
+    email = "peter@taricorp.net";
+    github = "tari";
+    githubId = 506181;
+    name = "Peter Marheine";
+  };
+  tasmo = {
+    email = "tasmo@tasmo.de";
+    github = "tasmo";
+    githubId = 102685;
+    name = "Thomas Friese";
+  };
+  tazjin = {
+    email = "mail@tazj.in";
+    github = "tazjin";
+    githubId = 1552853;
+    name = "Vincent Ambo";
+  };
+  tbenst = {
+    email = "nix@tylerbenster.com";
+    github = "tbenst";
+    githubId = 863327;
+    name = "Tyler Benster";
+  };
+  tcbravo = {
+    email = "tomas.bravo@protonmail.ch";
+    github = "tcbravo";
+    githubId = 66133083;
+    name = "Tomas Bravo";
+  };
+  tckmn = {
+    email = "andy@tck.mn";
+    github = "tckmn";
+    githubId = 2389333;
+    name = "Andy Tockman";
+  };
+  Technical27 = {
+    email = "38222826+Technical27@users.noreply.github.com";
+    github = "Technical27";
+    githubId = 38222826;
+    name = "Aamaruvi Yogamani";
+  };
+  teh = {
+    email = "tehunger@gmail.com";
+    github = "teh";
+    githubId = 139251;
+    name = "Tom Hunger";
+  };
+  telotortium = {
+    email = "rirelan@gmail.com";
+    github = "telotortium";
+    githubId = 1755789;
+    name = "Robert Irelan";
+  };
+  teozkr = {
+    email = "teo@nullable.se";
+    github = "teozkr";
+    githubId = 649832;
+    name = "Teo Klestrup Röijezon";
+  };
+  terin = {
+    email = "terinjokes@gmail.com";
+    github = "terinjokes";
+    githubId = 273509;
+    name = "Terin Stock";
+  };
+  terlar = {
+    email = "terlar@gmail.com";
+    github = "terlar";
+    githubId = 280235;
+    name = "Terje Larsen";
+  };
+  tesq0 = {
+    email = "mikolaj.galkowski@gmail.com";
+    github = "tesq0";
+    githubId = 26417242;
+    name = "Mikolaj Galkowski";
+  };
+  TethysSvensson = {
+    email = "freaken@freaken.dk";
+    github = "TethysSvensson";
+    githubId = 4294434;
+    name = "Tethys Svensson";
+  };
+  teto = {
+    email = "mcoudron@hotmail.com";
+    github = "teto";
+    githubId = 886074;
+    name = "Matthieu Coudron";
+  };
+  tex = {
+    email = "milan.svoboda@centrum.cz";
+    github = "tex";
+    githubId = 27386;
+    name = "Milan Svoboda";
+  };
+  tfc = {
+    email = "jacek@galowicz.de";
+    github = "tfc";
+    githubId = 29044;
+    name = "Jacek Galowicz";
+  };
+  tg-x = {
+    email = "*@tg-x.net";
+    github = "tg-x";
+    githubId = 378734;
+    name = "TG ⊗ Θ";
+  };
+  th0rgal = {
+    email = "thomas.marchand@tuta.io";
+    github = "Th0rgal";
+    githubId = 41830259;
+    name = "Thomas Marchand";
+  };
+  thall = {
+    email = "niclas.thall@gmail.com";
+    github = "thall";
+    githubId = 102452;
+    name = "Niclas Thall";
+  };
+  thammers = {
+    email = "jawr@gmx.de";
+    github = "tobias-hammerschmidt";
+    githubId = 2543259;
+    name = "Tobias Hammerschmidt";
+  };
+  thanegill = {
+    email = "me@thanegill.com";
+    github = "thanegill";
+    githubId = 1141680;
+    name = "Thane Gill";
+  };
+  TheBrainScrambler = {
+    email = "esthromeris@riseup.net";
+    github = "TheBrainScrambler";
+    githubId = 34945377;
+    name = "John Smith";
+  };
+  thedavidmeister = {
+    email = "thedavidmeister@gmail.com";
+    github = "thedavidmeister";
+    githubId = 629710;
+    name = "David Meister";
+  };
+  thefloweringash = {
+    email = "lorne@cons.org.nz";
+    github = "thefloweringash";
+    githubId = 42933;
+    name = "Andrew Childs";
+  };
+  thefenriswolf = {
+    email = "stefan.rohrbacher97@gmail.com";
+    github = "thefenriswolf";
+    githubId = 8547242;
+    name = "Stefan Rohrbacher";
+  };
+  thelegy = {
+    email = "mail+nixos@0jb.de";
+    github = "thelegy";
+    githubId = 3105057;
+    name = "Jan Beinke";
+  };
+  therealansh = {
+    email = "tyagiansh23@gmail.com";
+    github = "therealansh";
+    githubId = 57180880;
+    name = "Ansh Tyagi";
+  };
+  thesola10 = {
+    email = "me@thesola.io";
+    github = "thesola10";
+    githubId = 7287268;
+    keys = [{
+      longkeyid = "rsa4096/0x89245619BEBB95BA";
+      fingerprint = "1D05 13A6 1AC4 0D8D C6D6  5F2C 8924 5619 BEBB 95BA";
+    }];
+    name = "Karim Vergnes";
+  };
+  theuni = {
+    email = "ct@flyingcircus.io";
+    github = "ctheune";
+    githubId = 1220572;
+    name = "Christian Theune";
+  };
+  thiagokokada = {
+    email = "thiagokokada@gmail.com";
+    github = "thiagokokada";
+    githubId = 844343;
+    name = "Thiago K. Okada";
+  };
+  thibautmarty = {
+    email = "github@thibautmarty.fr";
+    github = "ThibautMarty";
+    githubId = 3268082;
+    name = "Thibaut Marty";
+  };
+  thmzlt = {
+    email = "git@thomazleite.com";
+    github = "thmzlt";
+    githubId = 7709;
+    name = "Thomaz Leite";
+  };
+  thomasdesr = {
+    email = "git@hive.pw";
+    github = "thomasdesr";
+    githubId = 681004;
+    name = "Thomas Desrosiers";
+  };
+  ThomasMader = {
+    email = "thomas.mader@gmail.com";
+    github = "ThomasMader";
+    githubId = 678511;
+    name = "Thomas Mader";
+  };
+  thomasjm = {
+    email = "tom@codedown.io";
+    github = "thomasjm";
+    githubId = 1634990;
+    name = "Tom McLaughlin";
+  };
+  thoughtpolice = {
+    email = "aseipp@pobox.com";
+    github = "thoughtpolice";
+    githubId = 3416;
+    name = "Austin Seipp";
+  };
+  thpham = {
+    email = "thomas.pham@ithings.ch";
+    github = "thpham";
+    githubId = 224674;
+    name = "Thomas Pham";
+  };
+  Thra11 = {
+    email = "tahall256@protonmail.ch";
+    github = "Thra11";
+    githubId = 1391883;
+    name = "Tom Hall";
+  };
+  Thunderbottom = {
+    email = "chinmaydpai@gmail.com";
+    github = "Thunderbottom";
+    githubId = 11243138;
+    name = "Chinmay D. Pai";
+    keys = [{
+      longkeyid = "rsa4096/0x75507BE256F40CED";
+      fingerprint = "7F3E EEAA EE66 93CC 8782  042A 7550 7BE2 56F4 0CED";
+    }];
+  };
+  tiagolobocastro = {
+    email = "tiagolobocastro@gmail.com";
+    github = "tiagolobocastro";
+    githubId = 1618946;
+    name = "Tiago Castro";
+  };
+  tilpner = {
+    email = "till@hoeppner.ws";
+    github = "tilpner";
+    githubId = 4322055;
+    name = "Till Höppner";
+  };
+  timbertson = {
+    email = "tim@gfxmonk.net";
+    github = "timbertson";
+    githubId = 14172;
+    name = "Tim Cuthbertson";
+  };
+  timma = {
+    email = "kunduru.it.iitb@gmail.com";
+    github = "ktrsoft";
+    githubId = 12712927;
+    name = "Timma";
+  };
+  timokau = {
+    email = "timokau@zoho.com";
+    github = "timokau";
+    githubId = 3799330;
+    name = "Timo Kaufmann";
+  };
+  timor = {
+    email = "timor.dd@googlemail.com";
+    github = "timor";
+    githubId = 174156;
+    name = "timor";
+  };
+  timput = {
+    email = "tim@timput.com";
+    github = "TimPut";
+    githubId = 2845239;
+    name = "Tim Put";
+  };
+  timstott = {
+    email = "stott.timothy@gmail.com";
+    github = "timstott";
+    githubId = 1334474;
+    name = "Timothy Stott";
+  };
+  tiramiseb = {
+    email = "sebastien@maccagnoni.eu";
+    github = "tiramiseb";
+    githubId = 1292007;
+    name = "Sébastien Maccagnoni";
+  };
+  titanous = {
+    email = "jonathan@titanous.com";
+    github = "titanous";
+    githubId = 13026;
+    name = "Jonathan Rudenberg";
+  };
+  tkerber = {
+    email = "tk@drwx.org";
+    github = "tkerber";
+    githubId = 5722198;
+    name = "Thomas Kerber";
+    keys = [{
+      longkeyid = "rsa4096/0x8489B911F9ED617B";
+      fingerprint = "556A 403F B0A2 D423 F656  3424 8489 B911 F9ED 617B";
+    }];
+  };
+  tmountain = {
+    email = "tinymountain@gmail.com";
+    github = "tmountain";
+    githubId = 135297;
+    name = "Travis Whitton";
+  };
+  tmplt = {
+    email = "tmplt@dragons.rocks";
+    github = "tmplt";
+    githubId = 6118602;
+    name = "Viktor";
+  };
+  tnias = {
+    email = "phil@grmr.de";
+    github = "tnias";
+    githubId = 9853194;
+    name = "Philipp Bartsch";
+  };
+  toastal = {
+    email = "toastal+nix@posteo.net";
+    github = "toastal";
+    githubId = 561087;
+    name = "toastal";
+    keys = [{
+      longkeyid = "ed25519/5CCE6F1466D47C9E";
+      fingerprint = "7944 74B7 D236 DAB9 C9EF  E7F9 5CCE 6F14 66D4 7C9E";
+    }];
+  };
+  tobim = {
+    email = "nix@tobim.fastmail.fm";
+    github = "tobim";
+    githubId = 858790;
+    name = "Tobias Mayer";
+  };
+  tobiasBora = {
+    email = "tobias.bora.list@gmail.com";
+    github = "tobiasBora";
+    githubId = 2164118;
+    name = "Tobias Bora";
+  };
+  tohl = {
+    email = "tom@logand.com";
+    github = "tohl";
+    githubId = 12159013;
+    name = "Tomas Hlavaty";
+  };
+  tokudan = {
+    email = "git@danielfrank.net";
+    github = "tokudan";
+    githubId = 692610;
+    name = "Daniel Frank";
+  };
+  tomahna = {
+    email = "kevin.rauscher@tomahna.fr";
+    github = "Tomahna";
+    githubId = 8577941;
+    name = "Kevin Rauscher";
+  };
+  tomberek = {
+    email = "tomberek@gmail.com";
+    github = "tomberek";
+    githubId = 178444;
+    name = "Thomas Bereknyei";
+  };
+  tomfitzhenry = {
+    email = "tom@tom-fitzhenry.me.uk";
+    github = "tomfitzhenry";
+    githubId = 61303;
+    name = "Tom Fitzhenry";
+  };
+  tomsmeets = {
+    email = "tom.tsmeets@gmail.com";
+    github = "tomsmeets";
+    githubId = 6740669;
+    name = "Tom Smeets";
+  };
+  toonn = {
+    email = "nixpkgs@toonn.io";
+    github = "toonn";
+    githubId = 1486805;
+    name = "Toon Nolten";
+  };
+  toschmidt = {
+    email = "tobias.schmidt@in.tum.de";
+    github = "toschmidt";
+    githubId = 27586264;
+    name = "Tobias Schmidt";
+  };
+  totoroot = {
+    name = "Matthias Thym";
+    email = "git@thym.at";
+    github = "totoroot";
+    githubId = 39650930;
+  };
+  ToxicFrog = {
+    email = "toxicfrog@ancilla.ca";
+    github = "ToxicFrog";
+    githubId = 90456;
+    name = "Rebecca (Bex) Kelly";
+  };
+  travisbhartwell = {
+    email = "nafai@travishartwell.net";
+    github = "travisbhartwell";
+    githubId = 10110;
+    name = "Travis B. Hartwell";
+  };
+  TredwellGit = {
+    email = "tredwell@tutanota.com";
+    github = "TredwellGit";
+    githubId = 61860346;
+    name = "Tredwell";
+  };
+  treemo = {
+    email = "matthieu.chevrier@treemo.fr";
+    github = "treemo";
+    githubId = 207457;
+    name = "Matthieu Chevrier";
+  };
+  trepetti = {
+    email = "trepetti@cs.columbia.edu";
+    github = "trepetti";
+    githubId = 25440339;
+    name = "Tom Repetti";
+  };
+  trevorj = {
+    email = "nix@trevor.joynson.io";
+    github = "akatrevorjay";
+    githubId = 1312290;
+    name = "Trevor Joynson";
+  };
+  tricktron = {
+    email = "tgagnaux@gmail.com";
+    github = "tricktron";
+    githubId = 16036882;
+    name = "Thibault Gagnaux";
+  };
+  trino = {
+    email = "muehlhans.hubert@ekodia.de";
+    github = "hmuehlhans";
+    githubId = 9870613;
+    name = "Hubert Mühlhans";
+  };
+  troydm = {
+    email = "d.geurkov@gmail.com";
+    github = "troydm";
+    githubId = 483735;
+    name = "Dmitry Geurkov";
+  };
+  truh = {
+    email = "jakob-nixos@truh.in";
+    github = "truh";
+    githubId = 1183303;
+    name = "Jakob Klepp";
+  };
+  tscholak = {
+    email = "torsten.scholak@googlemail.com";
+    github = "tscholak";
+    githubId = 1568873;
+    name = "Torsten Scholak";
+  };
+  tstrobel = {
+    email = "4ZKTUB6TEP74PYJOPWIR013S2AV29YUBW5F9ZH2F4D5UMJUJ6S@hash.domains";
+    name = "Thomas Strobel";
+  };
+  ttuegel = {
+    email = "ttuegel@mailbox.org";
+    github = "ttuegel";
+    githubId = 563054;
+    name = "Thomas Tuegel";
+  };
+  turion = {
+    email = "programming@manuelbaerenz.de";
+    github = "turion";
+    githubId = 303489;
+    name = "Manuel Bärenz";
+  };
+  tu-maurice = {
+    email = "valentin.gehrke+nixpkgs@zom.bi";
+    github = "tu-maurice";
+    githubId = 16151097;
+    name = "Valentin Gehrke";
+  };
+  tuxinaut = {
+    email = "trash4you@tuxinaut.de";
+    github = "tuxinaut";
+    githubId = 722482;
+    name = "Denny Schäfer";
+    keys = [{
+      longkeyid = "rsa4096/0xB057455D1E567270";
+      fingerprint = "C752 0E49 4D92 1740 D263  C467 B057 455D 1E56 7270";
+    }];
+  };
+  tv = {
+    email = "tv@krebsco.de";
+    github = "4z3";
+    githubId = 427872;
+    name = "Tomislav Viljetić";
+  };
+  tvestelind = {
+    email = "tomas.vestelind@fripost.org";
+    github = "tvestelind";
+    githubId = 699403;
+    name = "Tomas Vestelind";
+  };
+  tviti = {
+    email = "tviti@hawaii.edu";
+    github = "tviti";
+    githubId = 2251912;
+    name = "Taylor Viti";
+  };
+  tvorog = {
+    email = "marszaripov@gmail.com";
+    github = "tvorog";
+    githubId = 1325161;
+    name = "Marsel Zaripov";
+  };
+  tweber = {
+    email = "tw+nixpkgs@360vier.de";
+    github = "thorstenweber83";
+    githubId = 9413924;
+    name = "Thorsten Weber";
+  };
+  twey = {
+    email = "twey@twey.co.uk";
+    github = "Twey";
+    githubId = 101639;
+    name = "James ‘Twey’ Kay";
+  };
+  twhitehead = {
+    name = "Tyson Whitehead";
+    email = "twhitehead@gmail.com";
+    github = "twhitehead";
+    githubId = 787843;
+    keys = [{
+      longkeyid = "rsa2048/0x594258F0389D2802";
+      fingerprint = "E631 8869 586F 99B4 F6E6  D785 5942 58F0 389D 2802";
+    }];
+  };
+  typetetris = {
+    email = "ericwolf42@mail.com";
+    github = "typetetris";
+    githubId = 1983821;
+    name = "Eric Wolf";
+  };
+  udono = {
+    email = "udono@virtual-things.biz";
+    github = "udono";
+    githubId = 347983;
+    name = "Udo Spallek";
+  };
+  ulrikstrid = {
+    email = "ulrik.strid@outlook.com";
+    github = "ulrikstrid";
+    githubId = 1607770;
+    name = "Ulrik Strid";
+  };
+  unclechu = {
+    name = "Viacheslav Lotsmanov";
+    email = "lotsmanov89@gmail.com";
+    github = "unclechu";
+    githubId = 799353;
+    keys = [{
+      longkeyid = "rsa4096/0xD276FF7467007335";
+      fingerprint = "EE59 5E29 BB5B F2B3 5ED2  3F1C D276 FF74 6700 7335";
+    }];
+  };
+  unode = {
+    email = "alves.rjc@gmail.com";
+    github = "unode";
+    githubId = 122319;
+    name = "Renato Alves";
+  };
+  uralbash = {
+    email = "root@uralbash.ru";
+    github = "uralbash";
+    githubId = 619015;
+    name = "Svintsov Dmitry";
+  };
+  urbas = {
+    email = "matej.urbas@gmail.com";
+    github = "urbas";
+    githubId = 771193;
+    name = "Matej Urbas";
+  };
+  uri-canva = {
+    email = "uri@canva.com";
+    github = "uri-canva";
+    githubId = 33242106;
+    name = "Uri Baghin";
+  };
+  urlordjames = {
+    email = "urlordjames@gmail.com";
+    github = "urlordjames";
+    githubId = 32751441;
+    name = "urlordjames";
+  };
+  uskudnik = {
+    email = "urban.skudnik@gmail.com";
+    github = "uskudnik";
+    githubId = 120451;
+    name = "Urban Skudnik";
+  };
+  utdemir = {
+    email = "me@utdemir.com";
+    github = "utdemir";
+    githubId = 928084;
+    name = "Utku Demir";
+  };
+  uvnikita = {
+    email = "uv.nikita@gmail.com";
+    github = "uvNikita";
+    githubId = 1084748;
+    name = "Nikita Uvarov";
+  };
+  uwap = {
+    email = "me@uwap.name";
+    github = "uwap";
+    githubId = 2212422;
+    name = "uwap";
+  };
+  V = {
+    name = "V";
+    email = "v@anomalous.eu";
+    github = "deviant";
+    githubId = 68829907;
+  };
+  vaibhavsagar = {
+    email = "vaibhavsagar@gmail.com";
+    github = "vaibhavsagar";
+    githubId = 1525767;
+    name = "Vaibhav Sagar";
+  };
+  valebes = {
+    email = "valebes@gmail.com";
+    github = "valebes";
+    githubId = 10956211;
+    name = "Valerio Besozzi";
+  };
+  valeriangalliat = {
+    email = "val@codejam.info";
+    github = "valeriangalliat";
+    githubId = 3929133;
+    name = "Valérian Galliat";
+  };
+  valodim = {
+    email = "look@my.amazin.horse";
+    github = "valodim";
+    githubId = 27813;
+    name = "Vincent Breitmoser";
+  };
+  vandenoever = {
+    email = "jos@vandenoever.info";
+    github = "vandenoever";
+    githubId = 608417;
+    name = "Jos van den Oever";
+  };
+  vanilla = {
+    email = "neko@hydev.org";
+    github = "VergeDX";
+    githubId = 25173827;
+    name = "Vanilla";
+  };
+  vanschelven = {
+    email = "klaas@vanschelven.com";
+    github = "vanschelven";
+    githubId = 223833;
+    name = "Klaas van Schelven";
+  };
+  vanzef = {
+    email = "vanzef@gmail.com";
+    github = "vanzef";
+    githubId = 12428837;
+    name = "Ivan Solyankin";
+  };
+  varunpatro = {
+    email = "varun.kumar.patro@gmail.com";
+    github = "varunpatro";
+    githubId = 6943308;
+    name = "Varun Patro";
+  };
+  vbgl = {
+    email = "Vincent.Laporte@gmail.com";
+    github = "vbgl";
+    githubId = 2612464;
+    name = "Vincent Laporte";
+  };
+  vbmithr = {
+    email = "vb@luminar.eu.org";
+    github = "vbmithr";
+    githubId = 797581;
+    name = "Vincent Bernardoff";
+  };
+  vcanadi = {
+    email = "vito.canadi@gmail.com";
+    github = "vcanadi";
+    githubId = 8889722;
+    name = "Vitomir Čanadi";
+  };
+  vcunat = {
+    name = "Vladimír Čunát";
+    # vcunat@gmail.com predominated in commits before 2019/03
+    email = "v@cunat.cz";
+    github = "vcunat";
+    githubId = 1785925;
+    keys = [{
+      longkeyid = "rsa4096/0xE747DF1F9575A3AA";
+      fingerprint = "B600 6460 B60A 80E7 8206  2449 E747 DF1F 9575 A3AA";
+    }];
+  };
+  vdemeester = {
+    email = "vincent@sbr.pm";
+    github = "vdemeester";
+    githubId = 6508;
+    name = "Vincent Demeester";
+  };
+  veehaitch = {
+    name = "Vincent Haupert";
+    email = "mail@vincent-haupert.de";
+    github = "veehaitch";
+    githubId = 15069839;
+    keys = [{
+      longkeyid = "rsa4096/0x874BD6F916FAA742";
+      fingerprint = "4D23 ECDF 880D CADF 5ECA  4458 874B D6F9 16FA A742";
+    }];
+  };
+  vel = {
+    email = "llathasa@outlook.com";
+    github = "llathasa-veleth";
+    githubId = 61933599;
+    name = "vel";
+  };
+  velovix = {
+    email = "xaviosx@gmail.com";
+    github = "velovix";
+    githubId = 2856634;
+    name = "Tyler Compton";
+  };
+  veprbl = {
+    email = "veprbl@gmail.com";
+    github = "veprbl";
+    githubId = 245573;
+    name = "Dmitry Kalinkin";
+  };
+  vidbina = {
+    email = "vid@bina.me";
+    github = "vidbina";
+    githubId = 335406;
+    name = "David Asabina";
+  };
+  vifino = {
+    email = "vifino@tty.sh";
+    github = "vifino";
+    githubId = 5837359;
+    name = "Adrian Pistol";
+  };
+  vika_nezrimaya = {
+    email = "vika@fireburn.ru";
+    github = "kisik21";
+    githubId = 7953163;
+    name = "Vika Shleina";
+    keys = [{
+      longkeyid = "rsa2048/0x4F62CD07CE64796A";
+      fingerprint = "B3C0 DA1A C18B 82E8 CA8B  B1D1 4F62 CD07 CE64 796A";
+    }];
+  };
+  vincentbernat = {
+    email = "vincent@bernat.ch";
+    github = "vincentbernat";
+    githubId = 631446;
+    name = "Vincent Bernat";
+    keys = [{
+      longkeyid = "rsa4096/0x95A42FE8353525F9";
+      fingerprint = "AEF2 3487 66F3 71C6 89A7  3600 95A4 2FE8 3535 25F9";
+    }];
+  };
+  vinymeuh = {
+    email = "vinymeuh@gmail.com";
+    github = "vinymeuh";
+    githubId = 118959;
+    name = "VinyMeuh";
+  };
+  viric = {
+    email = "viric@viric.name";
+    github = "viric";
+    githubId = 66664;
+    name = "Lluís Batlle i Rossell";
+  };
+  virusdave = {
+    email = "dave.nicponski@gmail.com";
+    github = "virusdave";
+    githubId = 6148271;
+    name = "Dave Nicponski";
+  };
+  vizanto = {
+    email = "danny@prime.vc";
+    github = "vizanto";
+    githubId = 326263;
+    name = "Danny Wilson";
+  };
+  vklquevs = {
+    email = "vklquevs@gmail.com";
+    github = "vklquevs";
+    githubId = 1771234;
+    name = "vklquevs";
+  };
+  vlaci = {
+    email = "laszlo.vasko@outlook.com";
+    github = "vlaci";
+    githubId = 1771332;
+    name = "László Vaskó";
+  };
+  vlstill = {
+    email = "xstill@fi.muni.cz";
+    github = "vlstill";
+    githubId = 4070422;
+    name = "Vladimír Štill";
+  };
+  vmandela = {
+    email = "venkat.mandela@gmail.com";
+    github = "vmandela";
+    githubId = 849772;
+    name = "Venkateswara Rao Mandela";
+  };
+  vmchale = {
+    email = "tmchale@wisc.edu";
+    github = "vmchale";
+    githubId = 13259982;
+    name = "Vanessa McHale";
+  };
+
+  voidless = {
+    email = "julius.schmitt@yahoo.de";
+    github = "voidIess";
+    githubId = 45292658;
+    name = "Julius Schmitt";
+  };
+  vojta001 = {
+    email = "vojtech.kane@gmail.com";
+    github = "vojta001";
+    githubId = 7038383;
+    name = "Vojta Káně";
+  };
+  volhovm = {
+    email = "volhovm.cs@gmail.com";
+    github = "volhovm";
+    githubId = 5604643;
+    name = "Mikhail Volkhov";
+  };
+  volth = {
+    email = "jaroslavas@volth.com";
+    github = "volth";
+    githubId = 508305;
+    name = "Jaroslavas Pocepko";
+  };
+  vonfry = {
+    email = "nixos@vonfry.name";
+    github = "Vonfry";
+    githubId = 3413119;
+    name = "Vonfry";
+  };
+  vozz = {
+    email = "oliver.huntuk@gmail.com";
+    name = "Oliver Hunt";
+  };
+  vq = {
+    email = "vq@erq.se";
+    name = "Daniel Nilsson";
+  };
+  vrinek = {
+    email = "vrinek@hey.com";
+    github = "vrinek";
+    name = "Kostas Karachalios";
+    githubId = 81346;
+  };
+  vrthra = {
+    email = "rahul@gopinath.org";
+    github = "vrthra";
+    githubId = 70410;
+    name = "Rahul Gopinath";
+  };
+  vskilet = {
+    email = "victor@sene.ovh";
+    github = "vskilet";
+    githubId = 7677567;
+    name = "Victor SENE";
+  };
+  vtuan10 = {
+    email = "mail@tuan-vo.de";
+    github = "vtuan10";
+    githubId = 16415673;
+    name = "Van Tuan Vo";
+  };
+  vyorkin = {
+    email = "vasiliy.yorkin@gmail.com";
+    github = "vyorkin";
+    githubId = 988849;
+    name = "Vasiliy Yorkin";
+  };
+  vyp = {
+    email = "elisp.vim@gmail.com";
+    github = "vyp";
+    githubId = 3889405;
+    name = "vyp";
+  };
+  wakira = {
+    name = "Sheng Wang";
+    email = "sheng@a64.work";
+    github = "wakira";
+    githubId = 2338339;
+    keys = [{
+      longkeyid = "rsa4096/0x8C9B0A8FC0C0D862";
+      fingerprint = "47F7 009E 3AE3 1DA7 988E  12E1 8C9B 0A8F C0C0 D862";
+    }];
+  };
+  wamserma = {
+    name = "Markus S. Wamser";
+    email = "github-dev@mail2013.wamser.eu";
+    github = "wamserma";
+    githubId = 60148;
+  };
+  waynr = {
+    name = "Wayne Warren";
+    email = "wayne.warren.s@gmail.com";
+    github = "waynr";
+    githubId = 1441126;
+  };
+  wchresta = {
+    email = "wchresta.nix@chrummibei.ch";
+    github = "wchresta";
+    githubId = 34962284;
+    name = "wchresta";
+  };
+  wedens = {
+    email = "kirill.wedens@gmail.com";
+    name = "wedens";
+  };
+  weihua = {
+    email = "luwh364@gmail.com";
+    github = "weihua-lu";
+    githubId = 9002575;
+    name = "Weihua Lu";
+  };
+  wheelsandmetal = {
+    email = "jakob@schmutz.co.uk";
+    github = "wheelsandmetal";
+    githubId = 13031455;
+    name = "Jakob Schmutz";
+  };
+  WhittlesJr = {
+    email = "alex.joseph.whitt@gmail.com";
+    github = "WhittlesJr";
+    githubId = 19174984;
+    name = "Alex Whitt";
+  };
+  whonore = {
+    email = "wolfhonore@gmail.com";
+    github = "whonore";
+    githubId = 7121530;
+    name = "Wolf Honoré";
+  };
+  wildsebastian = {
+    name = "Sebastian Wild";
+    email = "sebastian@wild-siena.com";
+    github = "wildsebastian";
+    githubId = 1215623;
+    keys = [{
+      longkeyid = "rsa4096/0x366A2940479A06FC";
+      fingerprint = "DA03 D6C6 3F58 E796 AD26  E99B 366A 2940 479A 06FC";
+    }];
+  };
+  willibutz = {
+    email = "willibutz@posteo.de";
+    github = "willibutz";
+    githubId = 20464732;
+    name = "Willi Butz";
+  };
+  willtim = {
+    email = "tim.williams.public@gmail.com";
+    name = "Tim Philip Williams";
+  };
+  winden = {
+    email = "windenntw@gmail.com";
+    name = "Antonio Vargas Gonzalez";
+  };
+  winpat = {
+    email = "patrickwinter@posteo.ch";
+    github = "winpat";
+    githubId = 6016963;
+    name = "Patrick Winter";
+  };
+  winterqt = {
+    email = "nixos@winter.cafe";
+    github = "winterqt";
+    githubId = 78392041;
+    name = "Winter";
+  };
+  wirew0rm = {
+    email = "alex@wirew0rm.de";
+    github = "wirew0rm";
+    githubId = 1202371;
+    name = "Alexander Krimm";
+  };
+  wishfort36 = {
+    email = "42300264+wishfort36@users.noreply.github.com";
+    github = "wishfort36";
+    githubId = 42300264;
+    name = "wishfort36";
+  };
+  wizeman = {
+    email = "rcorreia@wizy.org";
+    github = "wizeman";
+    githubId = 168610;
+    name = "Ricardo M. Correia";
+  };
+  wjlroe = {
+    email = "willroe@gmail.com";
+    github = "wjlroe";
+    githubId = 43315;
+    name = "William Roe";
+  };
+  wldhx = {
+    email = "wldhx+nixpkgs@wldhx.me";
+    github = "wldhx";
+    githubId = 15619766;
+    name = "wldhx";
+  };
+  wmertens = {
+    email = "Wout.Mertens@gmail.com";
+    github = "wmertens";
+    githubId = 54934;
+    name = "Wout Mertens";
+  };
+  wnklmnn = {
+    email = "pascal@wnklmnn.de";
+    github = "wnklmnn";
+    githubId = 9423014;
+    name = "Pascal Winkelmann";
+  };
+  woffs = {
+    email = "github@woffs.de";
+    github = "woffs";
+    githubId = 895853;
+    name = "Frank Doepper";
+  };
+  wohanley = {
+    email = "me@wohanley.com";
+    github = "wohanley";
+    githubId = 1322287;
+    name = "William O'Hanley";
+  };
+  woky = {
+    email = "pampu.andrei@pm.me";
+    github = "andreisergiu98";
+    githubId = 11740700;
+    name = "Andrei Pampu";
+  };
+  wolfangaukang = {
+    email = "liquid.query960@4wrd.cc";
+    github = "wolfangaukang";
+    githubId = 8378365;
+    name = "P. R. d. O.";
+  };
+  womfoo = {
+    email = "kranium@gikos.net";
+    github = "womfoo";
+    githubId = 1595132;
+    name = "Kranium Gikos Mendoza";
+  };
+  worldofpeace = {
+    email = "worldofpeace@protonmail.ch";
+    github = "worldofpeace";
+    githubId = 28888242;
+    name = "WORLDofPEACE";
+  };
+  wscott = {
+    email = "wsc9tt@gmail.com";
+    github = "wscott";
+    githubId = 31487;
+    name = "Wayne Scott";
+  };
+  wucke13 = {
+    email = "info@wucke13.de";
+    github = "wucke13";
+    githubId = 20400405;
+    name = "Wucke";
+  };
+  wykurz = {
+    email = "wykurz@gmail.com";
+    github = "wykurz";
+    githubId = 483465;
+    name = "Mateusz Wykurz";
+  };
+  wulfsta = {
+    email = "wulfstawulfsta@gmail.com";
+    github = "Wulfsta";
+    githubId = 13378502;
+    name = "Wulfsta";
+  };
+  wunderbrick = {
+    name = "Andrew Phipps";
+    email = "lambdafuzz@tutanota.com";
+    github = "wunderbrick";
+    githubId = 52174714;
+  };
+  wyvie = {
+    email = "elijahrum@gmail.com";
+    github = "wyvie";
+    githubId = 3992240;
+    name = "Elijah Rum";
+  };
+  xaverdh = {
+    email = "hoe.dom@gmx.de";
+    github = "xaverdh";
+    githubId = 11050617;
+    name = "Dominik Xaver Hörl";
+  };
+  xbreak = {
+    email = "xbreak@alphaware.se";
+    github = "xbreak";
+    githubId = 13489144;
+    name = "Calle Rosenquist";
+  };
+  xdhampus = {
+    name = "Hampus";
+    email = "16954508+xdHampus@users.noreply.github.com";
+    github = "xdHampus";
+    githubId = 16954508;
+  };
+  xe = {
+    email = "me@christine.website";
+    github = "Xe";
+    githubId = 529003;
+    name = "Christine Dodrill";
+  };
+  xeji = {
+    email = "xeji@cat3.de";
+    github = "xeji";
+    githubId = 36407913;
+    name = "Uli Baum";
+  };
+  xfnw = {
+    email = "xfnw+nixos@riseup.net";
+    github = "xfnw";
+    githubId = 66233223;
+    name = "Owen";
+  };
+  xfix = {
+    email = "konrad@borowski.pw";
+    github = "xfix";
+    githubId = 1297598;
+    name = "Konrad Borowski";
+  };
+  xiorcale = {
+    email = "quentin.vaucher@pm.me";
+    github = "xiorcale";
+    githubId = 17534323;
+    name = "Quentin Vaucher";
+  };
+  xnaveira = {
+    email = "xnaveira@gmail.com";
+    github = "xnaveira";
+    githubId = 2534411;
+    name = "Xavier Naveira";
+  };
+  xnwdd = {
+    email = "nwdd+nixos@no.team";
+    github = "xnwdd";
+    githubId = 3028542;
+    name = "Guillermo NWDD";
+  };
+  xrelkd = {
+    email = "46590321+xrelkd@users.noreply.github.com";
+    github = "xrelkd";
+    githubId = 46590321;
+    name = "xrelkd";
+  };
+  xurei = {
+    email = "olivier.bourdoux@gmail.com";
+    github = "xurei";
+    githubId = 621695;
+    name = "Olivier Bourdoux";
+  };
+  xvapx = {
+    email = "marti.serra.coscollano@gmail.com";
+    github = "xvapx";
+    githubId = 11824817;
+    name = "Marti Serra";
+  };
+  xworld21 = {
+    email = "1962985+xworld21@users.noreply.github.com";
+    github = "xworld21";
+    githubId = 1962985;
+    name = "Vincenzo Mantova";
+  };
+  xwvvvvwx = {
+    email = "davidterry@posteo.de";
+    github = "xwvvvvwx";
+    githubId = 6689924;
+    name = "David Terry";
+  };
+  xzfc = {
+    email = "xzfcpw@gmail.com";
+    github = "xzfc";
+    githubId = 5121426;
+    name = "Albert Safin";
+  };
+  y0no = {
+    email = "y0no@y0no.fr";
+    github = "y0no";
+    githubId = 2242427;
+    name = "Yoann Ono";
+  };
+  yarny = {
+    email = "41838844+Yarny0@users.noreply.github.com";
+    github = "Yarny0";
+    githubId = 41838844;
+    name = "Yarny";
+  };
+  yarr = {
+    email = "savraz@gmail.com";
+    github = "Eternity-Yarr";
+    githubId = 3705333;
+    name = "Dmitry V.";
+  };
+  yegortimoshenko = {
+    email = "yegortimoshenko@riseup.net";
+    github = "yegortimoshenko";
+    githubId = 1643293;
+    name = "Yegor Timoshenko";
+  };
+  yesbox = {
+    email = "jesper.geertsen.jonsson@gmail.com";
+    github = "yesbox";
+    githubId = 4113027;
+    name = "Jesper Geertsen Jonsson";
+  };
+  ylwghst = {
+    email = "ylwghst@onionmail.info";
+    github = "ylwghst";
+    githubId = 26011724;
+    name = "Burim Augustin Berisa";
+  };
+  yochai = {
+    email = "yochai@titat.info";
+    github = "yochai";
+    githubId = 1322201;
+    name = "Yochai";
+  };
+  yoctocell = {
+    email = "public@yoctocell.xyz";
+    github = "yoctocell";
+    githubId = 40352765;
+    name = "Yoctocell";
+  };
+  yorickvp = {
+    email = "yorickvanpelt@gmail.com";
+    github = "yorickvp";
+    githubId = 647076;
+    name = "Yorick van Pelt";
+  };
+  yrashk = {
+    email = "yrashk@gmail.com";
+    github = "yrashk";
+    githubId = 452;
+    name = "Yurii Rashkovskii";
+  };
+  ysndr = {
+    email = "me@ysndr.de";
+    github = "ysndr";
+    githubId = 7040031;
+    name = "Yannik Sander";
+  };
+  yuriaisaka = {
+    email = "yuri.aisaka+nix@gmail.com";
+    github = "yuriaisaka";
+    githubId = 687198;
+    name = "Yuri Aisaka";
+  };
+  yurrriq = {
+    email = "eric@ericb.me";
+    github = "yurrriq";
+    githubId = 1866448;
+    name = "Eric Bailey";
+  };
+  Yumasi = {
+    email = "gpagnoux@gmail.com";
+    github = "Yumasi";
+    githubId = 24368641;
+    name = "Guillaume Pagnoux";
+    keys = [{
+      longkeyid = "rsa4096/0xEC5065899AEAAF4C";
+      fingerprint = "85F8 E850 F8F2 F823 F934  535B EC50 6589 9AEA AF4C";
+    }];
+  };
+  yuka = {
+    email = "yuka@yuka.dev";
+    github = "yu-re-ka";
+    githubId = 86169957;
+    name = "Yureka";
+  };
+  yusdacra = {
+    email = "y.bera003.06@protonmail.com";
+    github = "yusdacra";
+    githubId = 19897088;
+    name = "Yusuf Bera Ertan";
+    keys = [{
+      longkeyid = "rsa2048/0x61807181F60EFCB2";
+      fingerprint = "9270 66BD 8125 A45B 4AC4 0326 6180 7181 F60E FCB2";
+    }];
+  };
+  yvesf = {
+    email = "yvesf+nix@xapek.org";
+    github = "yvesf";
+    githubId = 179548;
+    name = "Yves Fischer";
+  };
+  yvt = {
+    email = "i@yvt.jp";
+    github = "yvt";
+    githubId = 5253988;
+    name = "yvt";
+  };
+  maggesi = {
+    email = "marco.maggesi@gmail.com";
+    github = "maggesi";
+    githubId = 1809783;
+    name = "Marco Maggesi";
+  };
+  zachcoyle = {
+    email = "zach.coyle@gmail.com";
+    github = "zachcoyle";
+    githubId = 908716;
+    name = "Zach Coyle";
+  };
+  zagy = {
+    email = "cz@flyingcircus.io";
+    github = "zagy";
+    githubId = 568532;
+    name = "Christian Zagrodnick";
+  };
+  zakame = {
+    email = "zakame@zakame.net";
+    github = "zakame";
+    githubId = 110625;
+    name = "Zak B. Elep";
+  };
+  zalakain = {
+    email = "ping@umazalakain.info";
+    github = "umazalakain";
+    githubId = 1319905;
+    name = "Uma Zalakain";
+  };
+  zaninime = {
+    email = "francesco@zanini.me";
+    github = "zaninime";
+    githubId = 450885;
+    name = "Francesco Zanini";
+  };
+  zarelit = {
+    email = "david@zarel.net";
+    github = "zarelit";
+    githubId = 3449926;
+    name = "David Costa";
+  };
+  zauberpony = {
+    email = "elmar@athmer.org";
+    github = "zauberpony";
+    githubId = 250877;
+    name = "Elmar Athmer";
+  };
+  zakkor = {
+    email = "edward.dalbon@gmail.com";
+    github = "zakkor";
+    githubId = 6191421;
+    name = "Edward d'Albon";
+  };
+  zef = {
+    email = "zef@zef.me";
+    name = "Zef Hemel";
+  };
+  zeratax = {
+    email = "mail@zera.tax";
+    github = "ZerataX";
+    githubId = 5024958;
+    name = "Jona Abdinghoff";
+    keys = [{
+      longkeyid = "rsa4096/0x8333735E784DF9D4";
+      fingerprint = "44F7 B797 9D3A 27B1 89E0  841E 8333 735E 784D F9D4";
+    }];
+  };
+  zfnmxt = {
+    name = "zfnmxt";
+    email = "zfnmxt@zfnmxt.com";
+    github = "zfnmxt";
+    githubId = 37446532;
+  };
+  zgrannan = {
+    email = "zgrannan@gmail.com";
+    github = "zgrannan";
+    githubId = 1141948;
+    name = "Zack Grannan";
+  };
+  zhaofengli = {
+    email = "hello@zhaofeng.li";
+    github = "zhaofengli";
+    githubId = 2189609;
+    name = "Zhaofeng Li";
+  };
+  zimbatm = {
+    email = "zimbatm@zimbatm.com";
+    github = "zimbatm";
+    githubId = 3248;
+    name = "zimbatm";
+  };
+  Zimmi48 = {
+    email = "theo.zimmermann@univ-paris-diderot.fr";
+    github = "Zimmi48";
+    githubId = 1108325;
+    name = "Théo Zimmermann";
+  };
+  zohl = {
+    email = "zohl@fmap.me";
+    github = "zohl";
+    githubId = 6067895;
+    name = "Al Zohali";
+  };
+  zookatron = {
+    email = "tim@zookatron.com";
+    github = "zookatron";
+    githubId = 1772064;
+    name = "Tim Zook";
+  };
+  zoomulator = {
+    email = "zoomulator@gmail.com";
+    github = "zoomulator";
+    githubId = 1069303;
+    name = "Kim Simmons";
+  };
+  zopieux = {
+    email = "zopieux@gmail.com";
+    github = "zopieux";
+    githubId = 81353;
+    name = "Alexandre Macabies";
+  };
+  zowoq = {
+    email = "59103226+zowoq@users.noreply.github.com";
+    github = "zowoq";
+    githubId = 59103226;
+    name = "zowoq";
+  };
+  zraexy = {
+    email = "zraexy@gmail.com";
+    github = "zraexy";
+    githubId = 8100652;
+    name = "David Mell";
+  };
+  ztzg = {
+    email = "dd@crosstwine.com";
+    github = "ztzg";
+    githubId = 393108;
+    name = "Damien Diederen";
+  };
+  zx2c4 = {
+    email = "Jason@zx2c4.com";
+    github = "zx2c4";
+    githubId = 10643;
+    name = "Jason A. Donenfeld";
+  };
+  zyansheep = {
+    email = "zyansheep@protonmail.com";
+    github = "zyansheep";
+    githubId = 20029431;
+    name = "Zyansheep";
+  };
+  zzamboni = {
+    email = "diego@zzamboni.org";
+    github = "zzamboni";
+    githubId = 32876;
+    name = "Diego Zamboni";
+  };
+  turbomack = {
+    email = "marek.faj@gmail.com";
+    github = "turboMaCk";
+    githubId = 2130305;
+    name = "Marek Fajkus";
+  };
+  melling = {
+    email = "mattmelling@fastmail.com";
+    github = "mattmelling";
+    githubId = 1215331;
+    name = "Matt Melling";
+  };
+  wd15 = {
+    email = "daniel.wheeler2@gmail.com";
+    github = "wd15";
+    githubId = 1986844;
+    name = "Daniel Wheeler";
+  };
+  misuzu = {
+    email = "bakalolka@gmail.com";
+    github = "misuzu";
+    githubId = 248143;
+    name = "misuzu";
+  };
+  zokrezyl = {
+    email = "zokrezyl@gmail.com";
+    github = "zokrezyl";
+    githubId = 51886259;
+    name = "Zokre Zyl";
+  };
+  rakesh4g = {
+    email = "rakeshgupta4u@gmail.com";
+    github = "rakesh4g";
+    githubId = 50867187;
+    name = "Rakesh Gupta";
+  };
+  mlatus = {
+    email = "wqseleven@gmail.com";
+    github = "Ninlives";
+    githubId = 17873203;
+    name = "mlatus";
+  };
+  waiting-for-dev = {
+    email = "marc@lamarciana.com";
+    github = "waiting-for-dev";
+    githubId = 52650;
+    name = "Marc Busqué";
+  };
+  snglth = {
+    email = "illia@ishestakov.com";
+    github = "snglth";
+    githubId = 8686360;
+    name = "Illia Shestakov";
+  };
+  masaeedu = {
+    email = "masaeedu@gmail.com";
+    github = "masaeedu";
+    githubId = 3674056;
+    name = "Asad Saeeduddin";
+  };
+  matthewcroughan = {
+    email = "matt@croughan.sh";
+    github = "matthewcroughan";
+    githubId = 26458780;
+    name = "Matthew Croughan";
+  };
+  ngerstle = {
+    name = "Nicholas Gerstle";
+    email = "ngerstle@gmail.com";
+    github = "ngerstle";
+    githubId = 1023752;
+  };
+  shardy = {
+    email = "shardul@baral.ca";
+    github = "shardulbee";
+    githubId = 16765155;
+    name = "Shardul Baral";
+  };
+  xavierzwirtz = {
+    email = "me@xavierzwirtz.com";
+    github = "xavierzwirtz";
+    githubId = 474343;
+    name = "Xavier Zwirtz";
+  };
+  ymarkus = {
+    name = "Yannick Markus";
+    email = "nixpkgs@ymarkus.dev";
+    github = "ymarkus";
+    githubId = 62380378;
+  };
+  ymatsiuk = {
+    name = "Yurii Matsiuk";
+    email = "ymatsiuk@users.noreply.github.com";
+    github = "ymatsiuk";
+    githubId = 24990891;
+    keys = [{
+      longkeyid = "rsa4096/0x61302290298601AA";
+      fingerprint = "7BB8 84B5 74DA FDB1 E194  ED21 6130 2290 2986 01AA";
+    }];
+  };
+  ymeister = {
+    name = "Yuri Meister";
+    email = "47071325+ymeister@users.noreply.github.com";
+    github = "ymeister";
+    githubId = 47071325;
+  };
+  cpcloud = {
+    name = "Phillip Cloud";
+    email = "417981+cpcloud@users.noreply.github.com";
+    github = "cpcloud";
+    githubId = 417981;
+  };
+  davegallant = {
+    name = "Dave Gallant";
+    email = "davegallant@gmail.com";
+    github = "davegallant";
+    githubId = 4519234;
+  };
+  saulecabrera = {
+    name = "Saúl Cabrera";
+    email = "saulecabrera@gmail.com";
+    github = "saulecabrera";
+    githubId = 1423601;
+  };
+  tfmoraes = {
+    name = "Thiago Franco de Moraes";
+    email = "351108+tfmoraes@users.noreply.github.com";
+    github = "tfmoraes";
+    githubId = 351108;
+  };
+  deifactor = {
+    name = "Ash Zahlen";
+    email = "ext0l@riseup.net";
+    github = "deifactor";
+    githubId = 30192992;
+  };
+  fzakaria = {
+    name = "Farid Zakaria";
+    email = "farid.m.zakaria@gmail.com";
+    github = "fzakaria";
+    githubId = 605070;
+  };
+  nagisa = {
+    name = "Simonas Kazlauskas";
+    email = "nixpkgs@kazlauskas.me";
+    github = "nagisa";
+    githubId = 679122;
+  };
+  yevhenshymotiuk = {
+    name = "Yevhen Shymotiuk";
+    email = "yevhenshymotiuk@gmail.com";
+    github = "yevhenshymotiuk";
+    githubId = 44244245;
+  };
+  hmenke = {
+    name = "Henri Menke";
+    email = "henri@henrimenke.de";
+    github = "hmenke";
+    githubId = 1903556;
+    keys = [{
+      longkeyid = "rsa4096/0xD65C9AFB4C224DA3";
+      fingerprint = "F1C5 760E 45B9 9A44 72E9  6BFB D65C 9AFB 4C22 4DA3";
+    }];
+  };
+  berbiche = {
+    name = "Nicolas Berbiche";
+    email = "nicolas@normie.dev";
+    github = "berbiche";
+    githubId = 20448408;
+    keys = [{
+      longkeyid = "rsa4096/0xB461292445C6E696";
+      fingerprint = "D446 E58D 87A0 31C7 EC15  88D7 B461 2924 45C6 E696";
+    }];
+  };
+  wenngle = {
+    name = "Zeke Stephens";
+    email = "zekestephens@gmail.com";
+    github = "wenngle";
+    githubId = 63376671;
+  };
+  yanganto = {
+    name = "Antonio Yang";
+    email = "yanganto@gmail.com";
+    github = "yanganto";
+    githubId = 10803111;
+  };
+  starcraft66 = {
+    name = "Tristan Gosselin-Hane";
+    email = "starcraft66@gmail.com";
+    github = "starcraft66";
+    githubId = 1858154;
+    keys = [{
+      longkeyid = "rsa4096/0x9D98CDACFF04FD78";
+      fingerprint = "8597 4506 EC69 5392 0443  0805 9D98 CDAC FF04 FD78";
+    }];
+  };
+  hloeffler = {
+    name = "Hauke Löffler";
+    email = "nix@hauke-loeffler.de";
+    github = "hloeffler";
+    githubId = 6627191;
+  };
+  wilsonehusin = {
+    name = "Wilson E. Husin";
+    email = "wilsonehusin@gmail.com";
+    github = "wilsonehusin";
+    githubId = 14004487;
+  };
+  bb2020 = {
+    email = "bb2020@users.noreply.github.com";
+    github = "bb2020";
+    githubId = 19290397;
+    name = "Tunc Uzlu";
+  };
+  pulsation = {
+    name = "Philippe Sam-Long";
+    email = "1838397+pulsation@users.noreply.github.com";
+    github = "pulsation";
+    githubId = 1838397;
+  };
+  princemachiavelli = {
+    name = "Josh Hoffer";
+    email = "jhoffer@sansorgan.es";
+    github = "princemachiavelli";
+    githubId = 2730968;
+    keys = [{
+      longkeyid = "ed25519/0x83124F97A318EA18";
+      fingerprint = "DD54 130B ABEC B65C 1F6B  2A38 8312 4F97 A318 EA18";
+    }];
+  };
+  ydlr = {
+    name = "ydlr";
+    email = "ydlr@ydlr.io";
+    github = "ydlr";
+    githubId = 58453832;
+    keys = [{
+      longkeyid = "rsa4096/0x43AB44130A29AD9D";
+      fingerprint = "FD0A C425 9EF5 4084 F99F 9B47 2ACC 9749 7C68 FAD4";
+    }];
+  };
+  zane = {
+    name = "Zane van Iperen";
+    email = "zane@zanevaniperen.com";
+    github = "vs49688";
+    githubId = 4423262;
+    keys = [{
+      longkeyid = "rsa4096/0x68616B2D8AC4DCC5";
+      fingerprint = "61AE D40F 368B 6F26 9DAE  3892 6861 6B2D 8AC4 DCC5";
+    }];
+  };
+  zeri = {
+    name = "zeri";
+    email = "68825133+zeri42@users.noreply.github.com";
+    github = "zeri42";
+    githubId = 68825133;
+  };
+  zseri = {
+    name = "zseri";
+    email = "zseri.devel@ytrizja.de";
+    github = "zseri";
+    githubId = 1618343;
+    keys = [{
+      longkeyid = "rsa4096/0x229E63AE5644A96D";
+      fingerprint = "7AFB C595 0D3A 77BD B00F  947B 229E 63AE 5644 A96D";
+    }];
+  };
+  zupo = {
+    name = "Nejc Zupan";
+    email = "nejczupan+nix@gmail.com";
+    github = "zupo";
+    githubId = 311580;
+  };
+}
diff --git a/nixpkgs/maintainers/scripts/all-tarballs.nix b/nixpkgs/maintainers/scripts/all-tarballs.nix
new file mode 100644
index 000000000000..6a4de8a4b951
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/all-tarballs.nix
@@ -0,0 +1,16 @@
+/* Helper expression for copy-tarballs. This returns (nearly) all
+   tarballs used the free packages in Nixpkgs.
+
+   Typical usage:
+
+   $ copy-tarballs.pl --expr 'import <nixpkgs/maintainers/scripts/all-tarballs.nix>'
+*/
+
+import ../../pkgs/top-level/release.nix
+  { # Don't apply ‘hydraJob’ to jobs, because then we can't get to the
+    # dependency graph.
+    scrubJobs = false;
+    # No need to evaluate on i686.
+    supportedSystems = [ "x86_64-linux" ];
+    limitedSupportedSystems = [];
+  }
diff --git a/nixpkgs/maintainers/scripts/build.nix b/nixpkgs/maintainers/scripts/build.nix
new file mode 100644
index 000000000000..ca401700b4a6
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/build.nix
@@ -0,0 +1,55 @@
+{ maintainer
+, localSystem ? { system = args.system or builtins.currentSystem; }
+, system ? localSystem.system
+, crossSystem ? localSystem
+, ...
+}@args:
+
+# based on update.nix
+# nix-build build.nix --argstr maintainer <yourname>
+
+# to build for aarch64-linux using boot.binfmt.emulatedSystems:
+# nix-build build.nix --argstr maintainer <yourname> --argstr system aarch64-linux
+
+let
+  pkgs = import ./../../default.nix (removeAttrs args [ "maintainer" ]);
+  maintainer_ = pkgs.lib.maintainers.${maintainer};
+  packagesWith = cond: return: set:
+    (pkgs.lib.flatten
+      (pkgs.lib.mapAttrsToList
+        (name: pkg:
+          let
+            result = builtins.tryEval
+              (
+                if pkgs.lib.isDerivation pkg && cond name pkg then
+                  # Skip packages whose closure fails on evaluation.
+                  # This happens for pkgs like `python27Packages.djangoql`
+                  # that have disabled Python pkgs as dependencies.
+                  builtins.seq pkg.outPath
+                    [ (return name pkg) ]
+                else if pkg.recurseForDerivations or false || pkg.recurseForRelease or false
+                then packagesWith cond return pkg
+                else [ ]
+              );
+          in
+          if result.success then result.value
+          else [ ]
+        )
+        set
+      )
+    );
+in
+packagesWith
+  (name: pkg:
+    (
+      if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta
+      then (
+        if builtins.isList pkg.meta.maintainers
+        then builtins.elem maintainer_ pkg.meta.maintainers
+        else maintainer_ == pkg.meta.maintainers
+      )
+      else false
+    )
+  )
+  (name: pkg: pkg)
+  pkgs
diff --git a/nixpkgs/maintainers/scripts/check-hydra-by-maintainer.nix b/nixpkgs/maintainers/scripts/check-hydra-by-maintainer.nix
new file mode 100644
index 000000000000..326aae47f8c5
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/check-hydra-by-maintainer.nix
@@ -0,0 +1,68 @@
+{ maintainer }:
+let
+  pkgs = import ./../../default.nix { };
+  maintainer_ = pkgs.lib.maintainers.${maintainer};
+  packagesWith = cond: return: prefix: set:
+    (pkgs.lib.flatten
+      (pkgs.lib.mapAttrsToList
+        (name: pkg:
+          let
+            result = builtins.tryEval
+              (
+                if pkgs.lib.isDerivation pkg && cond name pkg then
+                # Skip packages whose closure fails on evaluation.
+                # This happens for pkgs like `python27Packages.djangoql`
+                # that have disabled Python pkgs as dependencies.
+                  builtins.seq pkg.outPath
+                    [ (return "${prefix}${name}") ]
+                else if pkg.recurseForDerivations or false || pkg.recurseForRelease or false
+                # then packagesWith cond return pkg
+                then packagesWith cond return "${name}." pkg
+                else [ ]
+              );
+          in
+          if result.success then result.value
+          else [ ]
+        )
+        set
+      )
+    );
+
+  packages = packagesWith
+    (name: pkg:
+      (
+        if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta
+        then
+          (
+            if builtins.isList pkg.meta.maintainers
+            then builtins.elem maintainer_ pkg.meta.maintainers
+            else maintainer_ == pkg.meta.maintainers
+          )
+        else false
+      )
+    )
+    (name: name)
+    ("")
+    pkgs;
+
+in
+pkgs.stdenv.mkDerivation {
+  name = "nixpkgs-update-script";
+  buildInputs = [ pkgs.hydra-check ];
+  buildCommand = ''
+    echo ""
+    echo "----------------------------------------------------------------"
+    echo ""
+    echo "nix-shell maintainers/scripts/check-hydra-by-maintainer.nix --argstr maintainer SuperSandro2000"
+    echo ""
+    echo "----------------------------------------------------------------"
+    exit 1
+  '';
+  shellHook = ''
+    unset shellHook # do not contaminate nested shells
+    echo "Please stand by"
+    echo nix-shell -p hydra-check --run "hydra-check ${builtins.concatStringsSep " " packages}"
+    nix-shell -p hydra-check --run "hydra-check ${builtins.concatStringsSep " " packages}"
+    exit $?
+  '';
+}
diff --git a/nixpkgs/maintainers/scripts/check-maintainer-github-handles.sh b/nixpkgs/maintainers/scripts/check-maintainer-github-handles.sh
new file mode 100755
index 000000000000..879a2e452cb3
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/check-maintainer-github-handles.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p jq parallel
+
+# Example how to work with the `lib.maintainers` attrset.
+# Can be used to check whether all user handles are still valid.
+
+set -e
+
+# nixpkgs='<nixpkgs>'
+# if [ -n "$1" ]; then
+
+function checkCommits {
+    local user="$1"
+    local tmp=$(mktemp)
+    curl --silent -w "%{http_code}" \
+         "https://github.com/NixOS/nixpkgs/commits?author=$user" \
+         > "$tmp"
+    # the last line of tmp contains the http status
+    local status=$(tail -n1 "$tmp")
+    local ret=
+    case $status in
+        200) if <"$tmp" grep -i "no commits found" > /dev/null; then
+                 ret=1
+             else
+                 ret=0
+             fi
+             ;;
+        # because of github’s hard request limits, this can take some time
+        429) sleep 2
+             printf "."
+             checkCommits "$user"
+             ret=$?
+             ;;
+        *)   printf "BAD STATUS: $(tail -n1 $tmp) for %s\n" "$user"; ret=1
+             ret=1
+             ;;
+    esac
+    rm "$tmp"
+    return $ret
+}
+export -f checkCommits
+
+function checkUser {
+    local user="$1"
+    local status=
+    status="$(curl --silent --head "https://github.com/${user}" | grep Status)"
+    # checks whether a user handle can be found on github
+    if [[ "$status" =~ 404 ]]; then
+        printf "%s\t\t\t\t%s\n" "$status" "$user"
+    # checks whether the user handle has any nixpkgs commits
+    elif checkCommits "$user"; then
+        printf "OK!\t\t\t\t%s\n" "$user"
+    else
+        printf "No Commits!\t\t\t%s\n" "$user"
+    fi
+}
+export -f checkUser
+
+# output the maintainers set as json
+# and filter out the github username of each maintainer (if it exists)
+# then check some at the same time
+nix-instantiate -A lib.maintainers --eval --strict --json \
+    | jq -r '.[]|.github|select(.)' \
+    | parallel -j5 checkUser
+
+# parallel -j100 checkUser ::: "eelco" "profpatsch" "Profpatsch" "a"
diff --git a/nixpkgs/maintainers/scripts/copy-tarballs.pl b/nixpkgs/maintainers/scripts/copy-tarballs.pl
new file mode 100755
index 000000000000..6a08eb88bf84
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/copy-tarballs.pl
@@ -0,0 +1,240 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp perlPackages.JSON perlPackages.LWPProtocolHttps nixUnstable nixUnstable.perl-bindings
+
+# This command uploads tarballs to tarballs.nixos.org, the
+# content-addressed cache used by fetchurl as a fallback for when
+# upstream tarballs disappear or change. Usage:
+#
+# 1) To upload one or more files:
+#
+#    $ copy-tarballs.pl --file /path/to/tarball.tar.gz
+#
+# 2) To upload all files obtained via calls to fetchurl in a Nix derivation:
+#
+#    $ copy-tarballs.pl --expr '(import <nixpkgs> {}).hello'
+
+use strict;
+use warnings;
+use File::Basename;
+use File::Path;
+use File::Slurp;
+use JSON;
+use Net::Amazon::S3;
+use Nix::Store;
+
+isValidPath("/nix/store/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo"); # FIXME: forces Nix::Store initialisation
+
+sub usage {
+    die "Syntax: $0 [--dry-run] [--exclude REGEXP] [--expr EXPR | --file FILES...]\n";
+}
+
+my $dryRun = 0;
+my $expr;
+my @fileNames;
+my $exclude;
+
+while (@ARGV) {
+    my $flag = shift @ARGV;
+
+    if ($flag eq "--expr") {
+        $expr = shift @ARGV or die "--expr requires an argument";
+    } elsif ($flag eq "--file") {
+        @fileNames = @ARGV;
+        last;
+    } elsif ($flag eq "--dry-run") {
+        $dryRun = 1;
+    } elsif ($flag eq "--exclude") {
+        $exclude = shift @ARGV or die "--exclude requires an argument";
+    } else {
+        usage();
+    }
+}
+
+
+# S3 setup.
+my $aws_access_key_id = $ENV{'AWS_ACCESS_KEY_ID'} or die "AWS_ACCESS_KEY_ID not set\n";
+my $aws_secret_access_key = $ENV{'AWS_SECRET_ACCESS_KEY'} or die "AWS_SECRET_ACCESS_KEY not set\n";
+
+my $s3 = Net::Amazon::S3->new(
+    { aws_access_key_id     => $aws_access_key_id,
+      aws_secret_access_key => $aws_secret_access_key,
+      retry                 => 1,
+      host                  => "s3-eu-west-1.amazonaws.com",
+    });
+
+my $bucket = $s3->bucket("nixpkgs-tarballs") or die;
+
+my $doWrite = 0;
+my $cacheFile = ($ENV{"HOME"} or die "\$HOME is not set") . "/.cache/nix/copy-tarballs";
+my %cache;
+$cache{$_} = 1 foreach read_file($cacheFile, err_mode => 'quiet', chomp => 1);
+$doWrite = 1;
+
+END() {
+    File::Path::mkpath(dirname($cacheFile), 0, 0755);
+    write_file($cacheFile, map { "$_\n" } keys %cache) if $doWrite;
+}
+
+sub alreadyMirrored {
+    my ($algo, $hash) = @_;
+    my $key = "$algo/$hash";
+    return 1 if defined $cache{$key};
+    my $res = defined $bucket->get_key($key);
+    $cache{$key} = 1 if $res;
+    return $res;
+}
+
+sub uploadFile {
+    my ($fn, $name) = @_;
+
+    my $md5_16 = hashFile("md5", 0, $fn) or die;
+    my $sha1_16 = hashFile("sha1", 0, $fn) or die;
+    my $sha256_32 = hashFile("sha256", 1, $fn) or die;
+    my $sha256_16 = hashFile("sha256", 0, $fn) or die;
+    my $sha512_32 = hashFile("sha512", 1, $fn) or die;
+    my $sha512_16 = hashFile("sha512", 0, $fn) or die;
+
+    my $mainKey = "sha512/$sha512_16";
+
+    # Create redirects from the other hash types.
+    sub redirect {
+        my ($name, $dest) = @_;
+        #print STDERR "linking $name to $dest...\n";
+        $bucket->add_key($name, "", {
+            'x-amz-website-redirect-location' => "/" . $dest,
+            'x-amz-acl' => "public-read"
+        })
+            or die "failed to create redirect from $name to $dest\n";
+        $cache{$name} = 1;
+    }
+    redirect "md5/$md5_16", $mainKey;
+    redirect "sha1/$sha1_16", $mainKey;
+    redirect "sha256/$sha256_32", $mainKey;
+    redirect "sha256/$sha256_16", $mainKey;
+    redirect "sha512/$sha512_32", $mainKey;
+
+    # Upload the file as sha512/<hash-in-base-16>.
+    print STDERR "uploading $fn to $mainKey...\n";
+    $bucket->add_key_filename($mainKey, $fn, {
+        'x-amz-meta-original-name' => $name,
+        'x-amz-acl' => "public-read"
+    })
+        or die "failed to upload $fn to $mainKey\n";
+    $cache{$mainKey} = 1;
+}
+
+if (scalar @fileNames) {
+    my $res = 0;
+    foreach my $fn (@fileNames) {
+        eval {
+            if (alreadyMirrored("sha512", hashFile("sha512", 0, $fn))) {
+                print STDERR "$fn is already mirrored\n";
+            } else {
+                uploadFile($fn, basename $fn);
+            }
+        };
+        if ($@) {
+            warn "$@";
+            $res = 1;
+        }
+    }
+    exit $res;
+}
+
+elsif (defined $expr) {
+
+    # Evaluate find-tarballs.nix.
+    my $pid = open(JSON, "-|", "nix-instantiate", "--eval", "--json", "--strict",
+                   "<nixpkgs/maintainers/scripts/find-tarballs.nix>",
+                   "--arg", "expr", $expr);
+    my $stdout = <JSON>;
+    waitpid($pid, 0);
+    die "$0: evaluation failed\n" if $?;
+    close JSON;
+
+    my $fetches = decode_json($stdout);
+
+    print STDERR "evaluation returned ", scalar(@{$fetches}), " tarballs\n";
+
+    # Check every fetchurl call discovered by find-tarballs.nix.
+    my $mirrored = 0;
+    my $have = 0;
+    foreach my $fetch (sort { $a->{url} cmp $b->{url} } @{$fetches}) {
+        my $url = $fetch->{url};
+        my $algo = $fetch->{type};
+        my $hash = $fetch->{hash};
+        my $name = $fetch->{name};
+
+        if ($hash =~ /^([a-z0-9]+)-([A-Za-z0-9+\/=]+)$/) {
+            $algo = $1;
+            $hash = `nix hash to-base16 $hash` or die;
+            chomp $hash;
+        }
+
+        next unless $algo =~ /^[a-z0-9]+$/;
+
+        # Convert non-SRI base-64 to base-16.
+        if ($hash =~ /^[A-Za-z0-9+\/=]+$/) {
+            $hash = `nix hash to-base16 --type '$algo' $hash` or die;
+            chomp $hash;
+        }
+
+        if (defined $ENV{DEBUG}) {
+            print "$url $algo $hash\n";
+            next;
+        }
+
+        if ($url !~ /^http:/ && $url !~ /^https:/ && $url !~ /^ftp:/ && $url !~ /^mirror:/) {
+            print STDERR "skipping $url (unsupported scheme)\n";
+            next;
+        }
+
+        next if defined $exclude && $url =~ /$exclude/;
+
+        if (alreadyMirrored($algo, $hash)) {
+            $have++;
+            next;
+        }
+
+        my $storePath = makeFixedOutputPath(0, $algo, $hash, $name);
+
+        print STDERR "mirroring $url ($storePath, $algo, $hash)...\n";
+
+        if ($dryRun) {
+            $mirrored++;
+            next;
+        }
+
+        # Substitute the output.
+        if (!isValidPath($storePath)) {
+            system("nix-store", "-r", $storePath);
+        }
+
+        # Otherwise download the file using nix-prefetch-url.
+        if (!isValidPath($storePath)) {
+            $ENV{QUIET} = 1;
+            $ENV{PRINT_PATH} = 1;
+            my $fh;
+            my $pid = open($fh, "-|", "nix-prefetch-url", "--type", $algo, $url, $hash) or die;
+            waitpid($pid, 0) or die;
+            if ($? != 0) {
+                print STDERR "failed to fetch $url: $?\n";
+                next;
+            }
+            <$fh>; my $storePath2 = <$fh>; chomp $storePath2;
+            if ($storePath ne $storePath2) {
+                warn "strange: $storePath != $storePath2\n";
+                next;
+            }
+        }
+
+        uploadFile($storePath, $url);
+        $mirrored++;
+    }
+
+    print STDERR "mirrored $mirrored files, already have $have files\n";
+}
+
+else {
+    usage();
+}
diff --git a/nixpkgs/maintainers/scripts/debian-patches.sh b/nixpkgs/maintainers/scripts/debian-patches.sh
new file mode 100755
index 000000000000..de6be136ca77
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/debian-patches.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# Download patches from debian project
+# Usage $0 debian-patches.txt debian-patches.nix
+# An example input and output files can be found in tools/graphics/plotutils
+
+DEB_URL=https://sources.debian.org/data/main
+declare -a deb_patches
+mapfile -t deb_patches < $1
+
+# First letter
+deb_prefix="${deb_patches[0]:0:1}"
+prefix="${DEB_URL}/${deb_prefix}/${deb_patches[0]}/debian/patches"
+
+if [[ -n "$2" ]]; then
+    exec 1> $2
+fi
+
+cat <<EOF
+# Generated by $(basename $0) from $(basename $1)
+let
+  prefix = "${prefix}";
+in
+[
+EOF
+for ((i=1;i < ${#deb_patches[@]}; ++i)); do
+    url="${prefix}/${deb_patches[$i]}"
+    sha256=$(nix-prefetch-url $url)
+    echo "  {"
+    echo "    url = \"\${prefix}/${deb_patches[$i]}\";"
+    echo "    sha256 = \"$sha256\";"
+    echo "  }"
+done
+echo "]"
diff --git a/nixpkgs/maintainers/scripts/dep-licenses.sh b/nixpkgs/maintainers/scripts/dep-licenses.sh
new file mode 100755
index 000000000000..28ad22c334fc
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/dep-licenses.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+attr=$1
+
+: ${NIXPKGS=/etc/nixos/nixpkgs}
+
+tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
+
+exitHandler() {
+    exitCode=$?
+    rm -rf "$tmp"
+    exit $exitCode
+}
+
+trap "exitHandler" EXIT
+
+# fetch the trace and the drvPath of the attribute.
+nix-instantiate $NIXPKGS -A $attr --show-trace > "$tmp/drvPath" 2> "$tmp/trace" || {
+  cat 1>&2 - "$tmp/trace" <<EOF
+An error occurred while evaluating $attr.
+EOF
+  exit 1
+}
+
+# generate a sed script based on the trace output.
+sed '
+  \,@:.*:@, {
+    # \1  *.drv file
+    # \2  License terms
+    s,.*@:drv:\(.*\):\(.*\):@.*,s!\1!\1: \2!; t;,
+    s!Str(\\\"\([^,]*\)\\\",\[\])!\1!g
+    b
+  }
+  d
+' "$tmp/trace" > "$tmp/filter.sed"
+
+if test $(wc -l "$tmp/filter.sed" | sed 's/ .*//') == 0; then
+  echo 1>&2 "
+No derivation mentionned in the stack trace.  Either your derivation does
+not use stdenv.mkDerivation or you forgot to use the stdenv adapter named
+traceDrvLicenses.
+
+-  defaultStdenv = allStdenvs.stdenv;
++  defaultStdenv = traceDrvLicenses allStdenvs.stdenv;
+"
+  exit 1
+fi
+
+
+# remove all dependencies which are using stdenv.mkDerivation
+echo '
+d
+' >> "$tmp/filter.sed"
+
+nix-store -q --tree $(cat "$tmp/drvPath") | sed -f "$tmp/filter.sed"
+
+exit 0;
diff --git a/nixpkgs/maintainers/scripts/eval-release.nix b/nixpkgs/maintainers/scripts/eval-release.nix
new file mode 100644
index 000000000000..bb9572cbc795
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/eval-release.nix
@@ -0,0 +1,24 @@
+# Evaluate `release.nix' like Hydra would.  Too bad nix-instantiate
+# can't to do this.
+
+with import ../../lib;
+
+let
+  trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
+
+  rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" "xbursttools" ];
+
+  # Add the ‘recurseForDerivations’ attribute to ensure that
+  # nix-instantiate recurses into nested attribute sets.
+  recurse = path: attrs:
+    if (builtins.tryEval attrs).success then
+      if isDerivation attrs
+      then
+        if (builtins.tryEval attrs.drvPath).success
+        then { inherit (attrs) name drvPath; }
+        else { failed = true; }
+      else { recurseForDerivations = true; } //
+           mapAttrs (n: v: let path' = path ++ [n]; in trace path' (recurse path' v)) attrs
+    else { };
+
+in recurse [] rel
diff --git a/nixpkgs/maintainers/scripts/eval-release.sh b/nixpkgs/maintainers/scripts/eval-release.sh
new file mode 100755
index 000000000000..e0dfaf1de74c
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/eval-release.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+if [[ -z "$VERBOSE" ]]; then
+  echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
+fi
+unset HOME NIXPKGS_CONFIG # Force empty config
+
+# With the default heap size (380MB), nix-instantiate fails:
+# Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS
+export GC_INITIAL_HEAP_SIZE=${GC_INITIAL_HEAP_SIZE:-2000000000} # 2GB
+nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null
diff --git a/nixpkgs/maintainers/scripts/fetch-kde-qt.sh b/nixpkgs/maintainers/scripts/fetch-kde-qt.sh
new file mode 100755
index 000000000000..22d78151978b
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/fetch-kde-qt.sh
@@ -0,0 +1,61 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils findutils gnused nix wget
+
+set -efuo pipefail
+
+SRCS=
+if [ -d "$1" ]; then
+    SRCS="$(pwd)/$1/srcs.nix"
+    . "$1/fetch.sh"
+else
+    SRCS="$(pwd)/$(dirname $1)/srcs.nix"
+    . "$1"
+fi
+
+tmp=$(mktemp -d)
+pushd $tmp >/dev/null
+wget -nH -r -c --no-parent "${WGET_ARGS[@]}" >/dev/null
+
+csv=$(mktemp)
+find . -type f | while read src; do
+    # Sanitize file name
+    filename=$(basename "$src" | tr '@' '_')
+    nameVersion="${filename%.tar.*}"
+    name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,' | sed -e 's,-everywhere-src$,,')
+    version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
+    echo "$name,$version,$src,$filename" >>$csv
+done
+
+cat >"$SRCS" <<EOF
+# DO NOT EDIT! This file is generated automatically.
+# Command: $0 $@
+{ fetchurl, mirror }:
+
+{
+EOF
+
+gawk -F , "{ print \$1 }" $csv | sort | uniq | while read name; do
+    versions=$(gawk -F , "/^$name,/ { print \$2 }" $csv)
+    latestVersion=$(echo "$versions" | sort -rV | head -n 1)
+    src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" $csv)
+    filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" $csv)
+    url="${src:2}"
+    sha256=$(nix-hash --type sha256 --base32 --flat "$src")
+    cat >>"$SRCS" <<EOF
+  $name = {
+    version = "$latestVersion";
+    src = fetchurl {
+      url = "\${mirror}/$url";
+      sha256 = "$sha256";
+      name = "$filename";
+    };
+  };
+EOF
+done
+
+echo "}" >>"$SRCS"
+
+popd >/dev/null
+rm -fr $tmp >/dev/null
+
+rm -f $csv >/dev/null
diff --git a/nixpkgs/maintainers/scripts/find-tarballs.nix b/nixpkgs/maintainers/scripts/find-tarballs.nix
new file mode 100644
index 000000000000..52cce9099183
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/find-tarballs.nix
@@ -0,0 +1,50 @@
+# This expression returns a list of all fetchurl calls used by ‘expr’.
+
+with import ../.. { };
+with lib;
+
+{ expr }:
+
+let
+
+  root = expr;
+
+  uniqueUrls = map (x: x.file) (genericClosure {
+    startSet = map (file: { key = file.url; inherit file; }) urls;
+    operator = const [ ];
+  });
+
+  urls = map (drv: { url = head (drv.urls or [ drv.url ]); hash = drv.outputHash; type = drv.outputHashAlgo; name = drv.name; }) fetchurlDependencies;
+
+  fetchurlDependencies =
+    filter
+      (drv: drv.outputHash or "" != "" && drv.outputHashMode or "flat" == "flat"
+          && drv.postFetch or "" == "" && (drv ? url || drv ? urls))
+      dependencies;
+
+  dependencies = map (x: x.value) (genericClosure {
+    startSet = map keyDrv (derivationsIn' root);
+    operator = { key, value }: map keyDrv (immediateDependenciesOf value);
+  });
+
+  derivationsIn' = x:
+    if !canEval x then []
+    else if isDerivation x then optional (canEval x.drvPath) x
+    else if isList x then concatLists (map derivationsIn' x)
+    else if isAttrs x then concatLists (mapAttrsToList (n: v: addErrorContext "while finding tarballs in '${n}':" (derivationsIn' v)) x)
+    else [ ];
+
+  keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { };
+
+  immediateDependenciesOf = drv:
+    concatLists (mapAttrsToList (n: v: derivationsIn v) (removeAttrs drv ["meta" "passthru"]));
+
+  derivationsIn = x:
+    if !canEval x then []
+    else if isDerivation x then optional (canEval x.drvPath) x
+    else if isList x then concatLists (map derivationsIn x)
+    else [ ];
+
+  canEval = val: (builtins.tryEval val).success;
+
+in uniqueUrls
diff --git a/nixpkgs/maintainers/scripts/haskell/hydra-report.hs b/nixpkgs/maintainers/scripts/haskell/hydra-report.hs
new file mode 100755
index 000000000000..fd6430d43c9a
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/hydra-report.hs
@@ -0,0 +1,408 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -p "haskellPackages.ghcWithPackages (p: [p.aeson p.req])"
+#! nix-shell -p hydra-unstable
+#! nix-shell -i runhaskell
+
+{-
+
+The purpose of this script is
+
+1) download the state of the nixpkgs/haskell-updates job from hydra (with get-report)
+2) print a summary of the state suitable for pasting into a github comment (with ping-maintainers)
+3) print a list of broken packages suitable for pasting into configuration-hackage2nix.yaml
+
+Because step 1) is quite expensive and takes roughly ~5 minutes the result is cached in a json file in XDG_CACHE.
+
+-}
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE MultiWayIf #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TupleSections #-}
+{-# OPTIONS_GHC -Wall #-}
+
+import Control.Monad (forM_, (<=<))
+import Control.Monad.Trans (MonadIO (liftIO))
+import Data.Aeson (
+   FromJSON,
+   ToJSON,
+   decodeFileStrict',
+   eitherDecodeStrict',
+   encodeFile,
+ )
+import Data.Foldable (Foldable (toList), foldl')
+import Data.List.NonEmpty (NonEmpty, nonEmpty)
+import qualified Data.List.NonEmpty as NonEmpty
+import Data.Map.Strict (Map)
+import qualified Data.Map.Strict as Map
+import Data.Maybe (fromMaybe, mapMaybe)
+import Data.Monoid (Sum (Sum, getSum))
+import Data.Sequence (Seq)
+import qualified Data.Sequence as Seq
+import Data.Set (Set)
+import qualified Data.Set as Set
+import Data.Text (Text)
+import qualified Data.Text as Text
+import Data.Text.Encoding (encodeUtf8)
+import Data.Time (defaultTimeLocale, formatTime, getCurrentTime)
+import Data.Time.Clock (UTCTime)
+import GHC.Generics (Generic)
+import Network.HTTP.Req (
+   GET (GET),
+   NoReqBody (NoReqBody),
+   defaultHttpConfig,
+   header,
+   https,
+   jsonResponse,
+   req,
+   responseBody,
+   responseTimeout,
+   runReq,
+   (/:),
+ )
+import System.Directory (XdgDirectory (XdgCache), getXdgDirectory)
+import System.Environment (getArgs)
+import System.Process (readProcess)
+import Prelude hiding (id)
+
+newtype JobsetEvals = JobsetEvals
+   { evals :: Seq Eval
+   }
+   deriving (Generic, ToJSON, FromJSON, Show)
+
+newtype Nixpkgs = Nixpkgs {revision :: Text}
+   deriving (Generic, ToJSON, FromJSON, Show)
+
+newtype JobsetEvalInputs = JobsetEvalInputs {nixpkgs :: Nixpkgs}
+   deriving (Generic, ToJSON, FromJSON, Show)
+
+data Eval = Eval
+   { id :: Int
+   , jobsetevalinputs :: JobsetEvalInputs
+   }
+   deriving (Generic, ToJSON, FromJSON, Show)
+
+data Build = Build
+   { job :: Text
+   , buildstatus :: Maybe Int
+   , finished :: Int
+   , id :: Int
+   , nixname :: Text
+   , system :: Text
+   , jobsetevals :: Seq Int
+   }
+   deriving (Generic, ToJSON, FromJSON, Show)
+
+main :: IO ()
+main = do
+   args <- getArgs
+   case args of
+      ["get-report"] -> getBuildReports
+      ["ping-maintainers"] -> printMaintainerPing
+      ["mark-broken-list"] -> printMarkBrokenList
+      _ -> putStrLn "Usage: get-report | ping-maintainers | mark-broken-list"
+
+reportFileName :: IO FilePath
+reportFileName = getXdgDirectory XdgCache "haskell-updates-build-report.json"
+
+showT :: Show a => a -> Text
+showT = Text.pack . show
+
+getBuildReports :: IO ()
+getBuildReports = runReq defaultHttpConfig do
+   evalMay <- Seq.lookup 0 . evals <$> myReq (https "hydra.nixos.org" /: "jobset" /: "nixpkgs" /: "haskell-updates" /: "evals") mempty
+   eval@Eval{id} <- maybe (liftIO $ fail "No Evalution found") pure evalMay
+   liftIO . putStrLn $ "Fetching evaluation " <> show id <> " from Hydra. This might take a few minutes..."
+   buildReports :: Seq Build <- myReq (https "hydra.nixos.org" /: "eval" /: showT id /: "builds") (responseTimeout 600000000)
+   liftIO do
+      fileName <- reportFileName
+      putStrLn $ "Finished fetching all builds from Hydra, saving report as " <> fileName
+      now <- getCurrentTime
+      encodeFile fileName (eval, now, buildReports)
+  where
+   myReq query option = responseBody <$> req GET query NoReqBody jsonResponse (header "User-Agent" "hydra-report.hs/v1 (nixpkgs;maintainers/scripts/haskell)" <> option)
+
+hydraEvalCommand :: FilePath
+hydraEvalCommand = "hydra-eval-jobs"
+
+hydraEvalParams :: [String]
+hydraEvalParams = ["-I", ".", "pkgs/top-level/release-haskell.nix"]
+
+handlesCommand :: FilePath
+handlesCommand = "nix-instantiate"
+
+handlesParams :: [String]
+handlesParams = ["--eval", "--strict", "--json", "-"]
+
+handlesExpression :: String
+handlesExpression = "with import ./. {}; with lib; zipAttrsWith (_: builtins.head) (mapAttrsToList (_: v: if v ? github then { \"${v.email}\" = v.github; } else {}) (import maintainers/maintainer-list.nix))"
+
+-- | This newtype is used to parse a Hydra job output from @hydra-eval-jobs@.
+-- The only field we are interested in is @maintainers@, which is why this
+-- is just a newtype.
+--
+-- Note that there are occassionally jobs that don't have a maintainers
+-- field, which is why this has to be @Maybe Text@.
+newtype Maintainers = Maintainers { maintainers :: Maybe Text }
+  deriving stock (Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+-- | This is a 'Map' from Hydra job name to maintainer email addresses.
+--
+-- It has values similar to the following:
+--
+-- @@
+--  fromList
+--    [ ("arion.aarch64-linux", Maintainers (Just "robert@example.com"))
+--    , ("bench.x86_64-linux", Maintainers (Just ""))
+--    , ("conduit.x86_64-linux", Maintainers (Just "snoy@man.com, web@ber.com"))
+--    , ("lens.x86_64-darwin", Maintainers (Just "ek@category.com"))
+--    ]
+-- @@
+--
+-- Note that Hydra jobs without maintainers will have an empty string for the
+-- maintainer list.
+type HydraJobs = Map Text Maintainers
+
+-- | Map of email addresses to GitHub handles.
+-- This is built from the file @../../maintainer-list.nix@.
+--
+-- It has values similar to the following:
+--
+-- @@
+--  fromList
+--    [ ("robert@example.com", "rob22")
+--    , ("ek@category.com", "edkm")
+--    ]
+-- @@
+type EmailToGitHubHandles = Map Text Text
+
+-- | Map of Hydra jobs to maintainer GitHub handles.
+--
+-- It has values similar to the following:
+--
+-- @@
+--  fromList
+--    [ ("arion.aarch64-linux", ["rob22"])
+--    , ("conduit.x86_64-darwin", ["snoyb", "webber"])
+--    ]
+-- @@
+type MaintainerMap = Map Text (NonEmpty Text)
+
+-- | Generate a mapping of Hydra job names to maintainer GitHub handles.
+getMaintainerMap :: IO MaintainerMap
+getMaintainerMap = do
+   hydraJobs :: HydraJobs <-
+      readJSONProcess hydraEvalCommand hydraEvalParams "" "Failed to decode hydra-eval-jobs output: "
+   handlesMap :: EmailToGitHubHandles <-
+      readJSONProcess handlesCommand handlesParams handlesExpression "Failed to decode nix output for lookup of github handles: "
+   pure $ Map.mapMaybe (splitMaintainersToGitHubHandles handlesMap) hydraJobs
+   where
+   -- Split a comma-spearated string of Maintainers into a NonEmpty list of
+   -- GitHub handles.
+   splitMaintainersToGitHubHandles
+      :: EmailToGitHubHandles -> Maintainers -> Maybe (NonEmpty Text)
+   splitMaintainersToGitHubHandles handlesMap (Maintainers maint) =
+      nonEmpty .  mapMaybe (`Map.lookup` handlesMap) .  Text.splitOn ", " $ fromMaybe "" maint
+
+-- | Run a process that produces JSON on stdout and and decode the JSON to a
+-- data type.
+--
+-- If the JSON-decoding fails, throw the JSON-decoding error.
+readJSONProcess
+   :: FromJSON a
+   => FilePath -- ^ Filename of executable.
+   -> [String] -- ^ Arguments
+   -> String -- ^ stdin to pass to the process
+   -> String -- ^ String to prefix to JSON-decode error.
+   -> IO a
+readJSONProcess exe args input err = do
+   output <- readProcess exe args input
+   let eitherDecodedOutput = eitherDecodeStrict' . encodeUtf8 . Text.pack $ output
+   case eitherDecodedOutput of
+     Left decodeErr -> error $ err <> decodeErr <> "\nRaw: '" <> take 1000 output <> "'"
+     Right decodedOutput -> pure decodedOutput
+
+-- BuildStates are sorted by subjective importance/concerningness
+data BuildState
+  = Failed
+  | DependencyFailed
+  | OutputLimitExceeded
+  | Unknown (Maybe Int)
+  | TimedOut
+  | Canceled
+  | HydraFailure
+  | Unfinished
+  | Success
+  deriving stock (Show, Eq, Ord)
+
+icon :: BuildState -> Text
+icon = \case
+   Failed -> ":x:"
+   DependencyFailed -> ":heavy_exclamation_mark:"
+   OutputLimitExceeded -> ":warning:"
+   Unknown x -> "unknown code " <> showT x
+   TimedOut -> ":hourglass::no_entry_sign:"
+   Canceled -> ":no_entry_sign:"
+   Unfinished -> ":hourglass_flowing_sand:"
+   HydraFailure -> ":construction:"
+   Success -> ":heavy_check_mark:"
+
+platformIcon :: Platform -> Text
+platformIcon (Platform x) = case x of
+   "x86_64-linux" -> ":penguin:"
+   "aarch64-linux" -> ":iphone:"
+   "x86_64-darwin" -> ":apple:"
+   _ -> x
+
+data BuildResult = BuildResult {state :: BuildState, id :: Int} deriving (Show, Eq, Ord)
+newtype Platform = Platform {platform :: Text} deriving (Show, Eq, Ord)
+newtype Table row col a = Table (Map (row, col) a)
+type StatusSummary = Map Text (Table Text Platform BuildResult, Set Text)
+
+instance (Ord row, Ord col, Semigroup a) => Semigroup (Table row col a) where
+   Table l <> Table r = Table (Map.unionWith (<>) l r)
+instance (Ord row, Ord col, Semigroup a) => Monoid (Table row col a) where
+   mempty = Table Map.empty
+instance Functor (Table row col) where
+   fmap f (Table a) = Table (fmap f a)
+instance Foldable (Table row col) where
+   foldMap f (Table a) = foldMap f a
+
+buildSummary :: MaintainerMap -> Seq Build -> StatusSummary
+buildSummary maintainerMap = foldl (Map.unionWith unionSummary) Map.empty . fmap toSummary
+  where
+   unionSummary (Table l, l') (Table r, r') = (Table $ Map.union l r, l' <> r')
+   toSummary Build{finished, buildstatus, job, id, system} = Map.singleton name (Table (Map.singleton (set, Platform system) (BuildResult state id)), maintainers)
+     where
+      state :: BuildState
+      state = case (finished, buildstatus) of
+         (0, _) -> Unfinished
+         (_, Just 0) -> Success
+         (_, Just 1) -> Failed
+         (_, Just 2) -> DependencyFailed
+         (_, Just 3) -> HydraFailure
+         (_, Just 4) -> Canceled
+         (_, Just 7) -> TimedOut
+         (_, Just 11) -> OutputLimitExceeded
+         (_, i) -> Unknown i
+      packageName = fromMaybe job (Text.stripSuffix ("." <> system) job)
+      splitted = nonEmpty $ Text.splitOn "." packageName
+      name = maybe packageName NonEmpty.last splitted
+      set = maybe "" (Text.intercalate "." . NonEmpty.init) splitted
+      maintainers = maybe mempty (Set.fromList . toList) (Map.lookup job maintainerMap)
+
+readBuildReports :: IO (Eval, UTCTime, Seq Build)
+readBuildReports = do
+   file <- reportFileName
+   fromMaybe (error $ "Could not decode " <> file) <$> decodeFileStrict' file
+
+sep :: Text
+sep = " | "
+joinTable :: [Text] -> Text
+joinTable t = sep <> Text.intercalate sep t <> sep
+
+type NumSummary = Table Platform BuildState Int
+
+printTable :: (Ord rows, Ord cols) => Text -> (rows -> Text) -> (cols -> Text) -> (entries -> Text) -> Table rows cols entries -> [Text]
+printTable name showR showC showE (Table mapping) = joinTable <$> (name : map showC cols) : replicate (length cols + sepsInName + 1) "---" : map printRow rows
+  where
+   sepsInName = Text.count "|" name
+   printRow row = showR row : map (\col -> maybe "" showE (Map.lookup (row, col) mapping)) cols
+   rows = toList $ Set.fromList (fst <$> Map.keys mapping)
+   cols = toList $ Set.fromList (snd <$> Map.keys mapping)
+
+printJob :: Int -> Text -> (Table Text Platform BuildResult, Text) -> [Text]
+printJob evalId name (Table mapping, maintainers) =
+   if length sets <= 1
+      then map printSingleRow sets
+      else ["- [ ] " <> makeJobSearchLink "" name <> " " <> maintainers] <> map printRow sets
+  where
+   printRow set = "  - " <> printState set <> " " <> makeJobSearchLink set (if Text.null set then "toplevel" else set)
+   printSingleRow set = "- [ ] " <> printState set <> " " <> makeJobSearchLink set (makePkgName set) <> " " <> maintainers
+   makePkgName set = (if Text.null set then "" else set <> ".") <> name
+   printState set = Text.intercalate " " $ map (\pf -> maybe "" (label pf) $ Map.lookup (set, pf) mapping) platforms
+   makeJobSearchLink set linkLabel= makeSearchLink evalId linkLabel (makePkgName set)
+   sets = toList $ Set.fromList (fst <$> Map.keys mapping)
+   platforms = toList $ Set.fromList (snd <$> Map.keys mapping)
+   label pf (BuildResult s i) = "[[" <> platformIcon pf <> icon s <> "]](https://hydra.nixos.org/build/" <> showT i <> ")"
+
+makeSearchLink :: Int -> Text -> Text -> Text
+makeSearchLink evalId linkLabel query = "[" <> linkLabel <> "](" <> "https://hydra.nixos.org/eval/" <> showT evalId <> "?filter=" <> query <> ")"
+
+statusToNumSummary :: StatusSummary -> NumSummary
+statusToNumSummary = fmap getSum . foldMap (fmap Sum . jobTotals)
+
+jobTotals :: (Table Text Platform BuildResult, a) -> Table Platform BuildState Int
+jobTotals (Table mapping, _) = getSum <$> Table (Map.foldMapWithKey (\(_, platform) (BuildResult buildstate _) -> Map.singleton (platform, buildstate) (Sum 1)) mapping)
+
+details :: Text -> [Text] -> [Text]
+details summary content = ["<details><summary>" <> summary <> " </summary>", ""] <> content <> ["</details>", ""]
+
+printBuildSummary :: Eval -> UTCTime -> StatusSummary -> Text
+printBuildSummary
+   Eval{id, jobsetevalinputs = JobsetEvalInputs{nixpkgs = Nixpkgs{revision}}}
+   fetchTime
+   summary =
+      Text.unlines $
+         headline <> totals
+            <> optionalList "#### Maintained packages with build failure" (maintainedList fails)
+            <> optionalList "#### Maintained packages with failed dependency" (maintainedList failedDeps)
+            <> optionalList "#### Maintained packages with unknown error" (maintainedList unknownErr)
+            <> optionalHideableList "#### Unmaintained packages with build failure" (unmaintainedList fails)
+            <> optionalHideableList "#### Unmaintained packages with failed dependency" (unmaintainedList failedDeps)
+            <> optionalHideableList "#### Unmaintained packages with unknown error" (unmaintainedList unknownErr)
+            <> footer
+     where
+      footer = ["*Report generated with [maintainers/scripts/haskell/hydra-report.hs](https://github.com/NixOS/nixpkgs/blob/haskell-updates/maintainers/scripts/haskell/hydra-report.sh)*"]
+      totals =
+         [ "#### Build summary"
+         , ""
+         ]
+            <> printTable "Platform" (\x -> makeSearchLink id (platform x <> " " <> platformIcon x) ("." <> platform x)) (\x -> showT x <> " " <> icon x) showT (statusToNumSummary summary)
+      headline =
+         [ "### [haskell-updates build report from hydra](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates)"
+         , "*evaluation ["
+            <> showT id
+            <> "](https://hydra.nixos.org/eval/"
+            <> showT id
+            <> ") of nixpkgs commit ["
+            <> Text.take 7 revision
+            <> "](https://github.com/NixOS/nixpkgs/commits/"
+            <> revision
+            <> ") as of "
+            <> Text.pack (formatTime defaultTimeLocale "%Y-%m-%d %H:%M UTC" fetchTime)
+            <> "*"
+         ]
+      jobsByState predicate = Map.filter (predicate . foldl' min Success . fmap state . fst) summary
+      fails = jobsByState (== Failed)
+      failedDeps = jobsByState (== DependencyFailed)
+      unknownErr = jobsByState (\x -> x > DependencyFailed && x < TimedOut)
+      withMaintainer = Map.mapMaybe (\(x, m) -> (x,) <$> nonEmpty (Set.toList m))
+      withoutMaintainer = Map.mapMaybe (\(x, m) -> if Set.null m then Just x else Nothing)
+      optionalList heading list = if null list then mempty else [heading] <> list
+      optionalHideableList heading list = if null list then mempty else [heading] <> details (showT (length list) <> " job(s)") list
+      maintainedList = showMaintainedBuild <=< Map.toList . withMaintainer
+      unmaintainedList = showBuild <=< Map.toList . withoutMaintainer
+      showBuild (name, table) = printJob id name (table, "")
+      showMaintainedBuild (name, (table, maintainers)) = printJob id name (table, Text.intercalate " " (fmap ("@" <>) (toList maintainers)))
+
+printMaintainerPing :: IO ()
+printMaintainerPing = do
+   maintainerMap <- getMaintainerMap
+   (eval, fetchTime, buildReport) <- readBuildReports
+   putStrLn (Text.unpack (printBuildSummary eval fetchTime (buildSummary maintainerMap buildReport)))
+
+printMarkBrokenList :: IO ()
+printMarkBrokenList = do
+   (_, _, buildReport) <- readBuildReports
+   forM_ buildReport \Build{buildstatus, job} ->
+      case (buildstatus, Text.splitOn "." job) of
+         (Just 1, ["haskellPackages", name, "x86_64-linux"]) -> putStrLn $ "  - " <> Text.unpack name
+         _ -> pure ()
diff --git a/nixpkgs/maintainers/scripts/haskell/mark-broken.sh b/nixpkgs/maintainers/scripts/haskell/mark-broken.sh
new file mode 100755
index 000000000000..71568ef6f200
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/mark-broken.sh
@@ -0,0 +1,46 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils git -I nixpkgs=.
+
+# This script uses the data pulled with
+# maintainers/scripts/haskell/hydra-report.hs get-report to produce a list of
+# failing builds that get written to the hackage2nix config. Then
+# hackage-packages.nix gets regenerated and transitive-broken packages get
+# marked as dont-distribute in the config as well.
+# This should disable builds for most failing jobs in the haskell-updates jobset.
+
+set -euo pipefail
+
+broken_config="pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml"
+
+tmpfile=$(mktemp)
+trap "rm ${tmpfile}" 0
+
+echo "Remember that you need to manually run 'maintainers/scripts/haskell/hydra-report.hs get-report' sometime before running this script."
+echo "Generating a list of broken builds and displaying for manual confirmation ..."
+maintainers/scripts/haskell/hydra-report.hs mark-broken-list | sort -i > "$tmpfile"
+
+$EDITOR "$tmpfile"
+
+tail -n +3 "$broken_config" >> "$tmpfile"
+
+cat > "$broken_config" << EOF
+broken-packages:
+  # These packages don't compile.
+EOF
+
+# clear environment here to avoid things like allowing broken builds in
+sort -iu "$tmpfile" >> "$broken_config"
+env -i maintainers/scripts/haskell/regenerate-hackage-packages.sh
+env -i maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
+env -i maintainers/scripts/haskell/regenerate-hackage-packages.sh
+
+if [[ "${1:-}" == "--do-commit" ]]; then
+git add $broken_config
+git add pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml
+git add pkgs/development/haskell-modules/hackage-packages.nix
+git commit -F - << EOF
+haskellPackages: mark builds failing on hydra as broken
+
+This commit has been generated by maintainers/scripts/haskell/mark-broken.sh
+EOF
+fi
diff --git a/nixpkgs/maintainers/scripts/haskell/regenerate-hackage-packages.sh b/nixpkgs/maintainers/scripts/haskell/regenerate-hackage-packages.sh
new file mode 100755
index 000000000000..285f6ed7cf94
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/regenerate-hackage-packages.sh
@@ -0,0 +1,46 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils haskellPackages.cabal2nix-unstable git nix -I nixpkgs=.
+
+# This script is used to regenerate nixpkgs' Haskell package set, using the
+# tool hackage2nix from the nixos/cabal2nix repo. hackage2nix looks at the
+# config files in pkgs/development/haskell-modules/configuration-hackage2nix
+# and generates a Nix expression for package version specified there, using the
+# Cabal files from the Hackage database (available under all-cabal-hashes) and
+# its companion tool cabal2nix.
+#
+# Related scripts are update-hackage.sh, for updating the snapshot of the
+# Hackage database used by hackage2nix, and update-cabal2nix-unstable.sh,
+# for updating the version of hackage2nix used to perform this task.
+
+set -euo pipefail
+
+HACKAGE2NIX="${HACKAGE2NIX:-hackage2nix}"
+
+# To prevent hackage2nix fails because of encoding.
+# See: https://github.com/NixOS/nixpkgs/pull/122023
+export LC_ALL=C.UTF-8
+
+extraction_derivation='with import ./. {}; runCommand "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
+unpacked_hackage="$(nix-build -E "$extraction_derivation" --no-out-link)"
+config_dir=pkgs/development/haskell-modules/configuration-hackage2nix
+
+echo "Starting hackage2nix to regenerate pkgs/development/haskell-modules/hackage-packages.nix ..."
+"$HACKAGE2NIX" \
+   --hackage "$unpacked_hackage" \
+   --preferred-versions <(for n in "$unpacked_hackage"/*/preferred-versions; do cat "$n"; echo; done) \
+   --nixpkgs "$PWD" \
+   --config "$config_dir/main.yaml" \
+   --config "$config_dir/stackage.yaml" \
+   --config "$config_dir/broken.yaml" \
+   --config "$config_dir/transitive-broken.yaml"
+
+if [[ "${1:-}" == "--do-commit" ]]; then
+git add pkgs/development/haskell-modules/hackage-packages.nix
+git commit -F - << EOF
+haskellPackages: regenerate package set based on current config
+
+This commit has been generated by maintainers/scripts/haskell/regenerate-hackage-packages.sh
+EOF
+fi
+
+echo "Regeneration of hackage-packages.nix finished."
diff --git a/nixpkgs/maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh b/nixpkgs/maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
new file mode 100755
index 000000000000..94104e00edb8
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
@@ -0,0 +1,15 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils nix gnused -I nixpkgs=.
+
+config_file=pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml
+
+cat > $config_file << EOF
+# This file is automatically generated by
+# maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
+# It is supposed to list all haskellPackages that cannot evaluate because they
+# depend on a dependency marked as broken.
+dont-distribute-packages:
+EOF
+
+echo "Regenerating list of transitive broken packages ..."
+echo -e $(nix-instantiate --eval --strict maintainers/scripts/haskell/transitive-broken-packages.nix) | sed 's/\"//' | LC_ALL=C.UTF-8 sort -i >> $config_file
diff --git a/nixpkgs/maintainers/scripts/haskell/transitive-broken-packages.nix b/nixpkgs/maintainers/scripts/haskell/transitive-broken-packages.nix
new file mode 100644
index 000000000000..d4ddaa957658
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/transitive-broken-packages.nix
@@ -0,0 +1,16 @@
+let
+  nixpkgs = import ../../..;
+  inherit (nixpkgs {}) pkgs lib;
+  getEvaluating = x:
+    builtins.attrNames (
+      lib.filterAttrs (
+        _: v: (builtins.tryEval (v.outPath or null)).success && lib.isDerivation v && !v.meta.broken
+      ) x
+    );
+  brokenDeps = lib.subtractLists
+    (getEvaluating pkgs.haskellPackages)
+    (getEvaluating (nixpkgs { config.allowBroken = true; }).haskellPackages);
+in
+''
+  ${lib.concatMapStringsSep "\n" (x: "  - ${x}") brokenDeps}
+''
diff --git a/nixpkgs/maintainers/scripts/haskell/update-cabal2nix-unstable.sh b/nixpkgs/maintainers/scripts/haskell/update-cabal2nix-unstable.sh
new file mode 100755
index 000000000000..415837045602
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/update-cabal2nix-unstable.sh
@@ -0,0 +1,17 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils curl jq gnused haskellPackages.cabal2nix-unstable -I nixpkgs=.
+
+# Updates cabal2nix-unstable to the latest master of the nixos/cabal2nix repository.
+# See regenerate-hackage-packages.sh for details on the purpose of this script.
+
+set -euo pipefail
+
+# fetch current master HEAD from Github
+head_info="$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/NixOS/cabal2nix/branches/master)"
+# extract commit hash
+commit="$(jq -r .commit.sha <<< "$head_info")"
+# extract commit timestamp and convert to date
+date="$(date "--date=$(jq -r .commit.commit.committer.date <<< "$head_info")" +%F)"
+# generate nix expression from cabal file, replacing the version with the commit date
+echo '# This file defines cabal2nix-unstable, used by maintainers/scripts/haskell/regenerate-hackage-packages.sh.' > pkgs/development/haskell-modules/cabal2nix-unstable.nix
+cabal2nix "https://github.com/NixOS/cabal2nix/archive/$commit.tar.gz" | sed -e 's/version = ".*"/version = "'"unstable-$date"'"/' >> pkgs/development/haskell-modules/cabal2nix-unstable.nix
diff --git a/nixpkgs/maintainers/scripts/haskell/update-hackage.sh b/nixpkgs/maintainers/scripts/haskell/update-hackage.sh
new file mode 100755
index 000000000000..a7cfecbbb0fe
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/update-hackage.sh
@@ -0,0 +1,35 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused -I nixpkgs=.
+
+# See regenerate-hackage-packages.sh for details on the purpose of this script.
+
+set -euo pipefail
+
+pin_file=pkgs/data/misc/hackage/pin.json
+current_commit="$(jq -r .commit $pin_file)"
+old_date="$(jq -r .msg $pin_file | sed 's/Update from Hackage at //')"
+git_info="$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/commercialhaskell/all-cabal-hashes/branches/hackage)"
+head_commit="$(echo "$git_info" | jq -r .commit.sha)"
+commit_msg="$(echo "$git_info" | jq -r .commit.commit.message)"
+new_date="$(echo "$commit_msg" | sed 's/Update from Hackage at //')"
+
+if [ "$current_commit" != "$head_commit" ]; then
+   url="https://github.com/commercialhaskell/all-cabal-hashes/archive/$head_commit.tar.gz"
+   hash="$(nix-prefetch-url "$url")"
+   jq -n \
+     --arg commit "$head_commit" \
+     --arg hash "$hash" \
+     --arg url "$url" \
+     --arg commit_msg "$commit_msg" \
+     '{commit: $commit, url: $url, sha256: $hash, msg: $commit_msg}' \
+     > $pin_file
+fi
+
+if [[ "${1:-}" == "--do-commit" ]]; then
+git add pkgs/data/misc/hackage/pin.json
+git commit -F - << EOF
+all-cabal-hashes: $old_date -> $new_date
+
+This commit has been generated by maintainers/scripts/haskell/update-hackage.sh
+EOF
+fi
diff --git a/nixpkgs/maintainers/scripts/haskell/update-stackage.sh b/nixpkgs/maintainers/scripts/haskell/update-stackage.sh
new file mode 100755
index 000000000000..ecf38dc4b900
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/haskell/update-stackage.sh
@@ -0,0 +1,57 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused gnugrep -I nixpkgs=.
+
+set -eu -o pipefail
+
+tmpfile=$(mktemp "update-stackage.XXXXXXX")
+# shellcheck disable=SC2064
+
+stackage_config="pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml"
+
+trap "rm ${tmpfile} ${tmpfile}.new" 0
+touch "$tmpfile" "$tmpfile.new" # Creating files here so that trap creates no errors.
+
+curl -L -s "https://stackage.org/lts/cabal.config" >"$tmpfile"
+old_version=$(grep "# Stackage" $stackage_config | sed -E 's/.*([0-9]{2}\.[0-9]+)/\1/')
+version=$(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.lts-//p" "$tmpfile")
+
+if [[ "$old_version" == "$version" ]]; then
+   echo "No new stackage version"
+   exit 0 # Nothing to do
+fi
+
+echo "Updating Stackage LTS from $old_version to $version."
+
+# Create a simple yaml version of the file.
+sed -r \
+    -e '/^--/d' \
+    -e 's|^constraints:||' \
+    -e 's|^ +|  - |' \
+    -e 's|,$||' \
+    -e '/installed$/d' \
+    -e '/^$/d' \
+    < "${tmpfile}" | sort --ignore-case >"${tmpfile}.new"
+
+cat > $stackage_config << EOF
+# Stackage LTS $version
+# This file is auto-generated by
+# maintainers/scripts/haskell/update-stackage.sh
+default-package-overrides:
+EOF
+
+# Drop restrictions on some tools where we always want the latest version.
+sed -r \
+    -e '/ cabal2nix /d' \
+    -e '/ distribution-nixpkgs /d' \
+    -e '/ jailbreak-cabal /d' \
+    -e '/ language-nix /d' \
+    < "${tmpfile}.new" >> $stackage_config
+
+if [[ "${1:-}" == "--do-commit" ]]; then
+git add $stackage_config
+git commit -F - << EOF
+haskellPackages: stackage-lts $old_version -> $version
+
+This commit has been generated by maintainers/scripts/haskell/update-stackage.sh
+EOF
+fi
diff --git a/nixpkgs/maintainers/scripts/hydra-eval-failures.py b/nixpkgs/maintainers/scripts/hydra-eval-failures.py
new file mode 100755
index 000000000000..b7518b128574
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/hydra-eval-failures.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ requests pyquery click ])"
+
+# To use, just execute this script with --help to display help.
+
+import subprocess
+import json
+import sys
+
+import click
+import requests
+from pyquery import PyQuery as pq
+
+def map_dict (f, d):
+    for k,v in d.items():
+        d[k] = f(v)
+
+maintainers_json = subprocess.check_output([
+    'nix-instantiate', '-A', 'lib.maintainers', '--eval', '--strict', '--json'
+])
+maintainers = json.loads(maintainers_json)
+MAINTAINERS = map_dict(lambda v: v.get('github', None), maintainers)
+
+def get_response_text(url):
+    return pq(requests.get(url).text)  # IO
+
+EVAL_FILE = {
+    'nixos': 'nixos/release.nix',
+    'nixpkgs': 'pkgs/top-level/release.nix',
+}
+
+
+def get_maintainers(attr_name):
+    try:
+        nixname = attr_name.split('.')
+        meta_json = subprocess.check_output([
+            'nix-instantiate',
+            '--eval',
+            '--strict',
+            '-A',
+            '.'.join(nixname[1:]) + '.meta',
+            EVAL_FILE[nixname[0]],
+            '--arg',
+            'nixpkgs',
+            './.',
+            '--json'])
+        meta = json.loads(meta_json)
+        return meta.get('maintainers', [])
+    except:
+       return []
+
+def filter_github_users(maintainers):
+    github_only = []
+    for i in maintainers:
+        if i.get('github'):
+            github_only.append(i)
+    return github_only
+
+def print_build(table_row):
+    a = pq(table_row)('a')[1]
+    print("- [ ] [{}]({})".format(a.text, a.get('href')), flush=True)
+
+    job_maintainers = filter_github_users(get_maintainers(a.text))
+    if job_maintainers:
+        print("  - maintainers: {}".format(" ".join(map(lambda u: '@' + u.get('github'), job_maintainers))))
+    # TODO: print last three persons that touched this file
+    # TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked?
+
+    sys.stdout.flush()
+
+@click.command()
+@click.option(
+    '--jobset',
+    default="nixos/release-19.09",
+    help='Hydra project like nixos/release-19.09')
+def cli(jobset):
+    """
+    Given a Hydra project, inspect latest evaluation
+    and print a summary of failed builds
+    """
+
+    url = "https://hydra.nixos.org/jobset/{}".format(jobset)
+
+    # get the last evaluation
+    click.echo(click.style(
+        'Getting latest evaluation for {}'.format(url), fg='green'))
+    d = get_response_text(url)
+    evaluations = d('#tabs-evaluations').find('a[class="row-link"]')
+    latest_eval_url = evaluations[0].get('href')
+
+    # parse last evaluation page
+    click.echo(click.style(
+        'Parsing evaluation {}'.format(latest_eval_url), fg='green'))
+    d = get_response_text(latest_eval_url + '?full=1')
+
+    # TODO: aborted evaluations
+    # TODO: dependency failed without propagated builds
+    print('\nFailures:')
+    for tr in d('img[alt="Failed"]').parents('tr'):
+        print_build(tr)
+
+    print('\nDependency failures:')
+    for tr in d('img[alt="Dependency failed"]').parents('tr'):
+        print_build(tr)
+
+
+
+if __name__ == "__main__":
+    try:
+        cli()
+    except Exception as e:
+        import pdb;pdb.post_mortem()
diff --git a/nixpkgs/maintainers/scripts/hydra_eval_check b/nixpkgs/maintainers/scripts/hydra_eval_check
new file mode 100755
index 000000000000..c8e03424f320
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/hydra_eval_check
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+# give absolute path of release.nix as argument
+hydra_eval_jobs \
+  --argstr system x86_64-linux \
+  --argstr system i686-linux \
+  --argstr system x86_64-darwin \
+  --argstr system i686-cygwin \
+  --argstr system x86_64-cygwin \
+  --argstr system i686-freebsd \
+  --arg officialRelease false \
+  --arg nixpkgs "{ outPath = builtins.storePath ./. ; rev = 1234; }" \
+  $@
diff --git a/nixpkgs/maintainers/scripts/luarocks-config.lua b/nixpkgs/maintainers/scripts/luarocks-config.lua
new file mode 100644
index 000000000000..89e74c00ea8e
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/luarocks-config.lua
@@ -0,0 +1,4 @@
+rocks_servers = {
+	"https://luarocks.org"
+}
+version_check_on_fail = false
diff --git a/nixpkgs/maintainers/scripts/luarocks-packages.csv b/nixpkgs/maintainers/scripts/luarocks-packages.csv
new file mode 100644
index 000000000000..a387430245ab
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/luarocks-packages.csv
@@ -0,0 +1,87 @@
+# nix name, luarocks name, server, version,luaversion,maintainers
+alt-getopt,,,,,arobyn
+ansicolors,,,,,
+argparse,,,,,
+basexx,,,,,
+binaryheap,,,,,vcunat
+bit32,,,,lua5_1,lblasc
+busted,,,,,
+cassowary,,,,,marsam alerque
+cjson,lua-cjson,,,,
+compat53,,,,,vcunat
+cosmo,,,,,marsam
+coxpcall,,,1.17.0-1,,
+cqueues,,,,,vcunat
+cyrussasl,,,,,
+digestif,,,,lua5_3,
+dkjson,,,,,
+fifo,,,,,
+http,,,,,vcunat
+inspect,,,,,
+ldbus,,http://luarocks.org/dev,,,
+ldoc,,,,,
+lgi,,,,,
+linenoise,,,,,
+ljsyscall,,,,lua5_1,lblasc
+lpeg,,,,,vyp
+lpeg_patterns,,,,,
+lpeglabel,,,,,
+lpty,,,,,
+lrexlib-gnu,,,,,
+lrexlib-pcre,,,,,vyp
+lrexlib-posix,,,,,
+ltermbox,,,,,
+lua-cmsgpack,,,,,
+lua-iconv,,,,,
+lua-lsp,,http://luarocks.org/dev,,,
+lua-messagepack,,,,,
+lua-resty-http,,,,,
+lua-resty-jwt,,,,,
+lua-resty-openidc,,,,,
+lua-resty-openssl,,,,,
+lua-resty-session,,,,,
+lua-term,,,,,
+lua-toml,,,,,
+lua-zlib,,,,,koral
+lua_cliargs,,,,,
+luabitop,,,,,
+luacheck,,,,,
+luacov,,,,,
+luadbi,,,,,
+luadbi-mysql,,,,,
+luadbi-postgresql,,,,,
+luadbi-sqlite3,,,,,
+luadoc,,,,,
+luaepnf,,,,,
+luaevent,,,,,
+luaexpat,,,1.3.0-1,,arobyn flosse
+luaffi,,http://luarocks.org/dev,,,
+luafilesystem,,,1.7.0-2,,flosse
+lualogging,,,,,
+luaossl,,,,lua5_1,
+luaposix,,,,,vyp lblasc
+luarepl,,,,,
+luasec,,,,,flosse
+luasocket,,,,,
+luasql-sqlite3,,,,,vyp
+luassert,,,,,
+luasystem,,,,,
+luautf8,,,,,pstn
+luazip,,,,,
+lua-yajl,,,,,pstn
+luuid,,,,,
+luv,,,,,
+lyaml,,,,,lblasc
+markdown,,,,,
+mediator_lua,,,,,
+mpack,,,,,
+moonscript,,,,,arobyn
+nvim-client,,,,,
+penlight,,,,,
+rapidjson,,,,,
+readline,,,,,
+say,,,,,
+std__debug,std._debug,,,,
+std_normalize,std.normalize,,,,
+stdlib,,,,,vyp
+vstruct,,,,,
diff --git a/nixpkgs/maintainers/scripts/nix-call-package b/nixpkgs/maintainers/scripts/nix-call-package
new file mode 100755
index 000000000000..be478fca2b75
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nix-call-package
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+echo "let pkgs = import <nixpkgs$2> {}; x = pkgs.callPackage $1 { $3 }; in ${4:-x}" |
+nix-instantiate --show-trace - |
+xargs nix-store -r -K
diff --git a/nixpkgs/maintainers/scripts/nix-diff.sh b/nixpkgs/maintainers/scripts/nix-diff.sh
new file mode 100755
index 000000000000..0c65e29cf435
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nix-diff.sh
@@ -0,0 +1,277 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils gnugrep gnused
+
+################################################################################
+# nix-diff.sh                                                                  #
+################################################################################
+# This script "diffs" Nix profile generations.                                 #
+#                                                                              #
+# Example:                                                                     #
+################################################################################
+# > nix-diff.sh 90 92                                                          #
+# + gnumake-4.2.1                                                              #
+# + gnumake-4.2.1-doc                                                          #
+# - htmldoc-1.8.29                                                             #
+################################################################################
+# The example shows that as of generation 92 and since generation 90,          #
+# gnumake-4.2.1 and gnumake-4.2.1-doc have been installed, while               #
+# htmldoc-1.8.29 has been removed.                                             #
+#                                                                              #
+# The example above shows the default, minimal output mode of this script.     #
+# For more features, run `nix-diff.sh -h` for usage instructions.              #
+################################################################################
+
+usage() {
+    cat <<EOF
+usage: nix-diff.sh [-h | [-p profile | -s] [-q] [-l] [range]]
+-h:         print this message before exiting
+-q:         list the derivations installed in the parent generation
+-l:         diff every available intermediate generation between parent and
+            child
+-p profile: specify the Nix profile to use
+            * defaults to ~/.nix-profile
+-s:         use the system profile
+            * equivalent to: -p /nix/var/nix/profiles/system
+profile:    * should be something like /nix/var/nix/profiles/default, not a
+              generation link like /nix/var/nix/profiles/default-2-link
+range:      the range of generations to diff
+            * the following patterns are allowed, where A, B, and N are positive
+              integers, and G is the currently active generation:
+                A..B => diffs from generation A to generation B
+                ~N   => diffs from the Nth newest generation (older than G) to G
+                A    => diffs from generation A to G
+            * defaults to ~1
+EOF
+}
+
+usage_tip() {
+    echo 'run `nix-diff.sh -h` for usage instructions' >&2
+    exit 1
+}
+
+while getopts :hqlp:s opt; do
+    case $opt in
+        h)
+            usage
+            exit
+            ;;
+        q)
+            opt_query=1
+            ;;
+        l)
+            opt_log=1
+            ;;
+        p)
+            opt_profile=$OPTARG
+            ;;
+        s)
+            opt_profile=/nix/var/nix/profiles/system
+            ;;
+        \?)
+            echo "error: invalid option -$OPTARG" >&2
+            usage_tip
+            ;;
+    esac
+done
+shift $((OPTIND-1))
+
+if [ -n "$opt_profile" ]; then
+    if ! [ -L "$opt_profile" ]; then
+        echo "error: expecting \`$opt_profile\` to be a symbolic link" >&2
+        usage_tip
+    fi
+else
+    opt_profile=$(readlink ~/.nix-profile)
+    if (( $? != 0 )); then
+        echo 'error: unable to dereference `~/.nix-profile`' >&2
+        echo 'specify the profile manually with the `-p` flag' >&2
+        usage_tip
+    fi
+fi
+
+list_gens() {
+    nix-env -p "$opt_profile" --list-generations \
+        | sed -r 's:^\s*::' \
+        | cut -d' ' -f1
+}
+
+current_gen() {
+    nix-env -p "$opt_profile" --list-generations \
+        | grep -E '\(current\)\s*$' \
+        | sed -r 's:^\s*::' \
+        | cut -d' ' -f1
+}
+
+neg_gen() {
+    local i=0 from=$1 n=$2 tmp
+    for gen in $(list_gens | sort -rn); do
+        if ((gen < from)); then
+            tmp=$gen
+            ((i++))
+            ((i == n)) && break
+        fi
+    done
+    if ((i < n)); then
+        echo -n "error: there aren't $n generation(s) older than" >&2
+        echo " generation $from" >&2
+        return 1
+    fi
+    echo $tmp
+}
+
+match() {
+    argv=("$@")
+    for i in $(seq $(($#-1))); do
+        if grep -E "^${argv[$i]}\$" <(echo "$1") >/dev/null; then
+            echo $i
+            return
+        fi
+    done
+    echo 0
+}
+
+case $(match "$1" '' '[0-9]+' '[0-9]+\.\.[0-9]+' '~[0-9]+') in
+    1)
+        diffTo=$(current_gen)
+        diffFrom=$(neg_gen $diffTo 1)
+        (($? == 1)) && usage_tip
+        ;;
+    2)
+        diffFrom=$1
+        diffTo=$(current_gen)
+        ;;
+    3)
+        diffFrom=${1%%.*}
+        diffTo=${1##*.}
+        ;;
+    4)
+        diffTo=$(current_gen)
+        diffFrom=$(neg_gen $diffTo ${1#*~})
+        (($? == 1)) && usage_tip
+        ;;
+    0)
+        echo 'error: invalid invocation' >&2
+        usage_tip
+        ;;
+esac
+
+dirA="${opt_profile}-${diffFrom}-link"
+dirB="${opt_profile}-${diffTo}-link"
+
+declare -a temp_files
+temp_length() {
+    echo -n ${#temp_files[@]}
+}
+temp_make() {
+    temp_files[$(temp_length)]=$(mktemp)
+}
+temp_clean() {
+    rm -f ${temp_files[@]}
+}
+temp_name() {
+    echo -n "${temp_files[$(($(temp_length)-1))]}"
+}
+trap 'temp_clean' EXIT
+
+temp_make
+versA=$(temp_name)
+refs=$(nix-store -q --references "$dirA")
+(( $? != 0 )) && exit 1
+echo "$refs" \
+    | grep -v env-manifest.nix \
+    | sort \
+          > "$versA"
+
+print_tag() {
+    local gen=$1
+    nix-env -p "$opt_profile" --list-generations \
+        | grep -E "^\s*${gen}" \
+        | sed -r 's:^\s*::' \
+        | sed -r 's:\s*$::'
+}
+
+if [ -n "$opt_query" ]; then
+    print_tag $diffFrom
+    cat "$versA" \
+        | sed -r 's:^[^-]+-(.*)$:    \1:'
+
+    print_line=1
+fi
+
+if [ -n "$opt_log" ]; then
+    gens=$(for gen in $(list_gens); do
+               ((diffFrom < gen && gen < diffTo)) && echo $gen
+           done)
+    # Force the $diffTo generation to be included in this list, instead of using
+    # `gen <= diffTo` in the preceding loop, so we encounter an error upon the
+    # event of its nonexistence.
+    gens=$(echo "$gens"
+           echo $diffTo)
+else
+    gens=$diffTo
+fi
+
+temp_make
+add=$(temp_name)
+temp_make
+rem=$(temp_name)
+temp_make
+out=$(temp_name)
+
+for gen in $gens; do
+
+    [ -n "$print_line" ] && echo
+
+    temp_make
+    versB=$(temp_name)
+
+    dirB="${opt_profile}-${gen}-link"
+    refs=$(nix-store -q --references "$dirB")
+    (( $? != 0 )) && exit 1
+    echo "$refs" \
+        | grep -v env-manifest.nix \
+        | sort \
+              > "$versB"
+
+    in=$(comm -3 -1 "$versA" "$versB")
+    sed -r 's:^[^-]*-(.*)$:\1+:' <(echo "$in") \
+        | sort -f \
+               > "$add"
+
+    un=$(comm -3 -2 "$versA" "$versB")
+    sed -r 's:^[^-]*-(.*)$:\1-:' <(echo "$un") \
+        | sort -f \
+               > "$rem"
+
+    cat "$rem" "$add" \
+        | sort -f \
+        | sed -r 's:(.*)-$:- \1:' \
+        | sed -r 's:(.*)\+$:\+ \1:' \
+        | grep -v '^$' \
+              > "$out"
+
+    if [ -n "$opt_query" -o -n "$opt_log" ]; then
+
+        lines=$(wc -l "$out" | cut -d' ' -f1)
+        tag=$(print_tag "$gen")
+        (( $? != 0 )) && exit 1
+        if [ $lines -eq 0 ]; then
+            echo "$tag   (no change)"
+        else
+            echo "$tag"
+        fi
+        cat "$out" \
+            | sed 's:^:    :'
+
+        print_line=1
+
+    else
+        echo "diffing from generation $diffFrom to $diffTo"
+        cat "$out"
+    fi
+
+    versA=$versB
+
+done
+
+exit 0
diff --git a/nixpkgs/maintainers/scripts/nix-generate-from-cpan.nix b/nixpkgs/maintainers/scripts/nix-generate-from-cpan.nix
new file mode 100644
index 000000000000..fecca7f0c737
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nix-generate-from-cpan.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, makeWrapper, perl, perlPackages }:
+
+stdenv.mkDerivation {
+  name = "nix-generate-from-cpan-3";
+
+  buildInputs = with perlPackages; [
+    makeWrapper perl GetoptLongDescriptive CPANPLUS Readonly LogLog4perl
+  ];
+
+  phases = [ "installPhase" ];
+
+  installPhase =
+    ''
+      mkdir -p $out/bin
+      cp ${./nix-generate-from-cpan.pl} $out/bin/nix-generate-from-cpan
+      patchShebangs $out/bin/nix-generate-from-cpan
+      wrapProgram $out/bin/nix-generate-from-cpan --set PERL5LIB $PERL5LIB
+    '';
+
+  meta = {
+    maintainers = with lib.maintainers; [ eelco ];
+    description = "Utility to generate a Nix expression for a Perl package from CPAN";
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/maintainers/scripts/nix-generate-from-cpan.pl b/nixpkgs/maintainers/scripts/nix-generate-from-cpan.pl
new file mode 100755
index 000000000000..6494acb50da5
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nix-generate-from-cpan.pl
@@ -0,0 +1,466 @@
+#!/usr/bin/env perl
+
+use utf8;
+use strict;
+use warnings;
+
+use CPAN::Meta();
+use CPANPLUS::Backend();
+use Module::CoreList;
+use Getopt::Long::Descriptive qw( describe_options );
+use JSON::PP qw( encode_json );
+use Log::Log4perl qw(:easy);
+use Readonly();
+
+# Readonly hash that maps CPAN style license strings to information
+# necessary to generate a Nixpkgs style license attribute.
+Readonly::Hash my %LICENSE_MAP => (
+
+    # The Perl 5 License (Artistic 1 & GPL 1 or later).
+    perl_5 => {
+        licenses => [qw( artistic1 gpl1Plus )]
+    },
+
+    # GNU Affero General Public License, Version 3.
+    agpl_3 => {
+        licenses => [qw( agpl3Plus )],
+        amb      => 1
+    },
+
+    # Apache Software License, Version 1.1.
+    apache_1_1 => {
+        licenses => ["Apache License 1.1"],
+        in_set   => 0
+    },
+
+    # Apache License, Version 2.0.
+    apache_2_0 => {
+        licenses => [qw( asl20 )]
+    },
+
+    # Artistic License, (Version 1).
+    artistic_1 => {
+        licenses => [qw( artistic1 )]
+    },
+
+    # Artistic License, Version 2.0.
+    artistic_2 => {
+        licenses => [qw( artistic2 )]
+    },
+
+    # BSD License (three-clause).
+    bsd => {
+        licenses => [qw( bsd3 )],
+        amb      => 1
+    },
+
+    # FreeBSD License (two-clause).
+    freebsd => {
+        licenses => [qw( bsd2 )]
+    },
+
+    # GNU Free Documentation License, Version 1.2.
+    gfdl_1_2 => {
+        licenses => [qw( fdl12 )]
+    },
+
+    # GNU Free Documentation License, Version 1.3.
+    gfdl_1_3 => {
+        licenses => [qw( fdl13 )]
+    },
+
+    # GNU General Public License, Version 1.
+    gpl_1 => {
+        licenses => [qw( gpl1Plus )],
+        amb      => 1
+    },
+
+    # GNU General Public License, Version 2. Note, we will interpret
+    # "gpl" alone as GPL v2+.
+    gpl_2 => {
+        licenses => [qw( gpl2Plus )],
+        amb      => 1
+    },
+
+    # GNU General Public License, Version 3.
+    gpl_3 => {
+        licenses => [qw( gpl3Plus )],
+        amb      => 1
+    },
+
+    # GNU Lesser General Public License, Version 2.1. Note, we will
+    # interpret "gpl" alone as LGPL v2.1+.
+    lgpl_2_1 => {
+        licenses => [qw( lgpl21Plus )],
+        amb      => 1
+    },
+
+    # GNU Lesser General Public License, Version 3.0.
+    lgpl_3_0 => {
+        licenses => [qw( lgpl3Plus )],
+        amb      => 1
+    },
+
+    # MIT (aka X11) License.
+    mit => {
+        licenses => [qw( mit )]
+    },
+
+    # Mozilla Public License, Version 1.0.
+    mozilla_1_0 => {
+        licenses => [qw( mpl10 )]
+    },
+
+    # Mozilla Public License, Version 1.1.
+    mozilla_1_1 => {
+        licenses => [qw( mpl11 )]
+    },
+
+    # OpenSSL License.
+    openssl => {
+        licenses => [qw( openssl )]
+    },
+
+    # Q Public License, Version 1.0.
+    qpl_1_0 => {
+        licenses => [qw( qpl )]
+    },
+
+    # Original SSLeay License.
+    ssleay => {
+        licenses => ["Original SSLeay License"],
+        in_set   => 0
+    },
+
+    # Sun Internet Standards Source License (SISSL).
+    sun => {
+        licenses => ["Sun Industry Standards Source License v1.1"],
+        in_set   => 0
+    },
+
+    # zlib License.
+    zlib => {
+        licenses => [qw( zlib )]
+    },
+
+    # Other Open Source Initiative (OSI) approved license.
+    open_source => {
+        licenses => [qw( free )],
+        amb      => 1
+    },
+
+    # Requires special permission from copyright holder.
+    restricted => {
+        licenses => [qw( unfree )],
+        amb      => 1
+    },
+
+    # Not an OSI approved license, but not restricted. Note, we
+    # currently map this to unfreeRedistributable, which is a
+    # conservative choice.
+    unrestricted => {
+        licenses => [qw( unfreeRedistributable )],
+        amb      => 1
+    },
+
+    # License not provided in metadata.
+    unknown => {
+        licenses => [],
+        amb      => 1
+    }
+);
+
+sub handle_opts {
+    my ( $opt, $usage ) = describe_options(
+        'usage: $0 %o MODULE',
+        [ 'maintainer|m=s', 'the package maintainer' ],
+        [ 'debug|d',        'enable debug output' ],
+        [ 'help',           'print usage message and exit' ]
+    );
+
+    if ( $opt->help ) {
+        print $usage->text;
+        exit;
+    }
+
+    my $module_name = $ARGV[0];
+
+    if ( !defined $module_name ) {
+        print STDERR "Missing module name\n";
+        print STDERR $usage->text;
+        exit 1;
+    }
+
+    return ( $opt, $module_name );
+}
+
+# Takes a Perl package attribute name and returns 1 if the name cannot
+# be referred to as a bareword. This typically happens if the package
+# name is a reserved Nix keyword.
+sub is_reserved {
+    my ($pkg) = @_;
+
+    return $pkg =~ /^(?: assert    |
+                         else      |
+                         if        |
+                         import    |
+                         in        |
+                         inherit   |
+                         let       |
+                         rec       |
+                         then      |
+                         while     |
+                         with      )$/x;
+}
+
+sub pkg_to_attr {
+    my ($module) = @_;
+    my $attr_name = $module->package_name;
+    if ( $attr_name eq "libwww-perl" ) {
+        return "LWP";
+    }
+    else {
+        $attr_name =~ s/-//g;
+        return $attr_name;
+    }
+}
+
+sub get_pkg_name {
+    my ($module) = @_;
+    return ( $module->package_name, $module->package_version =~ s/^v(\d)/$1/r );
+}
+
+sub read_meta {
+    my ($pkg_path) = @_;
+
+    my $yaml_path = "$pkg_path/META.yml";
+    my $json_path = "$pkg_path/META.json";
+    my $meta;
+
+    if ( -r $json_path ) {
+        $meta = CPAN::Meta->load_file($json_path);
+    }
+    elsif ( -r $yaml_path ) {
+        $meta = CPAN::Meta->load_file($yaml_path);
+    }
+    else {
+        WARN("package has no META.yml or META.json");
+    }
+
+    return $meta;
+}
+
+# Map a module to the attribute corresponding to its package
+# (e.g. HTML::HeadParser will be mapped to HTMLParser, because that
+# module is in the HTML-Parser package).
+sub module_to_pkg {
+    my ( $cb, $module_name ) = @_;
+    my @modules = $cb->search( type => "name", allow => [$module_name] );
+    if ( scalar @modules == 0 ) {
+
+        # Fallback.
+        $module_name =~ s/:://g;
+        return $module_name;
+    }
+    my $module    = $modules[0];
+    my $attr_name = pkg_to_attr($module);
+    DEBUG("mapped dep $module_name to $attr_name");
+    return $attr_name;
+}
+
+sub get_deps {
+    my ( $cb, $meta, $type ) = @_;
+
+    return if !defined $meta;
+
+    my $prereqs = $meta->effective_prereqs;
+    my $deps = $prereqs->requirements_for( $type, "requires" );
+    my @res;
+    foreach my $n ( $deps->required_modules ) {
+        next if $n eq "perl";
+
+        my @core = Module::CoreList->find_modules(qr/^$n$/);
+        next if (@core);
+
+        my $pkg = module_to_pkg( $cb, $n );
+
+        # If the package name is reserved then we need to refer to it
+        # through the "self" variable.
+        $pkg = "self.\"$pkg\"" if is_reserved($pkg);
+
+        push @res, $pkg;
+    }
+    return @res;
+}
+
+sub uniq {
+    return keys %{ { map { $_ => 1 } @_ } };
+}
+
+sub render_license {
+    my ($cpan_license) = @_;
+
+    return if !defined $cpan_license;
+
+    my $licenses;
+
+    # If the license is ambiguous then we'll print an extra warning.
+    # For example, "gpl_2" is ambiguous since it may refer to exactly
+    # "GPL v2" or to "GPL v2 or later".
+    my $amb = 0;
+
+    # Whether the license is available inside `lib.licenses`.
+    my $in_set = 1;
+
+    my $nix_license = $LICENSE_MAP{$cpan_license};
+    if ( !$nix_license ) {
+        WARN("Unknown license: $cpan_license");
+        $licenses = [$cpan_license];
+        $in_set   = 0;
+    }
+    else {
+        $licenses = $nix_license->{licenses};
+        $amb      = $nix_license->{amb};
+        $in_set   = !$nix_license->{in_set};
+    }
+
+    my $license_line;
+
+    if ( @$licenses == 0 ) {
+
+        # Avoid defining the license line.
+    }
+    elsif ($in_set) {
+        my $lic = 'lib.licenses';
+        if ( @$licenses == 1 ) {
+            $license_line = "$lic.$licenses->[0]";
+        }
+        else {
+            $license_line = "with $lic; [ " . join( ' ', @$licenses ) . " ]";
+        }
+    }
+    else {
+        if ( @$licenses == 1 ) {
+            $license_line = $licenses->[0];
+        }
+        else {
+            $license_line = '[ ' . join( ' ', @$licenses ) . ' ]';
+        }
+    }
+
+    INFO("license: $cpan_license");
+    WARN("License '$cpan_license' is ambiguous, please verify") if $amb;
+
+    return $license_line;
+}
+
+my ( $opt, $module_name ) = handle_opts();
+
+Log::Log4perl->easy_init(
+    {
+        level => $opt->debug ? $DEBUG : $INFO,
+        layout => '%m%n'
+    }
+);
+
+my $cb = CPANPLUS::Backend->new;
+
+my @modules = $cb->search( type => "name", allow => [$module_name] );
+die "module $module_name not found\n" if scalar @modules == 0;
+die "multiple packages that match module $module_name\n" if scalar @modules > 1;
+my $module = $modules[0];
+
+my ($pkg_name, $pkg_version) = get_pkg_name $module;
+my $attr_name = pkg_to_attr $module;
+
+INFO( "attribute name: ", $attr_name );
+INFO( "module: ",         $module->module );
+INFO( "version: ",        $module->version );
+INFO( "package: ", $module->package, " (", "$pkg_name-$pkg_version", ", ", $attr_name, ")" );
+INFO( "path: ",    $module->path );
+
+my $tar_path = $module->fetch();
+INFO( "downloaded to: ", $tar_path );
+INFO( "sha-256: ",       $module->status->checksum_value );
+
+my $pkg_path = $module->extract();
+INFO( "unpacked to: ", $pkg_path );
+
+my $meta = read_meta($pkg_path);
+
+DEBUG( "metadata: ", encode_json( $meta->as_struct ) ) if defined $meta;
+
+my @runtime_deps = sort( uniq( get_deps( $cb, $meta, "runtime" ) ) );
+INFO("runtime deps: @runtime_deps");
+
+my @build_deps = sort( uniq(
+        get_deps( $cb, $meta, "configure" ),
+        get_deps( $cb, $meta, "build" ),
+        get_deps( $cb, $meta, "test" )
+) );
+
+# Filter out runtime dependencies since those are already handled.
+my %in_runtime_deps = map { $_ => 1 } @runtime_deps;
+@build_deps = grep { not $in_runtime_deps{$_} } @build_deps;
+
+INFO("build deps: @build_deps");
+
+my $homepage = $meta ? $meta->resources->{homepage} : undef;
+INFO("homepage: $homepage") if defined $homepage;
+
+my $description = $meta ? $meta->abstract : undef;
+if ( defined $description ) {
+    $description = uc( substr( $description, 0, 1 ) )
+      . substr( $description, 1 );    # capitalise first letter
+    $description =~ s/\.$//;          # remove period at the end
+    $description =~ s/\s*$//;
+    $description =~ s/^\s*//;
+    $description =~ s/\n+/ /;         # Replace new lines by space.
+    INFO("description: $description");
+}
+
+#print(Data::Dumper::Dumper($meta->licenses) . "\n");
+my $license = $meta ? render_license( $meta->licenses ) : undef;
+
+INFO( "RSS feed: https://metacpan.org/feed/distribution/",
+    $module->package_name );
+
+my $build_fun = -e "$pkg_path/Build.PL"
+  && !-e "$pkg_path/Makefile.PL" ? "buildPerlModule" : "buildPerlPackage";
+
+print STDERR "===\n";
+
+print <<EOF;
+  ${\(is_reserved($attr_name) ? "\"$attr_name\"" : $attr_name)} = $build_fun {
+    pname = "$pkg_name";
+    version = "$pkg_version";
+    src = fetchurl {
+      url = "mirror://cpan/${\$module->path}/${\$module->package}";
+      sha256 = "${\$module->status->checksum_value}";
+    };
+EOF
+print <<EOF if scalar @build_deps > 0;
+    buildInputs = [ @build_deps ];
+EOF
+print <<EOF if scalar @runtime_deps > 0;
+    propagatedBuildInputs = [ @runtime_deps ];
+EOF
+print <<EOF;
+    meta = {
+EOF
+print <<EOF if defined $homepage;
+      homepage = "$homepage";
+EOF
+print <<EOF if defined $description && $description ne "Unknown";
+      description = "$description";
+EOF
+print <<EOF if defined $license;
+      license = $license;
+EOF
+print <<EOF if $opt->maintainer;
+      maintainers = [ maintainers.${\$opt->maintainer} ];
+EOF
+print <<EOF;
+    };
+  };
+EOF
diff --git a/nixpkgs/maintainers/scripts/nixpkgs-lint.nix b/nixpkgs/maintainers/scripts/nixpkgs-lint.nix
new file mode 100644
index 000000000000..873905373af0
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nixpkgs-lint.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, makeWrapper, perl, perlPackages }:
+
+stdenv.mkDerivation {
+  name = "nixpkgs-lint-1";
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl perlPackages.XMLSimple ];
+
+  dontUnpack = true;
+  buildPhase = "true";
+
+  installPhase =
+    ''
+      mkdir -p $out/bin
+      cp ${./nixpkgs-lint.pl} $out/bin/nixpkgs-lint
+      wrapProgram $out/bin/nixpkgs-lint --set PERL5LIB $PERL5LIB
+    '';
+
+  meta = with lib; {
+    maintainers = [ maintainers.eelco ];
+    description = "A utility for Nixpkgs contributors to check Nixpkgs for common errors";
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/maintainers/scripts/nixpkgs-lint.pl b/nixpkgs/maintainers/scripts/nixpkgs-lint.pl
new file mode 100755
index 000000000000..43fb39413613
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/nixpkgs-lint.pl
@@ -0,0 +1,173 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i perl -p perl perlPackages.XMLSimple
+
+use strict;
+use List::Util qw(min);
+use XML::Simple qw(:strict);
+use Getopt::Long qw(:config gnu_getopt);
+
+# Parse the command line.
+my $path = "<nixpkgs>";
+my $filter = "*";
+my $maintainer;
+
+sub showHelp {
+    print <<EOF;
+Usage: $0 [--package=NAME] [--maintainer=REGEXP] [--file=PATH]
+
+Check Nixpkgs for common errors/problems.
+
+  -p, --package        filter packages by name (default is ‘*’)
+  -m, --maintainer     filter packages by maintainer (case-insensitive regexp)
+  -f, --file           path to Nixpkgs (default is ‘<nixpkgs>’)
+
+Examples:
+  \$ nixpkgs-lint -f /my/nixpkgs -p firefox
+  \$ nixpkgs-lint -f /my/nixpkgs -m eelco
+EOF
+    exit 0;
+}
+
+GetOptions("package|p=s" => \$filter,
+           "maintainer|m=s" => \$maintainer,
+           "file|f=s" => \$path,
+           "help" => sub { showHelp() }
+    ) or exit 1;
+
+# Evaluate Nixpkgs into an XML representation.
+my $xml = `nix-env -f '$path' --arg overlays '[]' -qa '$filter' --xml --meta --drv-path`;
+die "$0: evaluation of ‘$path’ failed\n" if $? != 0;
+
+my $info = XMLin($xml, KeyAttr => { 'item' => '+attrPath', 'meta' => 'name' }, ForceArray => 1, SuppressEmpty => '' ) or die "cannot parse XML output";
+
+# Check meta information.
+print "=== Package meta information ===\n\n";
+my $nrBadNames = 0;
+my $nrMissingMaintainers = 0;
+my $nrMissingPlatforms = 0;
+my $nrMissingDescriptions = 0;
+my $nrBadDescriptions = 0;
+my $nrMissingLicenses = 0;
+
+foreach my $attr (sort keys %{$info->{item}}) {
+    my $pkg = $info->{item}->{$attr};
+
+    my $pkgName = $pkg->{name};
+    my $pkgVersion = "";
+    if ($pkgName =~ /(.*)(-[0-9].*)$/) {
+        $pkgName = $1;
+        $pkgVersion = $2;
+    }
+
+    # Check the maintainers.
+    my @maintainers;
+    my $x = $pkg->{meta}->{maintainers};
+    if (defined $x && $x->{type} eq "strings") {
+        @maintainers = map { $_->{value} } @{$x->{string}};
+    } elsif (defined $x->{value}) {
+        @maintainers = ($x->{value});
+    }
+
+    if (defined $maintainer && scalar(grep { $_ =~ /$maintainer/i } @maintainers) == 0) {
+        delete $info->{item}->{$attr};
+        next;
+    }
+
+    if (scalar @maintainers == 0) {
+        print "$attr: Lacks a maintainer\n";
+        $nrMissingMaintainers++;
+    }
+
+    # Check the platforms.
+    if (!defined $pkg->{meta}->{platforms}) {
+        print "$attr: Lacks a platform\n";
+        $nrMissingPlatforms++;
+    }
+
+    # Package names should not be capitalised.
+    if ($pkgName =~ /^[A-Z]/) {
+        print "$attr: package name ‘$pkgName’ should not be capitalised\n";
+        $nrBadNames++;
+    }
+
+    if ($pkgVersion eq "") {
+        print "$attr: package has no version\n";
+        $nrBadNames++;
+    }
+
+    # Check the license.
+    if (!defined $pkg->{meta}->{license}) {
+        print "$attr: Lacks a license\n";
+        $nrMissingLicenses++;
+    }
+
+    # Check the description.
+    my $description = $pkg->{meta}->{description}->{value};
+    if (!$description) {
+        print "$attr: Lacks a description\n";
+        $nrMissingDescriptions++;
+    } else {
+        my $bad = 0;
+        if ($description =~ /^\s/) {
+            print "$attr: Description starts with whitespace\n";
+            $bad = 1;
+        }
+        if ($description =~ /\s$/) {
+            print "$attr: Description ends with whitespace\n";
+            $bad = 1;
+        }
+        if ($description =~ /\.$/) {
+            print "$attr: Description ends with a period\n";
+            $bad = 1;
+        }
+        if (index(lc($description), lc($attr)) != -1) {
+            print "$attr: Description contains package name\n";
+            $bad = 1;
+        }
+        $nrBadDescriptions++ if $bad;
+    }
+}
+
+print "\n";
+
+# Find packages that have the same name.
+print "=== Package name collisions ===\n\n";
+
+my %pkgsByName;
+
+foreach my $attr (sort keys %{$info->{item}}) {
+    my $pkg = $info->{item}->{$attr};
+    #print STDERR "attr = $attr, name = $pkg->{name}\n";
+    $pkgsByName{$pkg->{name}} //= [];
+    push @{$pkgsByName{$pkg->{name}}}, $pkg;
+}
+
+my $nrCollisions = 0;
+foreach my $name (sort keys %pkgsByName) {
+    my @pkgs = @{$pkgsByName{$name}};
+
+    # Filter attributes that are aliases of each other (e.g. yield the
+    # same derivation path).
+    my %drvsSeen;
+    @pkgs = grep { my $x = $drvsSeen{$_->{drvPath}}; $drvsSeen{$_->{drvPath}} = 1; !defined $x } @pkgs;
+
+    # Filter packages that have a lower priority.
+    my $highest = min (map { $_->{meta}->{priority}->{value} // 0 } @pkgs);
+    @pkgs = grep { ($_->{meta}->{priority}->{value} // 0) == $highest } @pkgs;
+
+    next if scalar @pkgs == 1;
+
+    $nrCollisions++;
+    print "The following attributes evaluate to a package named ‘$name’:\n";
+    print "  ", join(", ", map { $_->{attrPath} } @pkgs), "\n\n";
+}
+
+print "=== Bottom line ===\n";
+print "Number of packages: ", scalar(keys %{$info->{item}}), "\n";
+print "Number of bad names: $nrBadNames\n";
+print "Number of missing maintainers: $nrMissingMaintainers\n";
+print "Number of missing platforms: $nrMissingPlatforms\n";
+print "Number of missing licenses: $nrMissingLicenses\n";
+print "Number of missing descriptions: $nrMissingDescriptions\n";
+print "Number of bad descriptions: $nrBadDescriptions\n";
+print "Number of name collisions: $nrCollisions\n";
diff --git a/nixpkgs/maintainers/scripts/patchelf-hints.sh b/nixpkgs/maintainers/scripts/patchelf-hints.sh
new file mode 100755
index 000000000000..5fdfc15dc232
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/patchelf-hints.sh
@@ -0,0 +1,84 @@
+
+usage() {
+    echo "
+$0 <path to unpacked binary distribution directory>
+
+This program return the list of libraries and where to find them based on
+your currently installed programs.
+";
+    exit 1
+}
+
+if test $# -ne 1; then
+  usage
+fi
+
+binaryDist=$1
+
+hasBinaries=false
+for bin in $(find $binaryDist -executable -type f) :; do
+    if test $bin = ":"; then
+        $hasBinaries || \
+            echo "No patchable found in this directory."
+        break
+    fi
+    hasBinaries=true
+
+    echo ""
+    echo "$bin:"
+    hasLibraries=false
+    unset interpreter
+    unset addRPath
+    for lib in $(strings $bin | grep '^\(/\|\)lib.*\.so' | sort | uniq) :; do
+        if test $lib = ":"; then
+            $hasLibraries || \
+                echo "  This program is a script or it is statically linked."
+            break
+        fi
+        hasLibraries=true
+
+        echo "  $lib:";
+
+        libPath=$lib
+        lib=$(basename $lib)
+
+        #versionLessLib=$(echo $lib | sed 's,[.][.0-9]*$,,')
+
+        libs="$(
+            find /nix/store/*/lib* \( -type f -or -type l \) -name $lib |
+            grep -v '\(bootstrap-tools\|system-path\|user-environment\|extra-utils\)'
+        )"
+
+        echo "$libs" |
+        sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)/.*/\([^/]*\)$,    \1 -> \2,' |
+        sort |
+        uniq;
+
+        names=$(
+            echo "$libs" |
+            sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)-[.0-9]*/.*$,\1,' |
+            sort |
+            uniq;
+        )
+
+        if test "$names" = "glibc"; then names="stdenv.glibc"; fi
+        if echo $names | grep -c "gcc" &> /dev/null; then names="stdenv.cc.cc"; fi
+
+        if test $lib != $libPath; then
+            interpreter="--interpreter \${$names}/lib/$lib"
+        elif echo $addRPath | grep -c "$names" &> /dev/null; then
+            :
+        else
+            addRPath=${addRPath+$addRPath:}"\${$names}/lib"
+        fi
+    done;
+    $hasLibraries && \
+        echo "
+  Patchelf command:
+
+    patchelf $interpreter \\
+      ${addRPath+--set-rpath $addRPath \\
+}      \$out/$bin
+
+"
+done;
diff --git a/nixpkgs/maintainers/scripts/pluginupdate.py b/nixpkgs/maintainers/scripts/pluginupdate.py
new file mode 100644
index 000000000000..91c5214d1539
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/pluginupdate.py
@@ -0,0 +1,555 @@
+# Used by pkgs/misc/vim-plugins/update.py and pkgs/applications/editors/kakoune/plugins/update.py
+
+# format:
+# $ nix run nixpkgs.python3Packages.black -c black update.py
+# type-check:
+# $ nix run nixpkgs.python3Packages.mypy -c mypy update.py
+# linted:
+# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
+
+import argparse
+import functools
+import http
+import json
+import os
+import subprocess
+import logging
+import sys
+import time
+import traceback
+import urllib.error
+import urllib.parse
+import urllib.request
+import xml.etree.ElementTree as ET
+from datetime import datetime
+from functools import wraps
+from multiprocessing.dummy import Pool
+from pathlib import Path
+from typing import Dict, List, Optional, Tuple, Union, Any, Callable
+from urllib.parse import urljoin, urlparse
+from tempfile import NamedTemporaryFile
+
+import git
+
+ATOM_ENTRY = "{http://www.w3.org/2005/Atom}entry"  # " vim gets confused here
+ATOM_LINK = "{http://www.w3.org/2005/Atom}link"  # "
+ATOM_UPDATED = "{http://www.w3.org/2005/Atom}updated"  # "
+
+LOG_LEVELS = {
+    logging.getLevelName(level): level for level in [
+        logging.DEBUG, logging.INFO, logging.WARN, logging.ERROR ]
+}
+
+log = logging.getLogger()
+log.addHandler(logging.StreamHandler())
+
+
+def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: float = 2):
+    """Retry calling the decorated function using an exponential backoff.
+    http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
+    original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
+    (BSD licensed)
+    :param ExceptionToCheck: the exception on which to retry
+    :param tries: number of times to try (not retry) before giving up
+    :param delay: initial delay between retries in seconds
+    :param backoff: backoff multiplier e.g. value of 2 will double the delay
+        each retry
+    """
+
+    def deco_retry(f: Callable) -> Callable:
+        @wraps(f)
+        def f_retry(*args: Any, **kwargs: Any) -> Any:
+            mtries, mdelay = tries, delay
+            while mtries > 1:
+                try:
+                    return f(*args, **kwargs)
+                except ExceptionToCheck as e:
+                    print(f"{str(e)}, Retrying in {mdelay} seconds...")
+                    time.sleep(mdelay)
+                    mtries -= 1
+                    mdelay *= backoff
+            return f(*args, **kwargs)
+
+        return f_retry  # true decorator
+
+    return deco_retry
+
+
+def make_request(url: str) -> urllib.request.Request:
+    token = os.getenv("GITHUB_API_TOKEN")
+    headers = {}
+    if token is not None:
+        headers["Authorization"] = f"token {token}"
+    return urllib.request.Request(url, headers=headers)
+
+
+class Repo:
+    def __init__(
+        self, owner: str, name: str, branch: str, alias: Optional[str]
+    ) -> None:
+        self.owner = owner
+        self.name = name
+        self.branch = branch
+        self.alias = alias
+        self.redirect: Dict[str, str] = {}
+
+    def url(self, path: str) -> str:
+        return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
+
+    def __repr__(self) -> str:
+        return f"Repo({self.owner}, {self.name})"
+
+    @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
+    def has_submodules(self) -> bool:
+        try:
+            req = make_request(self.url(f"blob/{self.branch}/.gitmodules"))
+            urllib.request.urlopen(req, timeout=10).close()
+        except urllib.error.HTTPError as e:
+            if e.code == 404:
+                return False
+            else:
+                raise
+        return True
+
+    @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
+    def latest_commit(self) -> Tuple[str, datetime]:
+        commit_url = self.url(f"commits/{self.branch}.atom")
+        commit_req = make_request(commit_url)
+        with urllib.request.urlopen(commit_req, timeout=10) as req:
+            self.check_for_redirect(commit_url, req)
+            xml = req.read()
+            root = ET.fromstring(xml)
+            latest_entry = root.find(ATOM_ENTRY)
+            assert latest_entry is not None, f"No commits found in repository {self}"
+            commit_link = latest_entry.find(ATOM_LINK)
+            assert commit_link is not None, f"No link tag found feed entry {xml}"
+            url = urlparse(commit_link.get("href"))
+            updated_tag = latest_entry.find(ATOM_UPDATED)
+            assert (
+                updated_tag is not None and updated_tag.text is not None
+            ), f"No updated tag found feed entry {xml}"
+            updated = datetime.strptime(updated_tag.text, "%Y-%m-%dT%H:%M:%SZ")
+            return Path(str(url.path)).name, updated
+
+    def check_for_redirect(self, url: str, req: http.client.HTTPResponse):
+        response_url = req.geturl()
+        if url != response_url:
+            new_owner, new_name = (
+                urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
+            )
+            end_line = "\n" if self.alias is None else f" as {self.alias}\n"
+            plugin_line = "{owner}/{name}" + end_line
+
+            old_plugin = plugin_line.format(owner=self.owner, name=self.name)
+            new_plugin = plugin_line.format(owner=new_owner, name=new_name)
+            self.redirect[old_plugin] = new_plugin
+
+    def prefetch_git(self, ref: str) -> str:
+        data = subprocess.check_output(
+            ["nix-prefetch-git", "--fetch-submodules", self.url(""), ref]
+        )
+        return json.loads(data)["sha256"]
+
+    def prefetch_github(self, ref: str) -> str:
+        data = subprocess.check_output(
+            ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
+        )
+        return data.strip().decode("utf-8")
+
+
+class Plugin:
+    def __init__(
+        self,
+        name: str,
+        commit: str,
+        has_submodules: bool,
+        sha256: str,
+        date: Optional[datetime] = None,
+    ) -> None:
+        self.name = name
+        self.commit = commit
+        self.has_submodules = has_submodules
+        self.sha256 = sha256
+        self.date = date
+
+    @property
+    def normalized_name(self) -> str:
+        return self.name.replace(".", "-")
+
+    @property
+    def version(self) -> str:
+        assert self.date is not None
+        return self.date.strftime("%Y-%m-%d")
+
+    def as_json(self) -> Dict[str, str]:
+        copy = self.__dict__.copy()
+        del copy["date"]
+        return copy
+
+
+class Editor:
+    """The configuration of the update script."""
+
+    def __init__(
+        self,
+        name: str,
+        root: Path,
+        get_plugins: str,
+        generate_nix: Callable[[List[Tuple[str, str, Plugin]], str], None],
+        default_in: Optional[Path] = None,
+        default_out: Optional[Path] = None,
+        deprecated: Optional[Path] = None,
+        cache_file: Optional[str] = None,
+    ):
+        self.name = name
+        self.root = root
+        self.get_plugins = get_plugins
+        self.generate_nix = generate_nix
+        self.default_in = default_in or root.joinpath(f"{name}-plugin-names")
+        self.default_out = default_out or root.joinpath("generated.nix")
+        self.deprecated = deprecated or root.joinpath("deprecated.json")
+        self.cache_file = cache_file or f"{name}-plugin-cache.json"
+
+
+class CleanEnvironment(object):
+    def __enter__(self) -> None:
+        self.old_environ = os.environ.copy()
+        local_pkgs = str(Path(__file__).parent.parent.parent)
+        os.environ["NIX_PATH"] = f"localpkgs={local_pkgs}"
+        self.empty_config = NamedTemporaryFile()
+        self.empty_config.write(b"{}")
+        self.empty_config.flush()
+        os.environ["NIXPKGS_CONFIG"] = self.empty_config.name
+
+    def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
+        os.environ.update(self.old_environ)
+        self.empty_config.close()
+
+
+def get_current_plugins(editor: Editor) -> List[Plugin]:
+    with CleanEnvironment():
+        out = subprocess.check_output(["nix", "eval", "--json", editor.get_plugins])
+    data = json.loads(out)
+    plugins = []
+    for name, attr in data.items():
+        p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
+        plugins.append(p)
+    return plugins
+
+
+def prefetch_plugin(
+    user: str,
+    repo_name: str,
+    branch: str,
+    alias: Optional[str],
+    cache: "Optional[Cache]" = None,
+) -> Tuple[Plugin, Dict[str, str]]:
+    log.info("Prefetching plugin %s", repo_name)
+    repo = Repo(user, repo_name, branch, alias)
+    commit, date = repo.latest_commit()
+    has_submodules = repo.has_submodules()
+    cached_plugin = cache[commit] if cache else None
+    if cached_plugin is not None:
+        cached_plugin.name = alias or repo_name
+        cached_plugin.date = date
+        return cached_plugin, repo.redirect
+
+    print(f"prefetch {user}/{repo_name}")
+    if has_submodules:
+        sha256 = repo.prefetch_git(commit)
+    else:
+        sha256 = repo.prefetch_github(commit)
+
+    return (
+        Plugin(alias or repo_name, commit, has_submodules, sha256, date=date),
+        repo.redirect,
+    )
+
+
+def fetch_plugin_from_pluginline(plugin_line: str) -> Plugin:
+    plugin, _ = prefetch_plugin(*parse_plugin_line(plugin_line))
+    return plugin
+
+
+def print_download_error(plugin: str, ex: Exception):
+    print(f"{plugin}: {ex}", file=sys.stderr)
+    ex_traceback = ex.__traceback__
+    tb_lines = [
+        line.rstrip("\n")
+        for line in traceback.format_exception(ex.__class__, ex, ex_traceback)
+    ]
+    print("\n".join(tb_lines))
+
+
+def check_results(
+    results: List[Tuple[str, str, Union[Exception, Plugin], Dict[str, str]]]
+) -> Tuple[List[Tuple[str, str, Plugin]], Dict[str, str]]:
+    failures: List[Tuple[str, Exception]] = []
+    plugins = []
+    redirects: Dict[str, str] = {}
+    for (owner, name, result, redirect) in results:
+        if isinstance(result, Exception):
+            failures.append((name, result))
+        else:
+            plugins.append((owner, name, result))
+            redirects.update(redirect)
+
+    print(f"{len(results) - len(failures)} plugins were checked", end="")
+    if len(failures) == 0:
+        print()
+        return plugins, redirects
+    else:
+        print(f", {len(failures)} plugin(s) could not be downloaded:\n")
+
+        for (plugin, exception) in failures:
+            print_download_error(plugin, exception)
+
+        sys.exit(1)
+
+
+def parse_plugin_line(line: str) -> Tuple[str, str, str, Optional[str]]:
+    branch = "master"
+    alias = None
+    name, repo = line.split("/")
+    if " as " in repo:
+        repo, alias = repo.split(" as ")
+        alias = alias.strip()
+    if "@" in repo:
+        repo, branch = repo.split("@")
+
+    return (name.strip(), repo.strip(), branch.strip(), alias)
+
+
+def load_plugin_spec(plugin_file: str) -> List[Tuple[str, str, str, Optional[str]]]:
+    plugins = []
+    with open(plugin_file) as f:
+        for line in f:
+            plugin = parse_plugin_line(line)
+            if not plugin[0]:
+                msg = f"Invalid repository {line}, must be in the format owner/repo[ as alias]"
+                print(msg, file=sys.stderr)
+                sys.exit(1)
+            plugins.append(plugin)
+    return plugins
+
+
+def get_cache_path(cache_file_name: str) -> Optional[Path]:
+    xdg_cache = os.environ.get("XDG_CACHE_HOME", None)
+    if xdg_cache is None:
+        home = os.environ.get("HOME", None)
+        if home is None:
+            return None
+        xdg_cache = str(Path(home, ".cache"))
+
+    return Path(xdg_cache, cache_file_name)
+
+
+class Cache:
+    def __init__(self, initial_plugins: List[Plugin], cache_file_name: str) -> None:
+        self.cache_file = get_cache_path(cache_file_name)
+
+        downloads = {}
+        for plugin in initial_plugins:
+            downloads[plugin.commit] = plugin
+        downloads.update(self.load())
+        self.downloads = downloads
+
+    def load(self) -> Dict[str, Plugin]:
+        if self.cache_file is None or not self.cache_file.exists():
+            return {}
+
+        downloads: Dict[str, Plugin] = {}
+        with open(self.cache_file) as f:
+            data = json.load(f)
+            for attr in data.values():
+                p = Plugin(
+                    attr["name"], attr["commit"], attr["has_submodules"], attr["sha256"]
+                )
+                downloads[attr["commit"]] = p
+        return downloads
+
+    def store(self) -> None:
+        if self.cache_file is None:
+            return
+
+        os.makedirs(self.cache_file.parent, exist_ok=True)
+        with open(self.cache_file, "w+") as f:
+            data = {}
+            for name, attr in self.downloads.items():
+                data[name] = attr.as_json()
+            json.dump(data, f, indent=4, sort_keys=True)
+
+    def __getitem__(self, key: str) -> Optional[Plugin]:
+        return self.downloads.get(key, None)
+
+    def __setitem__(self, key: str, value: Plugin) -> None:
+        self.downloads[key] = value
+
+
+def prefetch(
+    args: Tuple[str, str, str, Optional[str]], cache: Cache
+) -> Tuple[str, str, Union[Exception, Plugin], dict]:
+    assert len(args) == 4
+    owner, repo, branch, alias = args
+    try:
+        plugin, redirect = prefetch_plugin(owner, repo, branch, alias, cache)
+        cache[plugin.commit] = plugin
+        return (owner, repo, plugin, redirect)
+    except Exception as e:
+        return (owner, repo, e, {})
+
+
+def rewrite_input(
+    input_file: Path,
+    deprecated: Path,
+    redirects: Dict[str, str] = None,
+    append: Tuple = (),
+):
+    with open(input_file, "r") as f:
+        lines = f.readlines()
+
+    lines.extend(append)
+
+    if redirects:
+        lines = [redirects.get(line, line) for line in lines]
+
+        cur_date_iso = datetime.now().strftime("%Y-%m-%d")
+        with open(deprecated, "r") as f:
+            deprecations = json.load(f)
+        for old, new in redirects.items():
+            old_plugin = fetch_plugin_from_pluginline(old)
+            new_plugin = fetch_plugin_from_pluginline(new)
+            if old_plugin.normalized_name != new_plugin.normalized_name:
+                deprecations[old_plugin.normalized_name] = {
+                    "new": new_plugin.normalized_name,
+                    "date": cur_date_iso,
+                }
+        with open(deprecated, "w") as f:
+            json.dump(deprecations, f, indent=4, sort_keys=True)
+            f.write("\n")
+
+    lines = sorted(lines, key=str.casefold)
+
+    with open(input_file, "w") as f:
+        f.writelines(lines)
+
+
+def parse_args(editor: Editor):
+    parser = argparse.ArgumentParser(
+        description=(
+            f"Updates nix derivations for {editor.name} plugins"
+            f"By default from {editor.default_in} to {editor.default_out}"
+        )
+    )
+    parser.add_argument(
+        "--add",
+        dest="add_plugins",
+        default=[],
+        action="append",
+        help=f"Plugin to add to {editor.name}Plugins from Github in the form owner/repo",
+    )
+    parser.add_argument(
+        "--input-names",
+        "-i",
+        dest="input_file",
+        default=editor.default_in,
+        help="A list of plugins in the form owner/repo",
+    )
+    parser.add_argument(
+        "--out",
+        "-o",
+        dest="outfile",
+        default=editor.default_out,
+        help="Filename to save generated nix code",
+    )
+    parser.add_argument(
+        "--proc",
+        "-p",
+        dest="proc",
+        type=int,
+        default=30,
+        help="Number of concurrent processes to spawn.",
+    )
+    parser.add_argument(
+        "--no-commit", "-n", action="store_true", default=False,
+        help="Whether to autocommit changes"
+    )
+    parser.add_argument(
+        "--debug", "-d", choices=LOG_LEVELS.keys(),
+        default=logging.getLevelName(logging.WARN),
+        help="Adjust log level"
+    )
+    return parser.parse_args()
+
+
+def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
+    repo.index.add([str(f.resolve()) for f in files])
+
+    if repo.index.diff("HEAD"):
+        print(f'committing to nixpkgs "{message}"')
+        repo.index.commit(message)
+    else:
+        print("no changes in working tree to commit")
+
+
+def get_update(input_file: str, outfile: str, proc: int, editor: Editor):
+    cache: Cache = Cache(get_current_plugins(editor), editor.cache_file)
+    _prefetch = functools.partial(prefetch, cache=cache)
+
+    def update() -> dict:
+        plugin_names = load_plugin_spec(input_file)
+
+        try:
+            pool = Pool(processes=proc)
+            results = pool.map(_prefetch, plugin_names)
+        finally:
+            cache.store()
+
+        plugins, redirects = check_results(results)
+
+        editor.generate_nix(plugins, outfile)
+
+        return redirects
+
+    return update
+
+
+def update_plugins(editor: Editor):
+    """The main entry function of this module. All input arguments are grouped in the `Editor`."""
+
+    args = parse_args(editor)
+    log.setLevel(LOG_LEVELS[args.debug])
+
+    log.info("Start updating plugins")
+    nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
+    update = get_update(args.input_file, args.outfile, args.proc, editor)
+
+    redirects = update()
+    rewrite_input(args.input_file, editor.deprecated, redirects)
+
+    autocommit = not args.no_commit
+
+    if autocommit:
+        commit(nixpkgs_repo, f"{editor.name}Plugins: update", [args.outfile])
+
+    if redirects:
+        update()
+        if autocommit:
+            commit(
+                nixpkgs_repo,
+                f"{editor.name}Plugins: resolve github repository redirects",
+                [args.outfile, args.input_file, editor.deprecated],
+            )
+
+    for plugin_line in args.add_plugins:
+        rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
+        update()
+        plugin = fetch_plugin_from_pluginline(plugin_line)
+        if autocommit:
+            commit(
+                nixpkgs_repo,
+                "{editor}Plugins.{name}: init at {version}".format(
+                    editor=editor.name, name=plugin.normalized_name, version=plugin.version
+                ),
+                [args.outfile, args.input_file],
+            )
diff --git a/nixpkgs/maintainers/scripts/rebuild-amount.sh b/nixpkgs/maintainers/scripts/rebuild-amount.sh
new file mode 100755
index 000000000000..ca89e08073e8
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/rebuild-amount.sh
@@ -0,0 +1,126 @@
+#!/usr/bin/env bash
+set -e
+
+# --print: avoid dependency on environment
+optPrint=
+if [ "$1" == "--print" ]; then
+	optPrint=true
+	shift
+fi
+
+if [ "$#" != 1 ] && [ "$#" != 2 ]; then
+	cat <<-EOF
+	Usage: $0 [--print] commit-spec [commit-spec]
+	    You need to be in a git-controlled nixpkgs tree.
+	    The current state of the tree will be used if the second commit is missing.
+	EOF
+	exit 1
+fi
+
+# A slightly hacky way to get the config.
+parallel="$(echo 'config.rebuild-amount.parallel or false' | nix-repl . 2>/dev/null \
+			| grep -v '^\(nix-repl.*\)\?$' | tail -n 1 || true)"
+
+echo "Estimating rebuild amount by counting changed Hydra jobs."
+
+toRemove=()
+
+cleanup() {
+	rm -rf "${toRemove[@]}"
+}
+trap cleanup EXIT SIGINT SIGQUIT ERR
+
+MKTEMP='mktemp --tmpdir nix-rebuild-amount-XXXXXXXX'
+
+nixexpr() {
+	cat <<-EONIX
+		let
+		  lib = import $1/lib;
+		  hydraJobs = import $1/pkgs/top-level/release.nix
+		    # Compromise: accuracy vs. resources needed for evaluation.
+		    { supportedSystems = cfg.systems or [ "x86_64-linux" "x86_64-darwin" ]; };
+		  cfg = (import $1 {}).config.rebuild-amount or {};
+
+		  recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
+
+		  # hydraJobs leaves recurseForDerivations as empty attrmaps;
+		  # that would break nix-env and we also need to recurse everywhere.
+		  tweak = lib.mapAttrs
+		    (name: val:
+		      if name == "recurseForDerivations" then true
+		      else if lib.isAttrs val && val.type or null != "derivation"
+		              then recurseIntoAttrs (tweak val)
+		      else val
+		    );
+
+		  # Some of these contain explicit references to platform(s) we want to avoid;
+		  # some even (transitively) depend on ~/.nixpkgs/config.nix (!)
+		  blacklist = [
+		    "tarball" "metrics" "manual"
+		    "darwin-tested" "unstable" "stdenvBootstrapTools"
+		    "moduleSystem" "lib-tests" # these just confuse the output
+		  ];
+
+		in
+		  tweak (builtins.removeAttrs hydraJobs blacklist)
+	EONIX
+}
+
+# Output packages in tree $2 that weren't in $1.
+# Changing the output hash or name is taken as a change.
+# Extra nix-env parameters can be in $3
+newPkgs() {
+	# We use files instead of pipes, as running multiple nix-env processes
+	# could eat too much memory for a standard 4GiB machine.
+	local -a list
+	for i in 1 2; do
+		local l="$($MKTEMP)"
+		list[$i]="$l"
+		toRemove+=("$l")
+
+		local expr="$($MKTEMP)"
+		toRemove+=("$expr")
+		nixexpr "${!i}" > "$expr"
+
+		nix-env -f "$expr" -qaP --no-name --out-path --show-trace $3 \
+			| sort > "${list[$i]}" &
+
+		if [ "$parallel" != "true" ]; then
+			wait
+		fi
+	done
+
+	wait
+	comm -13 "${list[@]}"
+}
+
+# Prepare nixpkgs trees.
+declare -a tree
+for i in 1 2; do
+	if [ -n "${!i}" ]; then # use the given commit
+		dir="$($MKTEMP -d)"
+		tree[$i]="$dir"
+		toRemove+=("$dir")
+
+		git clone --shared --no-checkout --quiet . "${tree[$i]}"
+		(cd "${tree[$i]}" && git checkout --quiet "${!i}")
+	else #use the current tree
+		tree[$i]="$(pwd)"
+	fi
+done
+
+newlist="$($MKTEMP)"
+toRemove+=("$newlist")
+# Notes:
+#	- the evaluation is done on x86_64-linux, like on Hydra.
+#	- using $newlist file so that newPkgs() isn't in a sub-shell (because of toRemove)
+newPkgs "${tree[1]}" "${tree[2]}" '--argstr system "x86_64-linux"' > "$newlist"
+
+# Hacky: keep only the last word of each attribute path and sort.
+sed -n 's/\([^. ]*\.\)*\([^. ]*\) .*$/\2/p' < "$newlist" \
+	| sort | uniq -c
+
+if [ -n "$optPrint" ]; then
+	echo
+	cat "$newlist"
+fi
diff --git a/nixpkgs/maintainers/scripts/update-channel-branches.sh b/nixpkgs/maintainers/scripts/update-channel-branches.sh
new file mode 100755
index 000000000000..d65cf3ec5f63
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-channel-branches.sh
@@ -0,0 +1,112 @@
+#!/bin/sh
+set -e
+
+: ${NIXOS_CHANNELS:=https://nixos.org/channels/}
+: ${CHANNELS_NAMESPACE:=refs/heads/channels/}
+
+# List all channels which are currently in the repository which we would
+# have to remove if they are not found again.
+deadChannels=$(git for-each-ref --format="%(refname)" "$CHANNELS_NAMESPACE")
+
+updateRef() {
+    local channelName=$1
+    local newRev=$2
+
+    # if the inputs are not valid, then we do not update any branch.
+    test -z "$newRev" -o -z "$channelName" && return;
+
+    # Update the local refs/heads/channels/* branches to be in-sync with the
+    # channel references.
+    local branch=$CHANNELS_NAMESPACE$channelName
+    oldRev=$(git rev-parse --short "$branch" 2>/dev/null || true)
+    if test "$oldRev" != "$newRev"; then
+        if git update-ref "$branch" "$newRev" 2>/dev/null; then
+            if test -z "$oldRev"; then
+                echo " * [new branch]      $newRev           -> ${branch#refs/heads/}"
+            else
+                echo "                     $oldRev..$newRev  -> ${branch#refs/heads/}"
+            fi
+        else
+            if test -z "$oldRev"; then
+                echo " * [missing rev]     $newRev           -> ${branch#refs/heads/}"
+            else
+                echo "   [missing rev]     $oldRev..$newRev  -> ${branch#refs/heads/}"
+            fi
+        fi
+    fi
+
+    # Filter out the current channel from the list of dead channels.
+    deadChannels=$(grep -v "$CHANNELS_NAMESPACE$channelName" <<EOF
+$deadChannels
+EOF
+) ||true
+}
+
+# Find the name of all channels which are listed in the directory.
+echo "Fetching channels from $NIXOS_CHANNELS:"
+for channelName in : $(curl -s "$NIXOS_CHANNELS" | sed -n '/folder/ { s,.*href=",,; s,/".*,,; p }'); do
+    test "$channelName" = : && continue;
+
+    # Do not follow redirections, such that we can extract the
+    # short-changeset from the name of the directory where we are
+    # redirected to.
+    sha1=$(curl -sI "$NIXOS_CHANNELS$channelName" | sed -n '/Location/ { s,.*\.\([a-f0-9]*\)[ \r]*$,\1,; p; }')
+
+    updateRef "remotes/$channelName" "$sha1"
+done
+
+echo "Fetching channels from nixos-version:"
+if currentSystem=$(nixos-version 2>/dev/null); then
+    # If the system is entirely build from a custom nixpkgs version,
+    # then the version is not annotated in git version. This sed
+    # expression is basically matching that the expressions end with
+    # ".<sha1> (Name)" to extract the sha1.
+    sha1=$(echo "$currentSystem" | sed -n 's,^.*\.\([a-f0-9]*\) *(.*)$,\1,; T skip; p; :skip;')
+
+    updateRef current-system "$sha1"
+fi
+
+echo "Fetching channels from $HOME/.nix-defexpr:"
+for revFile in : $(find -L "$HOME/.nix-defexpr/" -maxdepth 4 -name svn-revision); do
+    test "$revFile" = : && continue;
+
+    # Deconstruct a path such as, into:
+    #
+    #   /home/luke/.nix-defexpr/channels_root/nixos/nixpkgs/svn-revision
+    #     channelName = root/nixos
+    #
+    #   /home/luke/.nix-defexpr/channels/nixpkgs/svn-revision
+    #     channelName = nixpkgs
+    #
+    user=${revFile#*.nix-defexpr/channels}
+    repo=${user#*/}
+    repo=${repo%%/*}
+    user=${user%%/*}
+    user=${user#_}
+    test -z "$user" && user=$USER
+    channelName="$user${user:+/}$repo"
+
+    sha1=$(sed -n 's,^.*\.\([a-f0-9]*\)$,\1,; T skip; p; :skip;' "$revFile")
+
+    updateRef "$channelName" "$sha1"
+done
+
+# Suggest to remove channel branches which are no longer found by this
+# script. This is to handle the cases where a local/remote channel
+# disappear. We should not attempt to remove manually any branches, as they
+# might be user branches.
+if test -n "$deadChannels"; then
+
+    echo "
+Some old channel branches are still in your repository, if you
+want to remove them, run the following command(s):
+"
+
+    while read branch; do
+        echo "    git update-ref -d $branch"
+    done <<EOF
+$deadChannels
+EOF
+
+    echo
+fi
diff --git a/nixpkgs/maintainers/scripts/update-luarocks-packages b/nixpkgs/maintainers/scripts/update-luarocks-packages
new file mode 100755
index 000000000000..da4d224bd330
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-luarocks-packages
@@ -0,0 +1,136 @@
+#!/usr/bin/env nix-shell
+#!nix-shell update-luarocks-shell.nix -i bash
+
+# You'll likely want to use
+# ``
+# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
+# ``
+# to update all libraries in that folder.
+# to debug, redirect stderr to stdout with 2>&1
+
+# stop the script upon C-C
+set -eu -o pipefail
+
+CSV_FILE="maintainers/scripts/luarocks-packages.csv"
+TMP_FILE="$(mktemp)"
+# Set in the update-luarocks-shell.nix
+NIXPKGS_PATH="$LUAROCKS_NIXPKGS_PATH"
+export LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
+
+# 10 is a pretty arbitrary number of simultaneous jobs, but it is generally
+# impolite to hit a webserver with *too* many simultaneous connections :)
+PARALLEL_JOBS=1
+
+exit_trap() {
+    local lc="$BASH_COMMAND" rc=$?
+    test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
+}
+
+print_help() {
+    echo "Usage: $0 <GENERATED_FILE>"
+    echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
+    echo ""
+    echo " -c <CSV_FILE> to set the list of luarocks package to generate"
+    exit 1
+}
+
+if [ $# -lt 1 ]; then
+    print_help
+    exit 1
+fi
+
+trap exit_trap EXIT
+
+while getopts ":hc:" opt; do
+    case $opt in
+    h)
+        print_help
+        ;;
+    c)
+        echo "Loading package list from $OPTARG !" >&2
+        CSV_FILE="$OPTARG"
+        ;;
+    \?)
+        echo "Invalid option: -$OPTARG" >&2
+        ;;
+    esac
+    shift $((OPTIND - 1))
+done
+
+GENERATED_NIXFILE="$1"
+
+HEADER="
+/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
+Regenerate it with:
+nixpkgs$ ${0} ${GENERATED_NIXFILE}
+
+These packages are manually refined in lua-overrides.nix
+*/
+{ self, stdenv, lib, fetchurl, fetchgit, pkgs, ... } @ args:
+self: super:
+with self;
+{
+"
+
+FOOTER="
+}
+/* GENERATED */
+"
+
+function convert_pkg() {
+    nix_pkg_name="$1"
+    lua_pkg_name="$2"
+    server="$3"
+    pkg_version="$4"
+    lua_version="$5"
+    maintainers="$6"
+
+    if [ "${nix_pkg_name:0:1}" == "#" ]; then
+        echo "Skipping comment ${*}" >&2
+        return
+    fi
+    if [ -z "$lua_pkg_name" ]; then
+        echo "Using nix_name as lua_pkg_name for '$nix_pkg_name'" >&2
+        lua_pkg_name="$nix_pkg_name"
+    fi
+
+    echo "Building expression for $lua_pkg_name (version $pkg_version) from server [$server]" >&2
+    luarocks_args=(nix)
+    if [[ -n $server ]]; then
+        luarocks_args+=("--only-server=$server")
+    fi
+    if [[ -n $maintainers ]]; then
+        luarocks_args+=("--maintainers=$maintainers")
+    fi
+    if [[ -n $lua_version ]]; then
+        lua_drv_path=$(nix-build --no-out-link "$NIXPKGS_PATH" -A "$lua_version")
+        luarocks_args+=("--lua-dir=$lua_drv_path/bin")
+    fi
+    luarocks_args+=("$lua_pkg_name")
+    if [[ -n $pkg_version ]]; then
+        luarocks_args+=("$pkg_version")
+    fi
+    echo "Running 'luarocks ${luarocks_args[*]}'" >&2
+    if drv="$nix_pkg_name = $(luarocks "${luarocks_args[@]}")"; then
+        echo "$drv"
+    else
+        echo "Failed to convert $nix_pkg_name" >&2
+        return 1
+    fi
+}
+
+# params needed when called via callPackage
+echo "$HEADER" | tee "$TMP_FILE"
+
+# Ensure parallel can run our bash function
+export -f convert_pkg
+export SHELL=bash
+# Read each line in the csv file and run convert_pkg for each, in parallel
+parallel --group --keep-order --halt now,fail=1 --jobs "$PARALLEL_JOBS" --colsep ',' convert_pkg {} <"$CSV_FILE" | tee -a "$TMP_FILE"
+
+# close the set
+echo "$FOOTER" | tee -a "$TMP_FILE"
+
+cp "$TMP_FILE" "$GENERATED_NIXFILE"
+
+# vim: set ts=4 sw=4 ft=sh:
diff --git a/nixpkgs/maintainers/scripts/update-luarocks-shell.nix b/nixpkgs/maintainers/scripts/update-luarocks-shell.nix
new file mode 100644
index 000000000000..d3f342b07a96
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-luarocks-shell.nix
@@ -0,0 +1,12 @@
+{ nixpkgs ? import ../.. { }
+}:
+with nixpkgs;
+mkShell {
+  packages = [
+    bash
+    luarocks-nix
+    nix-prefetch-scripts
+    parallel
+  ];
+  LUAROCKS_NIXPKGS_PATH = toString nixpkgs.path;
+}
diff --git a/nixpkgs/maintainers/scripts/update-python-libraries b/nixpkgs/maintainers/scripts/update-python-libraries
new file mode 100755
index 000000000000..4a6024c40380
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-python-libraries
@@ -0,0 +1,5 @@
+#!/bin/sh
+build=`nix-build -E "with import (fetchTarball "channel:nixpkgs-unstable") {}; python3.withPackages(ps: with ps; [ packaging requests toolz ])"`
+python=${build}/bin/python
+exec ${python} pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py $@
+
diff --git a/nixpkgs/maintainers/scripts/update-redirected-urls.sh b/nixpkgs/maintainers/scripts/update-redirected-urls.sh
new file mode 100755
index 000000000000..5ffa9aca5f68
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-redirected-urls.sh
@@ -0,0 +1,12 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -p bash curl ripgrep jq -i bash
+
+set -euxo pipefail
+
+# Possibly also add non-https redirect, but there were non of those when I first
+# made this script to test that. Feel free to add it when it is relevant.
+curl https://repology.org/api/v1/repository/nix_unstable/problems \
+   | jq -r '.[] | select(.type == "homepage_permanent_https_redirect") | .data | "s@\(.url)@\(.target)@"' \
+   | sort | uniq | tee script.sed
+find -name '*.nix' | xargs -P4 -- sed -f script.sed -i
+rm script.sed
diff --git a/nixpkgs/maintainers/scripts/update-ruby-packages b/nixpkgs/maintainers/scripts/update-ruby-packages
new file mode 100755
index 000000000000..fef6b75ded08
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update-ruby-packages
@@ -0,0 +1,13 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p bundler bundix
+
+set -euf -o pipefail
+
+(
+  cd pkgs/development/ruby-modules/with-packages
+  rm -f gemset.nix Gemfile.lock
+  bundle lock
+  bundix
+  mv gemset.nix ../../../top-level/ruby-packages.nix
+  rm -f Gemfile.lock
+)
diff --git a/nixpkgs/maintainers/scripts/update.nix b/nixpkgs/maintainers/scripts/update.nix
new file mode 100755
index 000000000000..7435cf64425c
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update.nix
@@ -0,0 +1,212 @@
+{ package ? null
+, maintainer ? null
+, predicate ? null
+, path ? null
+, max-workers ? null
+, include-overlays ? false
+, keep-going ? null
+, commit ? null
+}:
+
+# TODO: add assert statements
+
+let
+  pkgs = import ./../../default.nix (
+    if include-overlays == false then
+      { overlays = []; }
+    else if include-overlays == true then
+      { } # Let Nixpkgs include overlays impurely.
+    else { overlays = include-overlays; }
+  );
+
+  inherit (pkgs) lib;
+
+  /* Remove duplicate elements from the list based on some extracted value. O(n^2) complexity.
+   */
+  nubOn = f: list:
+    if list == [] then
+      []
+    else
+      let
+        x = lib.head list;
+        xs = lib.filter (p: f x != f p) (lib.drop 1 list);
+      in
+        [x] ++ nubOn f xs;
+
+  /* Recursively find all packages (derivations) in `pkgs` matching `cond` predicate.
+
+    Type: packagesWithPath :: AttrPath → (AttrPath → derivation → bool) → AttrSet → List<AttrSet{attrPath :: str; package :: derivation; }>
+          AttrPath :: [str]
+
+    The packages will be returned as a list of named pairs comprising of:
+      - attrPath: stringified attribute path (based on `rootPath`)
+      - package: corresponding derivation
+   */
+  packagesWithPath = rootPath: cond: pkgs:
+    let
+      packagesWithPathInner = path: pathContent:
+        let
+          result = builtins.tryEval pathContent;
+
+          dedupResults = lst: nubOn ({ package, attrPath }: package.updateScript) (lib.concatLists lst);
+        in
+          if result.success then
+            let
+              evaluatedPathContent = result.value;
+            in
+              if lib.isDerivation evaluatedPathContent then
+                lib.optional (cond path evaluatedPathContent) { attrPath = lib.concatStringsSep "." path; package = evaluatedPathContent; }
+              else if lib.isAttrs evaluatedPathContent then
+                # If user explicitly points to an attrSet or it is marked for recursion, we recur.
+                if path == rootPath || evaluatedPathContent.recurseForDerivations or false || evaluatedPathContent.recurseForRelease or false then
+                  dedupResults (lib.mapAttrsToList (name: elem: packagesWithPathInner (path ++ [name]) elem) evaluatedPathContent)
+                else []
+              else []
+          else [];
+    in
+      packagesWithPathInner rootPath pkgs;
+
+  /* Recursively find all packages (derivations) in `pkgs` matching `cond` predicate.
+   */
+  packagesWith = packagesWithPath [];
+
+  /* Recursively find all packages in `pkgs` with updateScript matching given predicate.
+   */
+  packagesWithUpdateScriptMatchingPredicate = cond:
+    packagesWith (path: pkg: builtins.hasAttr "updateScript" pkg && cond path pkg);
+
+  /* Recursively find all packages in `pkgs` with updateScript by given maintainer.
+   */
+  packagesWithUpdateScriptAndMaintainer = maintainer':
+    let
+      maintainer =
+        if ! builtins.hasAttr maintainer' lib.maintainers then
+          builtins.throw "Maintainer with name `${maintainer'} does not exist in `maintainers/maintainer-list.nix`."
+        else
+          builtins.getAttr maintainer' lib.maintainers;
+    in
+      packagesWithUpdateScriptMatchingPredicate (path: pkg:
+                         (if builtins.hasAttr "maintainers" pkg.meta
+                           then (if builtins.isList pkg.meta.maintainers
+                                   then builtins.elem maintainer pkg.meta.maintainers
+                                   else maintainer == pkg.meta.maintainers
+                                )
+                           else false
+                         )
+                   );
+
+  /* Recursively find all packages under `path` in `pkgs` with updateScript.
+   */
+  packagesWithUpdateScript = path: pkgs:
+    let
+      prefix = lib.splitString "." path;
+      pathContent = lib.attrByPath prefix null pkgs;
+    in
+      if pathContent == null then
+        builtins.throw "Attribute path `${path}` does not exists."
+      else
+        packagesWithPath prefix (path: pkg: builtins.hasAttr "updateScript" pkg)
+                       pathContent;
+
+  /* Find a package under `path` in `pkgs` and require that it has an updateScript.
+   */
+  packageByName = path: pkgs:
+    let
+        package = lib.attrByPath (lib.splitString "." path) null pkgs;
+    in
+      if package == null then
+        builtins.throw "Package with an attribute name `${path}` does not exists."
+      else if ! builtins.hasAttr "updateScript" package then
+        builtins.throw "Package with an attribute name `${path}` does not have a `passthru.updateScript` attribute defined."
+      else
+        { attrPath = path; inherit package; };
+
+  /* List of packages matched based on the CLI arguments.
+   */
+  packages =
+    if package != null then
+      [ (packageByName package pkgs) ]
+    else if predicate != null then
+      packagesWithUpdateScriptMatchingPredicate predicate pkgs
+    else if maintainer != null then
+      packagesWithUpdateScriptAndMaintainer maintainer pkgs
+    else if path != null then
+      packagesWithUpdateScript path pkgs
+    else
+      builtins.throw "No arguments provided.\n\n${helpText}";
+
+  helpText = ''
+    Please run:
+
+        % nix-shell maintainers/scripts/update.nix --argstr maintainer garbas
+
+    to run all update scripts for all packages that lists \`garbas\` as a maintainer
+    and have \`updateScript\` defined, or:
+
+        % nix-shell maintainers/scripts/update.nix --argstr package gnome.nautilus
+
+    to run update script for specific package, or
+
+        % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: builtins.isList pkg.updateScript && builtins.length pkg.updateScript >= 1 && (let script = builtins.head pkg.updateScript; in builtins.isAttrs script && script.name == "gnome-update-script"))'
+
+    to run update script for all packages matching given predicate, or
+
+        % nix-shell maintainers/scripts/update.nix --argstr path gnome
+
+    to run update script for all package under an attribute path.
+
+    You can also add
+
+        --argstr max-workers 8
+
+    to increase the number of jobs in parallel, or
+
+        --argstr keep-going true
+
+    to continue running when a single update fails.
+
+    You can also make the updater automatically commit on your behalf from updateScripts
+    that support it by adding
+
+        --argstr commit true
+  '';
+
+  /* Transform a matched package into an object for update.py.
+   */
+  packageData = { package, attrPath }: {
+    name = package.name;
+    pname = lib.getName package;
+    oldVersion = lib.getVersion package;
+    updateScript = map builtins.toString (lib.toList (package.updateScript.command or package.updateScript));
+    supportedFeatures = package.updateScript.supportedFeatures or [];
+    attrPath = package.updateScript.attrPath or attrPath;
+  };
+
+  /* JSON file with data for update.py.
+   */
+  packagesJson = pkgs.writeText "packages.json" (builtins.toJSON (map packageData packages));
+
+  optionalArgs =
+    lib.optional (max-workers != null) "--max-workers=${max-workers}"
+    ++ lib.optional (keep-going == "true") "--keep-going"
+    ++ lib.optional (commit == "true") "--commit";
+
+  args = [ packagesJson ] ++ optionalArgs;
+
+in pkgs.stdenv.mkDerivation {
+  name = "nixpkgs-update-script";
+  buildCommand = ''
+    echo ""
+    echo "----------------------------------------------------------------"
+    echo ""
+    echo "Not possible to update packages using \`nix-build\`"
+    echo ""
+    echo "${helpText}"
+    echo "----------------------------------------------------------------"
+    exit 1
+  '';
+  shellHook = ''
+    unset shellHook # do not contaminate nested shells
+    exec ${pkgs.python3.interpreter} ${./update.py} ${builtins.concatStringsSep " " args}
+  '';
+}
diff --git a/nixpkgs/maintainers/scripts/update.py b/nixpkgs/maintainers/scripts/update.py
new file mode 100644
index 000000000000..eb26a472e926
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/update.py
@@ -0,0 +1,225 @@
+from __future__ import annotations
+from typing import Dict, Generator, List, Optional, Tuple
+import argparse
+import asyncio
+import contextlib
+import json
+import os
+import re
+import subprocess
+import sys
+import tempfile
+
+class CalledProcessError(Exception):
+    process: asyncio.subprocess.Process
+
+def eprint(*args, **kwargs):
+    print(*args, file=sys.stderr, **kwargs)
+
+async def check_subprocess(*args, **kwargs):
+    """
+    Emulate check argument of subprocess.run function.
+    """
+    process = await asyncio.create_subprocess_exec(*args, **kwargs)
+    returncode = await process.wait()
+
+    if returncode != 0:
+        error = CalledProcessError()
+        error.process = process
+
+        raise error
+
+    return process
+
+async def run_update_script(nixpkgs_root: str, merge_lock: asyncio.Lock, temp_dir: Optional[Tuple[str, str]], package: Dict, keep_going: bool):
+    worktree: Optional[str] = None
+
+    update_script_command = package['updateScript']
+
+    if temp_dir is not None:
+        worktree, _branch = temp_dir
+
+        # Ensure the worktree is clean before update.
+        await check_subprocess('git', 'reset', '--hard', '--quiet', 'HEAD', cwd=worktree)
+
+        # Update scripts can use $(dirname $0) to get their location but we want to run
+        # their clones in the git worktree, not in the main nixpkgs repo.
+        update_script_command = map(lambda arg: re.sub(r'^{0}'.format(re.escape(nixpkgs_root)), worktree, arg), update_script_command)
+
+    eprint(f" - {package['name']}: UPDATING ...")
+
+    try:
+        update_process = await check_subprocess('env', f"UPDATE_NIX_ATTR_PATH={package['attrPath']}", *update_script_command, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, cwd=worktree)
+        update_info = await update_process.stdout.read()
+
+        await merge_changes(merge_lock, package, update_info, temp_dir)
+    except KeyboardInterrupt as e:
+        eprint('Cancelling…')
+        raise asyncio.exceptions.CancelledError()
+    except CalledProcessError as e:
+        eprint(f" - {package['name']}: ERROR")
+        eprint()
+        eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------")
+        eprint()
+        stderr = await e.process.stderr.read()
+        eprint(stderr.decode('utf-8'))
+        with open(f"{package['pname']}.log", 'wb') as logfile:
+            logfile.write(stderr)
+        eprint()
+        eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------")
+
+        if not keep_going:
+            raise asyncio.exceptions.CancelledError()
+
+@contextlib.contextmanager
+def make_worktree() -> Generator[Tuple[str, str], None, None]:
+    with tempfile.TemporaryDirectory() as wt:
+        branch_name = f'update-{os.path.basename(wt)}'
+        target_directory = f'{wt}/nixpkgs'
+
+        subprocess.run(['git', 'worktree', 'add', '-b', branch_name, target_directory])
+        yield (target_directory, branch_name)
+        subprocess.run(['git', 'worktree', 'remove', '--force', target_directory])
+        subprocess.run(['git', 'branch', '-D', branch_name])
+
+async def commit_changes(name: str, merge_lock: asyncio.Lock, worktree: str, branch: str, changes: List[Dict]) -> None:
+    for change in changes:
+        # Git can only handle a single index operation at a time
+        async with merge_lock:
+            await check_subprocess('git', 'add', *change['files'], cwd=worktree)
+            commit_message = '{attrPath}: {oldVersion} → {newVersion}'.format(**change)
+            await check_subprocess('git', 'commit', '--quiet', '-m', commit_message, cwd=worktree)
+            await check_subprocess('git', 'cherry-pick', branch)
+
+async def check_changes(package: Dict, worktree: str, update_info: str):
+    if 'commit' in package['supportedFeatures']:
+        changes = json.loads(update_info)
+    else:
+        changes = [{}]
+
+    # Try to fill in missing attributes when there is just a single change.
+    if len(changes) == 1:
+        # Dynamic data from updater take precedence over static data from passthru.updateScript.
+        if 'attrPath' not in changes[0]:
+            # update.nix is always passing attrPath
+            changes[0]['attrPath'] = package['attrPath']
+
+        if 'oldVersion' not in changes[0]:
+            # update.nix is always passing oldVersion
+            changes[0]['oldVersion'] = package['oldVersion']
+
+        if 'newVersion' not in changes[0]:
+            attr_path = changes[0]['attrPath']
+            obtain_new_version_process = await check_subprocess('nix-instantiate', '--expr', f'with import ./. {{}}; lib.getVersion {attr_path}', '--eval', '--strict', '--json', stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, cwd=worktree)
+            changes[0]['newVersion'] = json.loads((await obtain_new_version_process.stdout.read()).decode('utf-8'))
+
+        if 'files' not in changes[0]:
+            changed_files_process = await check_subprocess('git', 'diff', '--name-only', stdout=asyncio.subprocess.PIPE, cwd=worktree)
+            changed_files = (await changed_files_process.stdout.read()).splitlines()
+            changes[0]['files'] = changed_files
+
+            if len(changed_files) == 0:
+                return []
+
+    return changes
+
+async def merge_changes(merge_lock: asyncio.Lock, package: Dict, update_info: str, temp_dir: Optional[Tuple[str, str]]) -> None:
+    if temp_dir is not None:
+        worktree, branch = temp_dir
+        changes = await check_changes(package, worktree, update_info)
+
+        if len(changes) > 0:
+            await commit_changes(package['name'], merge_lock, worktree, branch, changes)
+        else:
+            eprint(f" - {package['name']}: DONE, no changes.")
+    else:
+        eprint(f" - {package['name']}: DONE.")
+
+async def updater(nixpkgs_root: str, temp_dir: Optional[Tuple[str, str]], merge_lock: asyncio.Lock, packages_to_update: asyncio.Queue[Optional[Dict]], keep_going: bool, commit: bool):
+    while True:
+        package = await packages_to_update.get()
+        if package is None:
+            # A sentinel received, we are done.
+            return
+
+        if not ('commit' in package['supportedFeatures'] or 'attrPath' in package):
+            temp_dir = None
+
+        await run_update_script(nixpkgs_root, merge_lock, temp_dir, package, keep_going)
+
+async def start_updates(max_workers: int, keep_going: bool, commit: bool, packages: List[Dict]):
+    merge_lock = asyncio.Lock()
+    packages_to_update: asyncio.Queue[Optional[Dict]] = asyncio.Queue()
+
+    with contextlib.ExitStack() as stack:
+        temp_dirs: List[Optional[Tuple[str, str]]] = []
+
+        # Do not create more workers than there are packages.
+        num_workers = min(max_workers, len(packages))
+
+        nixpkgs_root_process = await check_subprocess('git', 'rev-parse', '--show-toplevel', stdout=asyncio.subprocess.PIPE)
+        nixpkgs_root = (await nixpkgs_root_process.stdout.read()).decode('utf-8').strip()
+
+        # Set up temporary directories when using auto-commit.
+        for i in range(num_workers):
+            temp_dir = stack.enter_context(make_worktree()) if commit else None
+            temp_dirs.append(temp_dir)
+
+        # Fill up an update queue,
+        for package in packages:
+            await packages_to_update.put(package)
+
+        # Add sentinels, one for each worker.
+        # A workers will terminate when it gets sentinel from the queue.
+        for i in range(num_workers):
+            await packages_to_update.put(None)
+
+        # Prepare updater workers for each temp_dir directory.
+        # At most `num_workers` instances of `run_update_script` will be running at one time.
+        updaters = asyncio.gather(*[updater(nixpkgs_root, temp_dir, merge_lock, packages_to_update, keep_going, commit) for temp_dir in temp_dirs])
+
+        try:
+            # Start updater workers.
+            await updaters
+        except asyncio.exceptions.CancelledError as e:
+            # When one worker is cancelled, cancel the others too.
+            updaters.cancel()
+
+def main(max_workers: int, keep_going: bool, commit: bool, packages_path: str) -> None:
+    with open(packages_path) as f:
+        packages = json.load(f)
+
+    eprint()
+    eprint('Going to be running update for following packages:')
+    for package in packages:
+        eprint(f" - {package['name']}")
+    eprint()
+
+    confirm = input('Press Enter key to continue...')
+    if confirm == '':
+        eprint()
+        eprint('Running update for:')
+
+        asyncio.run(start_updates(max_workers, keep_going, commit, packages))
+
+        eprint()
+        eprint('Packages updated!')
+        sys.exit()
+    else:
+        eprint('Aborting!')
+        sys.exit(130)
+
+parser = argparse.ArgumentParser(description='Update packages')
+parser.add_argument('--max-workers', '-j', dest='max_workers', type=int, help='Number of updates to run concurrently', nargs='?', default=4)
+parser.add_argument('--keep-going', '-k', dest='keep_going', action='store_true', help='Do not stop after first failure')
+parser.add_argument('--commit', '-c', dest='commit', action='store_true', help='Commit the changes')
+parser.add_argument('packages', help='JSON file containing the list of package names and their update scripts')
+
+if __name__ == '__main__':
+    args = parser.parse_args()
+
+    try:
+        main(args.max_workers, args.keep_going, args.commit, args.packages)
+    except KeyboardInterrupt as e:
+        # Let’s cancel outside of the main loop too.
+        sys.exit(130)
diff --git a/nixpkgs/maintainers/scripts/vanity-manual-equalities.txt b/nixpkgs/maintainers/scripts/vanity-manual-equalities.txt
new file mode 100644
index 000000000000..4a7bc3aea44e
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/vanity-manual-equalities.txt
@@ -0,0 +1,7 @@
+viric	viriketo@gmail.com
+Pjotr Prins	pjotr.public01@thebird.nl
+Pjotr Prins	pjotr.public05@thebird.nl
+Wouter den Breejen	wbreejen
+MarcWeber	marcweber
+Ricardo Correia	Ricardo M. Correia
+ertesx@gmx.de	ertes
diff --git a/nixpkgs/maintainers/scripts/vanity.sh b/nixpkgs/maintainers/scripts/vanity.sh
new file mode 100755
index 000000000000..aa7d4ec967da
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/vanity.sh
@@ -0,0 +1,122 @@
+#! /bin/sh
+
+export LANG=C LC_ALL=C LC_COLLATE=C
+
+# Load git log
+raw_git_log="$(git log)"
+git_data="$(echo "$raw_git_log" | grep 'Author:' |
+  sed -e 's/^ *Author://; s/\\//g; s/^ *//; s/ *$//;
+  s/ @ .*//; s/ *[<]/\t/; s/[>]//')"
+
+# Name - nick - email correspondence from log and from maintainer list
+# Also there are a few manual entries
+maintainers="$(cat "$(dirname "$0")/../maintainer-list.nix" |
+  grep '=' | sed -re 's/\\"/''/g;
+  s/[ 	]*([^ 	=]*)[ 	]*=[ 	]*" *(.*[^ ]) *[<](.*)[>] *".*/\1\t\2\t\3/')"
+git_lines="$( ( echo "$git_data";
+    cat "$(dirname "$0")/vanity-manual-equalities.txt") | sort |uniq)"
+
+emails="$(
+    ( echo "$maintainers" | cut -f 3; echo "$git_data" | cut -f 2 ) |
+    sort | uniq | grep -E ".+@.+[.].+"
+    )"
+
+fetchGithubName () {
+    commitid="$(
+        echo "$raw_git_log" | grep -B3 "Author: .*[<]$1[>]" | head -n 3 |
+            grep '^commit ' | tail -n 1 | sed -e 's/^commit //'
+    )"
+    userid="$(
+        curl https://github.com/NixOS/nixpkgs/commit/"$commitid" 2>/dev/null |
+        grep committed -B10 | grep 'href="/' |
+        sed -re 's@.* href="/@@; s@".*@@' |
+	grep -v "/commit/"
+    )";
+    echo "$userid"
+}
+
+[ -n "$NIXPKGS_GITHUB_NAME_CACHE" ] && {
+    echo "$emails" | while read email; do
+        line="$(grep "$email	" "$NIXPKGS_GITHUB_NAME_CACHE")"
+	[ -z "$line" ] && {
+            echo "$email	$(fetchGithubName "$email")" >> \
+                "$NIXPKGS_GITHUB_NAME_CACHE"
+        }
+    done
+}
+
+# For RDF
+normalize_name () {
+	sed -e 's/%/%25/g; s/ /%20/g; s/'\''/%27/g; s/"/%22/g; s/`/%60/g; s/\^/%5e/g; '
+}
+
+denormalize_name () {
+	sed -e 's/%20/ /g; s/%27/'\''/g; s/%22/"/g; s/%60/`/g; s/%5e/^/g; s/%25/%/g;';
+}
+
+n3="$(mktemp --suffix .n3)"
+
+# «The same person» relation and a sorting hint
+# Full name is something with a space
+(
+echo "$git_lines" | sed -re 's@(.*)\t(.*)@<my://name/\1>	<my://can-be>	<my://name/\2>.@'
+echo "$git_lines" | sed -re 's@(.*)\t(.*)@<my://name/\2>	<my://can-be>	<my://name/\1>.@'
+echo "$maintainers" | sed -re 's@(.*)\t(.*)\t(.*)@<my://name/\1>	<my://can-be>	<my://name/\2>.@'
+echo "$maintainers" | sed -re 's@(.*)\t(.*)\t(.*)@<my://name/\2>	<my://can-be>	<my://name/\3>.@'
+echo "$maintainers" | sed -re 's@(.*)\t(.*)\t(.*)@<my://name/\3>	<my://can-be>	<my://name/\1>.@'
+echo "$git_lines" | grep ' ' | cut -f 1 | sed -e 's@.*@<my://name/&>	<my://is-name>	<my://0>.@'
+echo "$git_lines" | grep -v ' ' | cut -f 1 | sed -e 's@.*@<my://name/&>	<my://is-name>	<my://1>.@'
+echo "$maintainers" | cut -f 2 | sed -e 's@.*@<my://name/&>	<my://is-name>	<my://0>.@'
+[ -n "$NIXPKGS_GITHUB_NAME_CACHE" ] && cat "$NIXPKGS_GITHUB_NAME_CACHE" |
+    grep -v "	$" |
+    sed -re 's@(.*)\t(.*)@<my://name/\1>	<my://at-github>	<my://github/\2>.@'
+) | normalize_name | grep -E '<my://[-a-z]+>' | sort | uniq > "$n3"
+
+# Get transitive closure
+sparql="$(nix-build '<nixpkgs>' -Q -A apache-jena --no-out-link)/bin/sparql"
+name_list="$(
+	"$sparql" --results=TSV --data="$n3" "
+	select ?x ?y ?g where {
+	  ?x <my://can-be>+ ?y.
+	  ?x <my://is-name> ?g.
+        }
+	" | tail -n +2 |
+	sed -re 's@<my://name/@@g; s@<my://@@g; s@>@@g;' |
+	sort -k 2,3 -t '	'
+)"
+github_name_list="$(
+	"$sparql" --results=TSV --data="$n3" "
+	select ?x ?y where {
+	  ?x (<my://can-be>+ / <my://at-github>) ?y.
+        }
+	" | tail -n +2 |
+	sed -re 's@<my://(name|github)/@@g; s@<my://@@g; s@>@@g;'
+)"
+
+# Take first spelling option for every person
+name_list_canonical="$(echo "$name_list" | cut -f 1,2 | uniq -f1)"
+
+cleaner_script="$(echo "$name_list_canonical" | denormalize_name |
+  sed -re 's/(.*)\t(.*)/s#^\2$#\1#g/g')"
+
+# Add github usernames
+if [ -n "$NIXPKGS_GITHUB_NAME_CACHE" ]; then
+    github_adder_script="$(mktemp)"
+    echo "$github_name_list" |
+        grep -E "$(echo "$name_list_canonical" | cut -f 2 |
+	    tr '\n' '|' )" |
+	sort | uniq |
+        sed -re 's/(.*)\t(.*)/s| \1$| \1\t\2|g;/' |
+	denormalize_name > "$github_adder_script"
+else
+    github_adder_script='/dev/null'
+fi
+
+echo "$name_list" | denormalize_name
+
+echo
+
+echo "$git_data" | cut -f 1 |
+    sed -e "$cleaner_script" |
+    sort | uniq -c | sort -k1n | sed -rf "$github_adder_script" |
+    sed -re 's/^ *([0-9]+) /\1\t/'
diff --git a/nixpkgs/maintainers/team-list.nix b/nixpkgs/maintainers/team-list.nix
new file mode 100644
index 000000000000..939cf159212f
--- /dev/null
+++ b/nixpkgs/maintainers/team-list.nix
@@ -0,0 +1,215 @@
+/* List of maintainer teams.
+    name = {
+      # Required
+      members = [ maintainer1 maintainer2 ];
+      scope = "Maintain foo packages.";
+    };
+
+  where
+
+  - `members` is the list of maintainers belonging to the group,
+  - `scope` describes the scope of the group.
+
+  More fields may be added in the future.
+
+  Please keep the list alphabetically sorted.
+  */
+
+{ lib }:
+with lib.maintainers; {
+  acme = {
+    members = [
+      aanderse
+      andrew-d
+      arianvp
+      emily
+      flokli
+      m1cr0man
+    ];
+    scope = "Maintain ACME-related packages and modules.";
+  };
+
+  beam = {
+    members = [
+      ankhers
+      Br1ght0ne
+      DianaOlympos
+      gleber
+      happysalada
+      yurrriq
+    ];
+    scope = "Maintain BEAM-related packages and modules.";
+  };
+
+  cinnamon = {
+    members = [
+      mkg20001
+    ];
+    scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
+  };
+
+  chia = {
+    members = [
+      atemu
+      lourkeur
+    ];
+    scope = "Maintain the Chia blockchain and its dependencies";
+  };
+
+  deshaw = {
+    # Verify additions to this team with at least one already existing member of the team.
+    members = [
+      limeytexan
+    ];
+    scope = "Group registration for D. E. Shaw employees who collectively maintain packages.";
+  };
+
+  determinatesystems = {
+    # Verify additions to this team with at least one already existing member of the team.
+    members = [
+      cole-h
+      grahamc
+    ];
+    scope = "Group registration for packages maintained by Determinate Systems.";
+  };
+
+  freedesktop = {
+    members = [ jtojnar ];
+    scope = "Maintain Freedesktop.org packages for graphical desktop.";
+  };
+
+  gcc = {
+    members = [
+      synthetica
+      vcunat
+      ericson2314
+    ];
+    scope = "Maintain GCC (GNU Compiler Collection) compilers";
+  };
+
+  golang = {
+    members = [
+      c00w
+      cstrahan
+      Frostman
+      kalbasit
+      mdlayher
+      mic92
+      orivej
+      rvolosatovs
+      zowoq
+    ];
+    scope = "Maintain Golang compilers.";
+  };
+
+  gnome = {
+    members = [
+      hedning
+      jtojnar
+      dasj19
+      maxeaubrey
+    ];
+    scope = "Maintain GNOME desktop environment and platform.";
+  };
+
+  haskell = {
+    members = [
+      maralorn
+      cdepillabout
+      sternenseemann
+    ];
+    scope = "Maintain Haskell packages and infrastructure.";
+  };
+
+  home-assistant = {
+    members = [
+      fab
+      globin
+      hexa
+      mic92
+    ];
+    scope = "Maintain the Home Assistant ecosystem";
+  };
+
+  jitsi = {
+    members = [
+      petabyteboy
+      ryantm
+      yuka
+    ];
+    scope = "Maintain Jitsi.";
+  };
+
+  kodi = {
+    members = [
+      aanderse
+      cpages
+      edwtjo
+      minijackson
+      peterhoeg
+      sephalon
+    ];
+    scope = "Maintain Kodi and related packages.";
+  };
+
+  matrix = {
+    members = [
+      ma27
+      fadenb
+      mguentner
+      ekleog
+      ralith
+      mjlbach
+      dandellion
+    ];
+    scope = "Maintain the ecosystem around Matrix, a decentralized messenger.";
+  };
+
+  php = {
+    members = [
+      aanderse
+      etu
+      globin
+      ma27
+      talyz
+    ];
+    scope = "Maintain PHP related packages and extensions.";
+  };
+
+  podman = {
+    members = [
+      adisbladis
+      saschagrunert
+      vdemeester
+      zowoq
+    ];
+    scope = "Maintain Podman and CRI-O related packages and modules.";
+  };
+
+  sage = {
+    members = [
+      timokau
+      omasanori
+      raskin
+      collares
+    ];
+    scope = "Maintain SageMath and the dependencies that are likely to break it.";
+  };
+
+  serokell = {
+    # Verify additions by approval of an already existing member of the team.
+    members = [
+      balsoft
+      mkaito
+    ];
+    scope = "Group registration for Serokell employees who collectively maintain packages.";
+  };
+
+  tts = {
+    members = [
+      hexa
+      mic92
+    ];
+    scope = "coqui-ai TTS (formerly Mozilla TTS) and leaf packages";
+  };
+}