summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-05-10 18:13:00 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-05-10 18:13:00 -0400
commitf18ddabee7812fbf409759280e1e95df2019d2d2 (patch)
tree766cd52b598ae9eb0f30a2571032b000193a19a8 /lib
parente98814461d40c2907a46bbd7a81f8e0b7053019e (diff)
parent938ff5401adc7ae43bd185d8fa610f1fd4f6ead1 (diff)
downloadnixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar.gz
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar.bz2
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar.lz
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar.xz
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.tar.zst
nixpkgs-f18ddabee7812fbf409759280e1e95df2019d2d2.zip
Merge remote-tracking branch 'upstream/master' into lib-float
Diffstat (limited to 'lib')
-rw-r--r--lib/debug.nix184
-rw-r--r--lib/default.nix23
-rw-r--r--lib/generators.nix67
-rw-r--r--lib/licenses.nix7
-rw-r--r--lib/lists.nix23
-rw-r--r--lib/maintainers-list.nix3955
-rw-r--r--lib/modules.nix8
-rw-r--r--lib/strings.nix11
-rw-r--r--lib/systems/default.nix9
-rw-r--r--lib/systems/examples.nix32
-rw-r--r--lib/systems/for-meta.nix8
-rw-r--r--lib/systems/inspect.nix8
-rw-r--r--lib/systems/parse.nix38
-rw-r--r--lib/tests/misc.nix36
-rwxr-xr-xlib/tests/modules.sh13
-rw-r--r--lib/tests/modules/declare-coerced-value-unsound.nix10
-rw-r--r--lib/tests/modules/define-value-string-arbitrary.nix3
-rw-r--r--lib/tests/modules/define-value-string-bigint.nix3
-rw-r--r--lib/tests/modules/loaOf-with-long-list.nix19
-rw-r--r--lib/tests/modules/loaOf-with-many-list-merges.nix19
-rw-r--r--lib/tests/release.nix3
-rw-r--r--lib/trivial.nix11
-rw-r--r--lib/types.nix40
23 files changed, 438 insertions, 4092 deletions
diff --git a/lib/debug.nix b/lib/debug.nix
index d163e60b695..91a9265a6b5 100644
--- a/lib/debug.nix
+++ b/lib/debug.nix
@@ -1,34 +1,67 @@
+/* Collection of functions useful for debugging
+   broken nix expressions.
+
+   * `trace`-like functions take two values, print
+     the first to stderr and return the second.
+   * `traceVal`-like functions take one argument
+     which both printed and returned.
+   * `traceSeq`-like functions fully evaluate their
+     traced value before printing (not just to “weak
+     head normal form” like trace does by default).
+   * Functions that end in `-Fn` take an additional
+     function as their first argument, which is applied
+     to the traced value before it is printed.
+*/
 { lib }:
-
 let
-
-inherit (builtins) trace attrNamesToStr isAttrs isList isInt
-        isString isBool head substring attrNames;
-
-inherit (lib) all id mapAttrsFlatten elem isFunction;
-
+  inherit (builtins) trace isAttrs isList isInt
+          head substring attrNames;
+  inherit (lib) id elem isFunction;
 in
 
 rec {
 
-  inherit (builtins) addErrorContext;
-
-  addErrorContextToAttrs = lib.mapAttrs (a: v: lib.addErrorContext "while evaluating ${a}" v);
+  # -- TRACING --
 
-  traceIf = p: msg: x: if p then trace msg x else x;
+  /* Trace msg, but only if pred is true.
 
-  traceVal = x: trace x x;
-  traceXMLVal = x: trace (builtins.toXML x) x;
-  traceXMLValMarked = str: x: trace (str + builtins.toXML x) x;
+     Example:
+       traceIf true "hello" 3
+       trace: hello
+       => 3
+  */
+  traceIf = pred: msg: x: if pred then trace msg x else x;
 
-  # strict trace functions (traced structure is fully evaluated and printed)
+  /* Trace the value and also return it.
 
-  /* `builtins.trace`, but the value is `builtins.deepSeq`ed first. */
+     Example:
+       traceValFn (v: "mystring ${v}") "foo"
+       trace: mystring foo
+       => "foo"
+  */
+  traceValFn = f: x: trace (f x) x;
+  traceVal = traceValFn id;
+
+  /* `builtins.trace`, but the value is `builtins.deepSeq`ed first.
+
+     Example:
+       trace { a.b.c = 3; } null
+       trace: { a = <CODE>; }
+       => null
+       traceSeq { a.b.c = 3; } null
+       trace: { a = { b = { c = 3; }; }; }
+       => null
+  */
   traceSeq = x: y: trace (builtins.deepSeq x x) y;
 
-  /* Like `traceSeq`, but only down to depth n.
-   * This is very useful because lots of `traceSeq` usages
-   * lead to an infinite recursion.
+  /* Like `traceSeq`, but only evaluate down to depth n.
+     This is very useful because lots of `traceSeq` usages
+     lead to an infinite recursion.
+
+     Example:
+       traceSeqN 2 { a.b.c = 3; } null
+       trace: { a = { b = {…}; }; }
+       => null
    */
   traceSeqN = depth: x: y: with lib;
     let snip = v: if      isList  v then noQuotes "[…]" v
@@ -43,39 +76,16 @@ rec {
     in trace (generators.toPretty { allowPrettyValues = true; }
                (modify depth snip x)) y;
 
-  /* `traceSeq`, but the same value is traced and returned */
-  traceValSeq = v: traceVal (builtins.deepSeq v v);
-  /* `traceValSeq` but with fixed depth */
-  traceValSeqN = depth: v: traceSeqN depth v v;
+  /* A combination of `traceVal` and `traceSeq` */
+  traceValSeqFn = f: v: traceVal f (builtins.deepSeq v v);
+  traceValSeq = traceValSeqFn id;
 
+  /* A combination of `traceVal` and `traceSeqN`. */
+  traceValSeqNFn = f: depth: v: traceSeqN depth (f v) v;
+  traceValSeqN = traceValSeqNFn id;
 
-  # this can help debug your code as well - designed to not produce thousands of lines
-  traceShowVal = x: trace (showVal x) x;
-  traceShowValMarked = str: x: trace (str + showVal x) x;
-  attrNamesToStr = a: lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a));
-  showVal = x:
-      if isAttrs x then
-          if x ? outPath then "x is a derivation, name ${if x ? name then x.name else "<no name>"}, { ${attrNamesToStr x} }"
-          else "x is attr set { ${attrNamesToStr x} }"
-      else if isFunction x then "x is a function"
-      else if x == [] then "x is an empty list"
-      else if isList x then "x is a list, first element is: ${showVal (head x)}"
-      else if x == true then "x is boolean true"
-      else if x == false then "x is boolean false"
-      else if x == null then "x is null"
-      else if isInt x then "x is an integer `${toString x}'"
-      else if isString x then "x is a string `${substring 0 50 x}...'"
-      else "x is probably a path `${substring 0 50 (toString x)}...'";
 
-  # trace the arguments passed to function and its result
-  # maybe rewrite these functions in a traceCallXml like style. Then one function is enough
-  traceCall  = n: f: a: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a));
-  traceCall2 = n: f: a: b: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
-  traceCall3 = n: f: a: b: c: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
-
-  # FIXME: rename this?
-  traceValIfNot = c: x:
-    if c x then true else trace (showVal x) false;
+  # -- TESTING --
 
   /* Evaluate a set of tests.  A test is an attribute set {expr,
      expected}, denoting an expression and its expected result.  The
@@ -99,9 +109,68 @@ rec {
   # usage: { testX = allTrue [ true ]; }
   testAllTrue = expr: { inherit expr; expected = map (x: true) expr; };
 
-  strict = v:
-    trace "Warning: strict is deprecated and will be removed in the next release"
-      (builtins.seq v v);
+
+  # -- DEPRECATED --
+
+  traceShowVal = x: trace (showVal x) x;
+  traceShowValMarked = str: x: trace (str + showVal x) x;
+
+  attrNamesToStr = a:
+    trace ( "Warning: `attrNamesToStr` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please use more specific concatenation "
+          + "for your uses (`lib.concat(Map)StringsSep`)." )
+    (lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a)));
+
+  showVal = with lib;
+    trace ( "Warning: `showVal` is deprecated "
+          + "and will be removed in the next release, "
+          + "please use `traceSeqN`" )
+    (let
+      modify = v:
+        let pr = f: { __pretty = f; val = v; };
+        in   if isDerivation v then pr
+          (drv: "<δ:${drv.name}:${concatStringsSep ","
+                                 (attrNames drv)}>")
+        else if [] ==   v then pr (const "[]")
+        else if isList  v then pr (l: "[ ${go (head l)}, … ]")
+        else if isAttrs v then pr
+          (a: "{ ${ concatStringsSep ", " (attrNames a)} }")
+        else v;
+      go = x: generators.toPretty
+        { allowPrettyValues = true; }
+        (modify x);
+    in go);
+
+  traceXMLVal = x:
+    trace ( "Warning: `traceXMLVal` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please use `traceValFn builtins.toXML`." )
+    (trace (builtins.toXML x) x);
+  traceXMLValMarked = str: x:
+    trace ( "Warning: `traceXMLValMarked` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please use `traceValFn (x: str + builtins.toXML x)`." )
+    (trace (str + builtins.toXML x) x);
+
+  # trace the arguments passed to function and its result
+  # maybe rewrite these functions in a traceCallXml like style. Then one function is enough
+  traceCall  = n: f: a: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a));
+  traceCall2 = n: f: a: b: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
+  traceCall3 = n: f: a: b: c: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
+
+  traceValIfNot = c: x:
+    trace ( "Warning: `traceValIfNot` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please use `if/then/else` and `traceValSeq 1`.")
+    (if c x then true else traceSeq (showVal x) false);
+
+
+  addErrorContextToAttrs = attrs:
+    trace ( "Warning: `addErrorContextToAttrs` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please use `builtins.addErrorContext` directly." )
+    (lib.mapAttrs (a: v: lib.addErrorContext "while evaluating ${a}" v) attrs);
 
   # example: (traceCallXml "myfun" id 3) will output something like
   # calling myfun arg 1: 3 result: 3
@@ -109,17 +178,20 @@ rec {
   # note: if result doesn't evaluate you'll get no trace at all (FIXME)
   #       args should be printed in any case
   traceCallXml = a:
-    if !isInt a then
+    trace ( "Warning: `traceCallXml` is deprecated "
+          + "and will be removed in the next release. "
+          + "Please complain if you use the function regularly." )
+    (if !isInt a then
       traceCallXml 1 "calling ${a}\n"
     else
       let nr = a;
       in (str: expr:
           if isFunction expr then
             (arg:
-              traceCallXml (builtins.add 1 nr) "${str}\n arg ${builtins.toString nr} is \n ${builtins.toXML (strict arg)}" (expr arg)
+              traceCallXml (builtins.add 1 nr) "${str}\n arg ${builtins.toString nr} is \n ${builtins.toXML (builtins.seq arg arg)}" (expr arg)
             )
           else
-            let r = strict expr;
+            let r = builtins.seq expr expr;
             in trace "${str}\n result:\n${builtins.toXML r}" r
-      );
+      ));
 }
diff --git a/lib/default.nix b/lib/default.nix
index b5ccc3b5144..60ce01a93cd 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -5,9 +5,11 @@
  */
 let
 
-  callLibs = file: import file { inherit lib; };
+  inherit (import ./fixed-points.nix {}) makeExtensible;
 
-  lib = rec {
+  lib = makeExtensible (self: let
+    callLibs = file: import file { lib = self; };
+  in with self; {
 
     # often used, or depending on very little
     trivial = callLibs ./trivial.nix;
@@ -21,7 +23,7 @@ let
 
     # packaging
     customisation = callLibs ./customisation.nix;
-    maintainers = import ./maintainers-list.nix;
+    maintainers = import ../maintainers/maintainer-list.nix;
     meta = callLibs ./meta.nix;
     sources = callLibs ./sources.nix;
     versions = callLibs ./versions.nix;
@@ -56,7 +58,7 @@ let
       replaceStrings seq stringLength sub substring tail;
     inherit (trivial) id const concat or and boolToString mergeAttrs
       flip mapNullable inNixShell min max importJSON warn info
-      nixpkgsVersion mod compare splitByAndCompare
+      nixpkgsVersion version mod compare splitByAndCompare
       functionArgs setFunctionArgs isFunction;
 
     inherit (fixedPoints) fix fix' extends composeExtensions
@@ -72,7 +74,7 @@ let
     inherit (lists) singleton foldr fold foldl foldl' imap0 imap1
       concatMap flatten remove findSingle findFirst any all count
       optional optionals toList range partition zipListsWith zipLists
-      reverseList listDfs toposort sort compareLists take drop sublist
+      reverseList listDfs toposort sort naturalSort compareLists take drop sublist
       last init crossLists unique intersectLists subtractLists
       mutuallyExclusive;
     inherit (strings) concatStrings concatMapStrings concatImapStrings
@@ -113,11 +115,12 @@ let
       unknownModule mkOption;
     inherit (types) isType setType defaultTypeMerge defaultFunctor
       isOptionType mkOptionType;
-    inherit (debug) addErrorContextToAttrs traceIf traceVal
+    inherit (debug) addErrorContextToAttrs traceIf traceVal traceValFn
       traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
-      traceValSeqN traceShowVal traceShowValMarked
-      showVal traceCall traceCall2 traceCall3 traceValIfNot runTests
-      testAllTrue strict traceCallXml attrNamesToStr;
+      traceValSeqFn traceValSeqN traceValSeqNFn traceShowVal
+      traceShowValMarked showVal traceCall traceCall2 traceCall3
+      traceValIfNot runTests testAllTrue traceCallXml
+      attrNamesToStr;
     inherit (misc) maybeEnv defaultMergeArg defaultMerge foldArgs
       defaultOverridableDelayableArgs composedArgsAndFun
       maybeAttrNullable maybeAttr ifEnable checkFlag getValue
@@ -128,5 +131,5 @@ let
       mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
       mergeAttrsByFuncDefaultsClean mergeAttrBy
       prepareDerivationArgs nixType imap overridableDelayableArgs;
-  };
+  });
 in lib
diff --git a/lib/generators.nix b/lib/generators.nix
index 73017f2c679..c09384c00f5 100644
--- a/lib/generators.nix
+++ b/lib/generators.nix
@@ -4,6 +4,12 @@
  * They all follow a similar interface:
  * generator { config-attrs } data
  *
+ * `config-attrs` are “holes” in the generators
+ * with sensible default implementations that
+ * can be overwritten. The default implementations
+ * are mostly generators themselves, called with
+ * their respective default values; they can be reused.
+ *
  * Tests can be found in ./tests.nix
  * Documentation in the manual, #sec-generators
  */
@@ -20,6 +26,32 @@ in
 
 rec {
 
+  ## -- HELPER FUNCTIONS & DEFAULTS --
+
+  /* Convert a value to a sensible default string representation.
+   * The builtin `toString` function has some strange defaults,
+   * suitable for bash scripts but not much else.
+   */
+  mkValueStringDefault = {}: v: with builtins;
+    let err = t: v: abort
+          ("generators.mkValueStringDefault: " +
+           "${t} not supported: ${toPretty {} v}");
+    in   if isInt      v then toString v
+    # we default to not quoting strings
+    else if isString   v then v
+    # isString returns "1", which is not a good default
+    else if true  ==   v then "true"
+    # here it returns to "", which is even less of a good default
+    else if false ==   v then "false"
+    else if null  ==   v then "null"
+    # if you have lists you probably want to replace this
+    else if isList     v then err "lists" v
+    # same as for lists, might want to replace
+    else if isAttrs    v then err "attrsets" v
+    else if isFunction v then err "functions" v
+    else err "this value is" (toString v);
+
+
   /* Generate a line of key k and value v, separated by
    * character sep. If sep appears in k, it is escaped.
    * Helper for synaxes with different separators.
@@ -30,11 +62,14 @@ rec {
    * > "f\:oo:bar"
    */
   mkKeyValueDefault = {
-    mkValueString ? toString
+    mkValueString ? mkValueStringDefault {}
   }: sep: k: v:
     "${libStr.escape [sep] k}${sep}${mkValueString v}";
 
 
+  ## -- FILE FORMAT GENERATORS --
+
+
   /* Generate a key-value-style config file from an attrset.
    *
    * mkKeyValue is the same as in toINI.
@@ -98,6 +133,7 @@ rec {
     */
   toYAML = {}@args: toJSON args;
 
+
   /* Pretty print a value, akin to `builtins.trace`.
     * Should probably be a builtin as well.
     */
@@ -107,17 +143,13 @@ rec {
        (This means fn is type Val -> String.) */
     allowPrettyValues ? false
   }@args: v: with builtins;
-    if      isInt      v then toString v
-    else if isBool     v then (if v == true then "true" else "false")
-    else if isString   v then "\"" + v + "\""
-    else if null ==    v then "null"
-    else if isFunction v then
-      let fna = lib.functionArgs v;
-          showFnas = concatStringsSep "," (libAttr.mapAttrsToList
-                       (name: hasDefVal: if hasDefVal then "(${name})" else name)
-                       fna);
-      in if fna == {}    then "<λ>"
-                         else "<λ:{${showFnas}}>"
+    let     isPath   = v: typeOf v == "path";
+    in if   isInt      v then toString v
+    else if isString   v then ''"${libStr.escape [''"''] v}"''
+    else if true  ==   v then "true"
+    else if false ==   v then "false"
+    else if null  ==   v then "null"
+    else if isPath     v then toString v
     else if isList     v then "[ "
         + libStr.concatMapStringsSep " " (toPretty args) v
       + " ]"
@@ -126,12 +158,21 @@ rec {
       if attrNames v == [ "__pretty" "val" ] && allowPrettyValues
          then v.__pretty v.val
       # TODO: there is probably a better representation?
-      else if v ? type && v.type == "derivation" then "<δ>"
+      else if v ? type && v.type == "derivation" then
+        "<δ:${v.name}>"
+        # "<δ:${concatStringsSep "," (builtins.attrNames v)}>"
       else "{ "
           + libStr.concatStringsSep " " (libAttr.mapAttrsToList
               (name: value:
                 "${toPretty args name} = ${toPretty args value};") v)
         + " }"
+    else if isFunction v then
+      let fna = lib.functionArgs v;
+          showFnas = concatStringsSep "," (libAttr.mapAttrsToList
+                       (name: hasDefVal: if hasDefVal then "(${name})" else name)
+                       fna);
+      in if fna == {}    then "<λ>"
+                         else "<λ:{${showFnas}}>"
     else abort "toPretty: should never happen (v = ${v})";
 
 }
diff --git a/lib/licenses.nix b/lib/licenses.nix
index 03af13b990e..767fd89b948 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -179,6 +179,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
     fullName  = "CeCILL-C Free Software License Agreement";
   };
 
+  cpal10 = spdx {
+    spdxId = "CPAL-1.0";
+    fullName = "Common Public Attribution License 1.0";
+  };
+
   cpl10 = spdx {
     spdxId = "CPL-1.0";
     fullName = "Common Public License 1.0";
@@ -279,7 +284,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
 
   gpl2Oss = {
     fullName = "GNU General Public License version 2 only (with OSI approved licenses linking exception)";
-    url = http://www.mysql.com/about/legal/licensing/foss-exception;
+    url = https://www.mysql.com/about/legal/licensing/foss-exception;
   };
 
   gpl2Plus = spdx {
diff --git a/lib/lists.nix b/lib/lists.nix
index 424d2c57f55..5ec97f5a07f 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -1,7 +1,9 @@
 # General list operations.
 { lib }:
 with lib.trivial;
-
+let
+  inherit (lib.strings) toInt;
+in
 rec {
 
   inherit (builtins) head tail length isList elemAt concatLists filter elem genList;
@@ -409,6 +411,25 @@ rec {
               then compareLists cmp (tail a) (tail b)
               else rel;
 
+  /* Sort list using "Natural sorting".
+     Numeric portions of strings are sorted in numeric order.
+
+     Example:
+       naturalSort ["disk11" "disk8" "disk100" "disk9"]
+       => ["disk8" "disk9" "disk11" "disk100"]
+       naturalSort ["10.46.133.149" "10.5.16.62" "10.54.16.25"]
+       => ["10.5.16.62" "10.46.133.149" "10.54.16.25"]
+       naturalSort ["v0.2" "v0.15" "v0.0.9"]
+       => [ "v0.0.9" "v0.2" "v0.15" ]
+  */
+  naturalSort = lst:
+    let
+      vectorise = s: map (x: if isList x then toInt (head x) else x) (builtins.split "(0|[1-9][0-9]*)" s);
+      prepared = map (x: [ (vectorise x) x ]) lst; # remember vectorised version for O(n) regex splits
+      less = a: b: (compareLists compare (head a) (head b)) < 0;
+    in
+      map (x: elemAt x 1) (sort less prepared);
+
   /* Return the first (at most) N elements of a list.
 
      Example:
diff --git a/lib/maintainers-list.nix b/lib/maintainers-list.nix
deleted file mode 100644
index 608c36e91d2..00000000000
--- a/lib/maintainers-list.nix
+++ /dev/null
@@ -1,3955 +0,0 @@
-/* List of NixOS maintainers.
-
-    handle = {
-      name = "Real name";
-      email = "address@example.org";
-      github = "GithubUsername";
-    };
-
-  where `name` is your 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>`).
- address
-  The only required fields are `name` and `email`.
-  More fields may be added in the future.
-
-  Please keep the list alphabetically sorted.
-  See `../maintainers/scripts/check-maintainer-github-handles.sh`
-  for an example on how to work with this data.
-  */
-{
-  Adjective-Object = {
-    email = "mhuan13@gmail.com";
-    github = "Adjective-Object";
-    name = "Maxwell Huang-Hobbs";
-  };
-  AndersonTorres = {
-    email = "torres.anderson.85@gmail.com";
-    github = "AndersonTorres";
-    name = "Anderson Torres";
-  };
-  Baughn = {
-    email = "sveina@gmail.com";
-    github = "Baughn";
-    name = "Svein Ove Aas";
-  };
-  ChengCat = {
-    email = "yu@cheng.cat";
-    github = "ChengCat";
-    name = "Yucheng Zhang";
-  };
-  CrystalGamma = {
-    email = "nixos@crystalgamma.de";
-    github = "CrystalGamma";
-    name = "Jona Stubbe";
-  };
-  DamienCassou = {
-    email = "damien@cassou.me";
-    github = "DamienCassou";
-    name = "Damien Cassou";
-  };
-  DerGuteMoritz = {
-    email = "moritz@twoticketsplease.de";
-    github = "DerGuteMoritz";
-    name = "Moritz Heidkamp";
-  };
-  DerTim1 = {
-    email = "tim.digel@active-group.de";
-    github = "DerTim1";
-    name = "Tim Digel";
-  };
-  DmitryTsygankov = {
-    email = "dmitry.tsygankov@gmail.com";
-    github = "DmitryTsygankov";
-    name = "Dmitry Tsygankov";
-  };
-  FireyFly = {
-    email = "nix@firefly.nu";
-    github = "FireyFly";
-    name = "Jonas Höglund";
-  };
-  Gonzih = {
-    email = "gonzih@gmail.com";
-    github = "Gonzih";
-    name = "Max Gonzih";
-  };
-  Jo = {
-    email = "0x4A6F@shackspace.de";
-    name = "Joachim Ernst";
-  };
-  KibaFox = {
-    email = "kiba.fox@foxypossibilities.com";
-    github = "KibaFox";
-    name = "Kiba Fox";
-  };
-  MP2E = {
-    email = "MP2E@archlinux.us";
-    github = "MP2E";
-    name = "Cray Elliott";
-  };
-  MostAwesomeDude = {
-    email = "cds@corbinsimpson.com";
-    github = "MostAwesomeDude";
-    name = "Corbin Simpson";
-  };
-  Nate-Devv = {
-    email = "natedevv@gmail.com";
-    name = "Nathan Moore";
-  };
-  NikolaMandic = {
-    email = "nikola@mandic.email";
-    github = "NikolaMandic";
-    name = "Ratko Mladic";
-  };
-  Phlogistique = {
-    email = "noe.rubinstein@gmail.com";
-    github = "Phlogistique";
-    name = "Noé Rubinstein";
-  };
-  Profpatsch = {
-    email = "mail@profpatsch.de";
-    github = "Profpatsch";
-    name = "Profpatsch";
-  };
-  SShrike = {
-    email = "severen@shrike.me";
-    github = "severen";
-    name = "Severen Redwood";
-  };
-  SeanZicari = {
-    email = "sean.zicari@gmail.com";
-    github = "SeanZicari";
-    name = "Sean Zicari";
-  };
-  StijnDW = {
-    email = "stekke@airmail.cc";
-    github = "StijnDW";
-    name = "Stijn DW";
-  };
-  StillerHarpo = {
-    email = "florianengel39@gmail.com";
-    github = "StillerHarpo";
-    name = "Florian Engel";
-  };
-  SuprDewd = {
-    email = "suprdewd@gmail.com";
-    github = "SuprDewd";
-    name = "Bjarki Ágúst Guðmundsson";
-  };
-  TealG = {
-    email = "~@Teal.Gr";
-    github = "TealG";
-    name = "Teal Gaure";
-  };
-  ThomasMader = {
-    email = "thomas.mader@gmail.com";
-    github = "ThomasMader";
-    name = "Thomas Mader";
-  };
-  Zimmi48 = {
-    email = "theo.zimmermann@univ-paris-diderot.fr";
-    github = "Zimmi48";
-    name = "Théo Zimmermann";
-  };
-  a1russell = {
-    email = "adamlr6+pub@gmail.com";
-    github = "a1russell";
-    name = "Adam Russell";
-  };
-  aaronschif = {
-    email = "aaronschif@gmail.com";
-    github = "aaronschif";
-    name = "Aaron Schif";
-  };
-  abaldeau = {
-    email = "andreas@baldeau.net";
-    github = "baldo";
-    name = "Andreas Baldeau";
-  };
-  abbradar = {
-    email = "ab@fmap.me";
-    github = "abbradar";
-    name = "Nikolay Amiantov";
-  };
-  abigailbuccaneer = {
-    email = "abigailbuccaneer@gmail.com";
-    github = "abigailbuccaneer";
-    name = "Abigail Bunyan";
-  };
-  aboseley = {
-    email = "adam.boseley@gmail.com";
-    github = "aboseley";
-    name = "Adam Boseley";
-  };
-  abuibrahim = {
-    email = "ruslan@babayev.com";
-    github = "abuibrahim";
-    name = "Ruslan Babayev";
-  };
-  acowley = {
-    email = "acowley@gmail.com";
-    github = "acowley";
-    name = "Anthony Cowley";
-  };
-  adelbertc = {
-    email = "adelbertc@gmail.com";
-    github = "adelbertc";
-    name = "Adelbert Chang";
-  };
-  adev = {
-    email = "adev@adev.name";
-    github = "adevress";
-    name = "Adrien Devresse";
-  };
-  adisbladis = {
-    email = "adis@blad.is";
-    github = "adisbladis";
-    name = "Adam Hose";
-  };
-  adnelson = {
-    email = "ithinkican@gmail.com";
-    github = "adnelson";
-    name = "Allen Nelson";
-  };
-  adolfogc = {
-    email = "adolfo.garcia.cr@gmail.com";
-    github = "adolfogc";
-    name = "Adolfo E. García Castro";
-  };
-  aespinosa = {
-    email = "allan.espinosa@outlook.com";
-    github = "aespinosa";
-    name = "Allan Espinosa";
-  };
-  aflatter = {
-    email = "flatter@fastmail.fm";
-    github = "aflatter";
-    name = "Alexander Flatter";
-  };
-  afldcr = {
-    email = "alex@fldcr.com";
-    github = "afldcr";
-    name = "James Alexander Feldman-Crough";
-  };
-  aforemny = {
-    email = "alexanderforemny@googlemail.com";
-    github = "aforemny";
-    name = "Alexander Foremny";
-  };
-  afranchuk = {
-    email = "alex.franchuk@gmail.com";
-    github = "afranchuk";
-    name = "Alex Franchuk";
-  };
-  aherrmann = {
-    email = "andreash87@gmx.ch";
-    github = "aherrmann";
-    name = "Andreas Herrmann";
-  };
-  ahmedtd = {
-    email = "ahmed.taahir@gmail.com";
-    github = "ahmedtd";
-    name = "Taahir Ahmed";
-  };
-  aij = {
-    email = "aij+git@mrph.org";
-    github = "aij";
-    name = "Ivan Jager";
-  };
-  ajgrf = {
-    email = "a@ajgrf.com";
-    github = "ajgrf";
-    name = "Alex Griffin";
-  };
-  ak = {
-    email = "ak@formalprivacy.com";
-    github = "alexanderkjeldaas";
-    name = "Alexander Kjeldaas";
-  };
-  akaWolf = {
-    email = "akawolf0@gmail.com";
-    github = "akaWolf";
-    name = "Artjom Vejsel";
-  };
-  akc = {
-    email = "akc@akc.is";
-    github = "akc";
-    name = "Anders Claesson";
-  };
-  alexvorobiev = {
-    email = "alexander.vorobiev@gmail.com";
-    github = "alexvorobiev";
-    name = "Alex Vorobiev";
-  };
-  algorith = {
-    email = "dries_van_daele@telenet.be";
-    name = "Dries Van Daele";
-  };
-  alibabzo = {
-    email = "alistair.bill@gmail.com";
-    github = "alibabzo";
-    name = "Alistair Bill";
-  };
-  all = {
-    email = "nix-commits@lists.science.uu.nl";
-    name = "Nix Committers";
-  };
-  alunduil = {
-    email = "alunduil@alunduil.com";
-    github = "alunduil";
-    name = "Alex Brandt";
-  };
-  ambrop72 = {
-    email = "ambrop7@gmail.com";
-    github = "ambrop72";
-    name = "Ambroz Bizjak";
-  };
-  amiddelk = {
-    email = "amiddelk@gmail.com";
-    github = "amiddelk";
-    name = "Arie Middelkoop";
-  };
-  amiloradovsky = {
-    email = "miloradovsky@gmail.com";
-    github = "amiloradovsky";
-    name = "Andrew Miloradovsky";
-  };
-  amorsillo = {
-    email = "andrew.morsillo@gmail.com";
-    github = "AndrewMorsillo";
-    name = "Andrew Morsillo";
-  };
-  anderspapitto = {
-    email = "anderspapitto@gmail.com";
-    github = "anderspapitto";
-    name = "Anders Papitto";
-  };
-  andir = {
-    email = "andreas@rammhold.de";
-    github = "andir";
-    name = "Andreas Rammhold";
-  };
-  andres = {
-    email = "ksnixos@andres-loeh.de";
-    github = "kosmikus";
-    name = "Andres Loeh";
-  };
-  andrestylianos = {
-    email = "andre.stylianos@gmail.com";
-    github = "andrestylianos";
-    name = "Andre S. Ramos";
-  };
-  andrew-d = {
-    email = "andrew@du.nham.ca";
-    github = "andrew-d";
-    name = "Andrew Dunham";
-  };
-  andrewrk = {
-    email = "superjoe30@gmail.com";
-    github = "andrewrk";
-    name = "Andrew Kelley";
-  };
-  andsild = {
-    email = "andsild@gmail.com";
-    github = "andsild";
-    name = "Anders Sildnes";
-  };
-  aneeshusa = {
-    email = "aneeshusa@gmail.com";
-    github = "aneeshusa";
-    name = "Aneesh Agrawal";
-  };
-  ankhers = {
-    email = "justin.k.wood@gmail.com";
-    github = "ankhers";
-    name = "Justin Wood";
-  };
-  antono = {
-    email = "self@antono.info";
-    github = "antono";
-    name = "Antono Vasiljev";
-  };
-  antonxy = {
-    email = "anton.schirg@posteo.de";
-    github = "antonxy";
-    name = "Anton Schirg";
-  };
-  apeschar = {
-    email = "albert@peschar.net";
-    github = "apeschar";
-    name = "Albert Peschar";
-  };
-  apeyroux = {
-    email = "alex@px.io";
-    github = "apeyroux";
-    name = "Alexandre Peyroux";
-  };
-  arcadio = {
-    email = "arc@well.ox.ac.uk";
-    github = "arcadio";
-    name = "Arcadio Rubio García";
-  };
-  ardumont = {
-    email = "eniotna.t@gmail.com";
-    github = "ardumont";
-    name = "Antoine R. Dumont";
-  };
-  aristid = {
-    email = "aristidb@gmail.com";
-    github = "aristidb";
-    name = "Aristid Breitkreuz";
-  };
-  arobyn = {
-    email = "shados@shados.net";
-    github = "shados";
-    name = "Alexei Robyn";
-  };
-  artuuge = {
-    email = "artuuge@gmail.com";
-    github = "artuuge";
-    name = "Artur E. Ruuge";
-  };
-  ashalkhakov = {
-    email = "artyom.shalkhakov@gmail.com";
-    github = "ashalkhakov";
-    name = "Artyom Shalkhakov";
-  };
-  ashgillman = {
-    email = "gillmanash@gmail.com";
-    github = "ashgillman";
-    name = "Ashley Gillman";
-  };
-  aske = {
-    email = "aske@fmap.me";
-    github = "aske";
-    name = "Kirill Boltaev";
-  };
-  asppsa = {
-    email = "asppsa@gmail.com";
-    github = "asppsa";
-    name = "Alastair Pharo";
-  };
-  astsmtl = {
-    email = "astsmtl@yandex.ru";
-    github = "astsmtl";
-    name = "Alexander Tsamutali";
-  };
-  asymmetric = {
-    email = "lorenzo@mailbox.org";
-    github = "asymmetric";
-    name = "Lorenzo Manacorda";
-  };
-  aszlig = {
-    email = "aszlig@nix.build";
-    github = "aszlig";
-    name = "aszlig";
-  };
-  auntie = {
-    email = "auntieNeo@gmail.com";
-    github = "auntie";
-    name = "Jonathan Glines";
-  };
-  avnik = {
-    email = "avn@avnik.info";
-    github = "avnik";
-    name = "Alexander V. Nikolaev";
-  };
-  aycanirican = {
-    email = "iricanaycan@gmail.com";
-    github = "aycanirican";
-    name = "Aycan iRiCAN";
-  };
-  babariviere = {
-    email = "babariviere@protonmail.com";
-    github = "babariviere";
-    name = "babariviere";
-  };
-  bachp = {
-    email = "pascal.bach@nextrem.ch";
-    github = "bachp";
-    name = "Pascal Bach";
-  };
-  backuitist = {
-    email = "biethb@gmail.com";
-    github = "backuitist";
-    name = "Bruno Bieth";
-  };
-  badi = {
-    email = "abdulwahidc@gmail.com";
-    github = "badi";
-    name = "Badi' Abdul-Wahid";
-  };
-  balajisivaraman = {
-    email = "sivaraman.balaji@gmail.com";
-    name = "Balaji Sivaraman";
-  };
-  barrucadu = {
-    email = "mike@barrucadu.co.uk";
-    github = "barrucadu";
-    name = "Michael Walker";
-  };
-  basvandijk = {
-    email = "v.dijk.bas@gmail.com";
-    github = "basvandijk";
-    name = "Bas van Dijk";
-  };
-  bcarrell = {
-    email = "brandoncarrell@gmail.com";
-    github = "bcarrell";
-    name = "Brandon Carrell";
-  };
-  bcdarwin = {
-    email = "bcdarwin@gmail.com";
-    github = "bcdarwin";
-    name = "Ben Darwin";
-  };
-  bdimcheff = {
-    email = "brandon@dimcheff.com";
-    github = "bdimcheff";
-    name = "Brandon Dimcheff";
-  };
-  bendlas = {
-    email = "herwig@bendlas.net";
-    github = "bendlas";
-    name = "Herwig Hochleitner";
-  };
-  benley = {
-    email = "benley@gmail.com";
-    github = "benley";
-    name = "Benjamin Staffin";
-  };
-  bennofs = {
-    email = "benno.fuenfstueck@gmail.com";
-    github = "bennofs";
-    name = "Benno Fünfstück";
-  };
-  benwbooth = {
-    email = "benwbooth@gmail.com";
-    github = "benwbooth";
-    name = "Ben Booth";
-  };
-  berce = {
-    email = "bert.moens@gmail.com";
-    github = "berce";
-    name = "Bert Moens";
-  };
-  berdario = {
-    email = "berdario@gmail.com";
-    github = "berdario";
-    name = "Dario Bertini";
-  };
-  bergey = {
-    email = "bergey@teallabs.org";
-    github = "bergey";
-    name = "Daniel Bergey";
-  };
-  bhipple = {
-    email = "bhipple@protonmail.com";
-    github = "bhipple";
-    name = "Benjamin Hipple";
-  };
-  binarin = {
-    email = "binarin@binarin.ru";
-    github = "binarin";
-    name = "Alexey Lebedeff";
-  };
-  bjg = {
-    email = "bjg@gnu.org";
-    github = "civodul";
-    name = "Brian Gough";
-  };
-  bjornfor = {
-    email = "bjorn.forsman@gmail.com";
-    github = "bjornfor";
-    name = "Bjørn Forsman";
-  };
-  bluescreen303 = {
-    email = "mathijs@bluescreen303.nl";
-    github = "bluescreen303";
-    name = "Mathijs Kwik";
-  };
-  bobakker = {
-    email = "bobakk3r@gmail.com";
-    github = "bobakker";
-    name = "Bo Bakker";
-  };
-  bobvanderlinden = {
-    email = "bobvanderlinden@gmail.com";
-    github = "bobvanderlinden";
-    name = "Bob van der Linden";
-  };
-  bodil = {
-    email = "nix@bodil.org";
-    github = "bodil";
-    name = "Bodil Stokke";
-  };
-  boothead = {
-    email = "ben@perurbis.com";
-    github = "boothead";
-    name = "Ben Ford";
-  };
-  bosu = {
-    email = "boriss@gmail.com";
-    github = "bosu";
-    name = "Boris Sukholitko";
-  };
-  bradediger = {
-    email = "brad@bradediger.com";
-    github = "bradediger";
-    name = "Brad Ediger";
-  };
-  bramd = {
-    email = "bram@bramd.nl";
-    github = "bramd";
-    name = "Bram Duvigneau";
-  };
-  bstrik = {
-    email = "dutchman55@gmx.com";
-    github = "bstrik";
-    name = "Berno Strik";
-  };
-  bugworm = {
-    email = "bugworm@zoho.com";
-    github = "bugworm";
-    name = "Roman Gerasimenko";
-  };
-  bzizou = {
-    email = "Bruno@bzizou.net";
-    github = "bzizou";
-    name = "Bruno Bzeznik";
-  };
-  c0bw3b = {
-    email = "c0bw3b@gmail.com";
-    github = "c0bw3b";
-    name = "Renaud";
-  };
-  c0dehero = {
-    email = "codehero@nerdpol.ch";
-    name = "CodeHero";
-  };
-  calbrecht = {
-    email = "christian.albrecht@mayflower.de";
-    github = "calbrecht";
-    name = "Christian Albrecht";
-  };
-  calrama = {
-    email = "moritz@ucworks.org";
-    github = "MoritzMaxeiner";
-    name = "Moritz Maxeiner";
-  };
-  calvertvl = {
-    email = "calvertvl@gmail.com";
-    github = "calvertvl";
-    name = "Victor Calvert";
-  };
-  campadrenalin = {
-    email = "campadrenalin@gmail.com";
-    github = "campadrenalin";
-    name = "Philip Horger";
-  };
-  canndrew = {
-    email = "shum@canndrew.org";
-    github = "canndrew";
-    name = "Andrew Cann";
-  };
-  carlsverre = {
-    email = "accounts@carlsverre.com";
-    github = "carlsverre";
-    name = "Carl Sverre";
-  };
-  casey = {
-    email = "casey@rodarmor.net";
-    github = "casey";
-    name = "Casey Rodarmor";
-  };
-  catern = {
-    email = "sbaugh@catern.com";
-    github = "catern";
-    name = "Spencer Baugh";
-  };
-  caugner = {
-    email = "nixos@caugner.de";
-    github = "caugner";
-    name = "Claas Augner";
-  };
-  cdepillabout = {
-    email = "cdep.illabout@gmail.com";
-    github = "cdepillabout";
-    name = "Dennis Gosnell";
-  };
-  cfouche = {
-    email = "chaddai.fouche@gmail.com";
-    github = "Chaddai";
-    name = "Chaddaï Fouché";
-  };
-  changlinli = {
-    email = "mail@changlinli.com";
-    github = "changlinli";
-    name = "Changlin Li";
-  };
-  chaoflow = {
-    email = "flo@chaoflow.net";
-    github = "chaoflow";
-    name = "Florian Friesdorf";
-  };
-  chattered = {
-    email = "me@philscotted.com";
-    name = "Phil Scott";
-  };
-  chiiruno = {
-    email = "okinan@protonmail.com";
-    github = "chiiruno";
-    name = "Okina Matara";
-  };
-  choochootrain = {
-    email = "hurshal@imap.cc";
-    github = "choochootrain";
-    name = "Hurshal Patel";
-  };
-  chpatrick = {
-    email = "chpatrick@gmail.com";
-    github = "chpatrick";
-    name = "Patrick Chilton";
-  };
-  chreekat = {
-    email = "b@chreekat.net";
-    github = "chreekat";
-    name = "Bryan Richter";
-  };
-  chris-martin = {
-    email = "ch.martin@gmail.com";
-    github = "chris-martin";
-    name = "Chris Martin";
-  };
-  chrisjefferson = {
-    email = "chris@bubblescope.net";
-    github = "chrisjefferson";
-    name = "Christopher Jefferson";
-  };
-  chrisrosset = {
-    email = "chris@rosset.org.uk";
-    github = "chrisrosset";
-    name = "Christopher Rosset";
-  };
-  christopherpoole = {
-    email = "mail@christopherpoole.net";
-    github = "christopherpoole";
-    name = "Christopher Mark Poole";
-  };
-  ciil = {
-    email = "simon@lackerbauer.com";
-    github = "ciil";
-    name = "Simon Lackerbauer";
-  };
-  ck3d = {
-    email = "ck3d@gmx.de";
-    github = "ck3d";
-    name = "Christian Kögler";
-  };
-  ckampka = {
-    email = "christian@kampka.net";
-    github = "kampka";
-    name = "Christian Kampka";
-  };
-  ckauhaus = {
-    email = "kc@flyingcircus.io";
-    github = "ckauhaus";
-    name = "Christian Kauhaus";
-  };
-  cko = {
-    email = "christine.koppelt@gmail.com";
-    github = "cko";
-    name = "Christine Koppelt";
-  };
-  cleverca22 = {
-    email = "cleverca22@gmail.com";
-    github = "cleverca22";
-    name = "Michael Bishop";
-  };
-  cmcdragonkai = {
-    email = "roger.qiu@matrix.ai";
-    github = "cmcdragonkai";
-    name = "Roger Qiu";
-  };
-  cmfwyp = {
-    email = "cmfwyp@riseup.net";
-    github = "cmfwyp";
-    name = "cmfwyp";
-  };
-  cobbal = {
-    email = "andrew.cobb@gmail.com";
-    github = "cobbal";
-    name = "Andrew Cobb";
-  };
-  coconnor = {
-    email = "coreyoconnor@gmail.com";
-    github = "coreyoconnor";
-    name = "Corey O'Connor";
-  };
-  codsl = {
-    email = "codsl@riseup.net";
-    github = "codsl";
-    name = "codsl";
-  };
-  codyopel = {
-    email = "codyopel@gmail.com";
-    github = "codyopel";
-    name = "Cody Opel";
-  };
-  colemickens = {
-    email = "cole.mickens@gmail.com";
-    github = "colemickens";
-    name = "Cole Mickens";
-  };
-  colescott = {
-    email = "colescottsf@gmail.com";
-    github = "colescott";
-    name = "Cole Scott";
-  };
-  copumpkin = {
-    email = "pumpkingod@gmail.com";
-    github = "copumpkin";
-    name = "Dan Peebles";
-  };
-  corngood = {
-    email = "corngood@gmail.com";
-    github = "corngood";
-    name = "David McFarland";
-  };
-  coroa = {
-    email = "jonas@chaoflow.net";
-    github = "coroa";
-    name = "Jonas Hörsch";
-  };
-  couchemar = {
-    email = "couchemar@yandex.ru";
-    github = "couchemar";
-    name = "Andrey Pavlov";
-  };
-  cpages = {
-    email = "page@ruiec.cat";
-    github = "cpages";
-    name = "Carles Pagès";
-  };
-  cransom = {
-    email = "cransom@hubns.net";
-    github = "cransom";
-    name = "Casey Ransom";
-  };
-  cryptix = {
-    email = "cryptix@riseup.net";
-    github = "cryptix";
-    name = "Henry Bubert";
-  };
-  csingley = {
-    email = "csingley@gmail.com";
-    github = "csingley";
-    name = "Christopher Singley";
-  };
-  cstrahan = {
-    email = "charles@cstrahan.com";
-    github = "cstrahan";
-    name = "Charles Strahan";
-  };
-  cwoac = {
-    email = "oliver@codersoffortune.net";
-    github = "cwoac";
-    name = "Oliver Matthews";
-  };
-  danbst = {
-    email = "abcz2.uprola@gmail.com";
-    github = "danbst";
-    name = "Danylo Hlynskyi";
-  };
-  dancek = {
-    email = "hannu.hartikainen@gmail.com";
-    github = "dancek";
-    name = "Hannu Hartikainen";
-  };
-  danharaj = {
-    email = "dan@obsidian.systems";
-    github = "danharaj";
-    name = "Dan Haraj";
-  };
-  danielfullmer = {
-    email = "danielrf12@gmail.com";
-    github = "danielfullmer";
-    name = "Daniel Fullmer";
-  };
-  dasuxullebt = {
-    email = "christoph.senjak@googlemail.com";
-    name = "Christoph-Simon Senjak";
-  };
-  david50407 = {
-    email = "me@davy.tw";
-    github = "david50407";
-    name = "David Kuo";
-  };
-  davidak = {
-    email = "post@davidak.de";
-    github = "davidak";
-    name = "David Kleuker";
-  };
-  davidrusu = {
-    email = "davidrusu.me@gmail.com";
-    github = "davidrusu";
-    name = "David Rusu";
-  };
-  davorb = {
-    email = "davor@davor.se";
-    github = "davorb";
-    name = "Davor Babic";
-  };
-  dbohdan = {
-    email = "danyil.bohdan@gmail.com";
-    github = "dbohdan";
-    name = "Danyil Bohdan";
-  };
-  dbrock = {
-    email = "daniel@brockman.se";
-    github = "dbrock";
-    name = "Daniel Brockman";
-  };
-  deepfire = {
-    email = "_deepfire@feelingofgreen.ru";
-    github = "deepfire";
-    name = "Kosyrev Serge";
-  };
-  demin-dmitriy = {
-    email = "demindf@gmail.com";
-    github = "demin-dmitriy";
-    name = "Dmitriy Demin";
-  };
-  derchris = {
-    email = "derchris@me.com";
-    github = "derchrisuk";
-    name = "Christian Gerbrandt";
-  };
-  dermetfan = {
-    email = "serverkorken@gmail.com";
-    github = "dermetfan";
-    name = "Robin Stumm";
-  };
-  desiderius = {
-    email = "didier@devroye.name";
-    github = "desiderius";
-    name = "Didier J. Devroye";
-  };
-  devhell = {
-    email = "\"^\"@regexmail.net";
-    github = "devhell";
-    name = "devhell";
-  };
-  dezgeg = {
-    email = "tuomas.tynkkynen@iki.fi";
-    github = "dezgeg";
-    name = "Tuomas Tynkkynen";
-  };
-  dfordivam = {
-    email = "dfordivam+nixpkgs@gmail.com";
-    github = "dfordivam";
-    name = "Divam";
-  };
-  dfoxfranke = {
-    email = "dfoxfranke@gmail.com";
-    github = "dfoxfranke";
-    name = "Daniel Fox Franke";
-  };
-  dgonyeo = {
-    email = "derek@gonyeo.com";
-    github = "dgonyeo";
-    name = "Derek Gonyeo";
-  };
-  dipinhora = {
-    email = "dipinhora+github@gmail.com";
-    github = "dipinhora";
-    name = "Dipin Hora";
-  };
-  disassembler = {
-    email = "disasm@gmail.com";
-    github = "disassembler";
-    name = "Samuel Leathers";
-  };
-  dizfer = {
-    email = "david@izquierdofernandez.com";
-    github = "dizfer";
-    name = "David Izquierdo";
-  };
-  dmalikov = {
-    email = "malikov.d.y@gmail.com";
-    github = "dmalikov";
-    name = "Dmitry Malikov";
-  };
-  dmjio = {
-    email = "djohnson.m@gmail.com";
-    github = "dmjio";
-    name = "David Johnson";
-  };
-  dochang = {
-    email = "dochang@gmail.com";
-    github = "dochang";
-    name = "Desmond O. Chang";
-  };
-  domenkozar = {
-    email = "domen@dev.si";
-    github = "domenkozar";
-    name = "Domen Kozar";
-  };
-  dotlambda = {
-    email = "rschuetz17@gmail.com";
-    github = "dotlambda";
-    name = "Robert Schütz";
-  };
-  doublec = {
-    email = "chris.double@double.co.nz";
-    github = "doublec";
-    name = "Chris Double";
-  };
-  dpaetzel = {
-    email = "david.a.paetzel@gmail.com";
-    github = "dpaetzel";
-    name = "David Pätzel";
-  };
-  dpflug = {
-    email = "david@pflug.email";
-    github = "dpflug";
-    name = "David Pflug";
-  };
-  drets = {
-    email = "dmitryrets@gmail.com";
-    github = "drets";
-    name = "Dmytro Rets";
-  };
-  drewkett = {
-    email = "burkett.andrew@gmail.com";
-    name = "Andrew Burkett";
-  };
-  dsferruzza = {
-    email = "david.sferruzza@gmail.com";
-    github = "dsferruzza";
-    name = "David Sferruzza";
-  };
-  dtzWill = {
-    email = "nix@wdtz.org";
-    github = "dtzWill";
-    name = "Will Dietz";
-  };
-  dupgit = {
-    email = "olivier.delhomme@free.fr";
-    github = "dupgit";
-    name = "Olivier Delhomme";
-  };
-  dywedir = {
-    email = "dywedir@protonmail.ch";
-    github = "dywedir";
-    name = "Vladyslav M.";
-  };
-  dzabraev = {
-    email = "dzabraew@gmail.com";
-    github = "dzabraev";
-    name = "Maksim Dzabraev";
-  };
-  e-user = {
-    email = "nixos@sodosopa.io";
-    github = "e-user";
-    name = "Alexander Kahl";
-  };
-  earldouglas = {
-    email = "james@earldouglas.com";
-    github = "earldouglas";
-    name = "James Earl Douglas";
-  };
-  earvstedt = {
-    email = "erik.arvstedt@gmail.com";
-    github = "erikarvstedt";
-    name = "Erik Arvstedt";
-  };
-  ebzzry = {
-    email = "ebzzry@ebzzry.io";
-    github = "ebzzry";
-    name = "Rommel Martinez";
-  };
-  edanaher = {
-    email = "nixos@edanaher.net";
-    github = "edanaher";
-    name = "Evan Danaher";
-  };
-  edef = {
-    email = "edef@edef.eu";
-    github = "edef1c";
-    name = "edef";
-  };
-  ederoyd46 = {
-    email = "matt@ederoyd.co.uk";
-    github = "ederoyd46";
-    name = "Matthew Brown";
-  };
-  eduarrrd = {
-    email = "e.bachmakov@gmail.com";
-    github = "eduarrrd";
-    name = "Eduard Bachmakov";
-  };
-  edwtjo = {
-    email = "ed@cflags.cc";
-    github = "edwtjo";
-    name = "Edward Tjörnhammar";
-  };
-  eelco = {
-    email = "eelco.dolstra@logicblox.com";
-    github = "edolstra";
-    name = "Eelco Dolstra";
-  };
-  ehegnes = {
-    email = "eric.hegnes@gmail.com";
-    github = "ehegnes";
-    name = "Eric Hegnes";
-  };
-  ehmry = {
-    email = "emery@vfemail.net";
-    name = "Emery Hemingway";
-  };
-  eikek = {
-    email = "eike.kettner@posteo.de";
-    github = "eikek";
-    name = "Eike Kettner";
-  };
-  ekleog = {
-    email = "leo@gaspard.io";
-    github = "ekleog";
-    name = "Leo Gaspard";
-  };
-  elasticdog = {
-    email = "aaron@elasticdog.com";
-    github = "elasticdog";
-    name = "Aaron Bull Schaefer";
-  };
-  eleanor = {
-    email = "dejan@proteansec.com";
-    github = "proteansec";
-    name = "Dejan Lukan";
-  };
-  elijahcaine = {
-    email = "elijahcainemv@gmail.com";
-    github = "pop";
-    name = "Elijah Caine";
-  };
-  elitak = {
-    email = "elitak@gmail.com";
-    github = "elitak";
-    name = "Eric Litak";
-  };
-  ellis = {
-    email = "nixos@ellisw.net";
-    github = "ellis";
-    name = "Ellis Whitehead";
-  };
-  enzime = {
-    email = "enzime@users.noreply.github.com";
-    github = "enzime";
-    name = "Michael Hoang";
-  };
-  eperuffo = {
-    email = "info@emanueleperuffo.com";
-    github = "emanueleperuffo";
-    name = "Emanuele Peruffo";
-  };
-  epitrochoid = {
-    email = "mpcervin@uncg.edu";
-    name = "Mabry Cervin";
-  };
-  eqyiel = {
-    email = "r@rkm.id.au";
-    github = "eqyiel";
-    name = "Ruben Maher";
-  };
-  ericbmerritt = {
-    email = "eric@afiniate.com";
-    github = "ericbmerritt";
-    name = "Eric Merritt";
-  };
-  erosennin = {
-    email = "ag@sologoc.com";
-    github = "erosennin";
-    name = "Andrey Golovizin";
-  };
-  ericsagnes = {
-    email = "eric.sagnes@gmail.com";
-    github = "ericsagnes";
-    name = "Eric Sagnes";
-  };
-  ericson2314 = {
-    email = "John.Ericson@Obsidian.Systems";
-    github = "ericson2314";
-    name = "John Ericson";
-  };
-  erictapen = {
-    email = "justin.humm@posteo.de";
-    github = "erictapen";
-    name = "Justin Humm";
-  };
-  erikryb = {
-    email = "erik.rybakken@math.ntnu.no";
-    github = "erikryb";
-    name = "Erik Rybakken";
-  };
-  ertes = {
-    email = "esz@posteo.de";
-    github = "ertes";
-    name = "Ertugrul Söylemez";
-  };
-  ethercrow = {
-    email = "ethercrow@gmail.com";
-    github = "ethercrow";
-    name = "Dmitry Ivanov";
-  };
-  etu = {
-    email = "elis@hirwing.se";
-    github = "etu";
-    name = "Elis Hirwing";
-  };
-  exfalso = {
-    email = "0slemi0@gmail.com";
-    github = "exfalso";
-    name = "Andras Slemmer";
-  };
-  exi = {
-    email = "nixos@reckling.org";
-    github = "exi";
-    name = "Reno Reckling";
-  };
-  exlevan = {
-    email = "exlevan@gmail.com";
-    github = "exlevan";
-    name = "Alexey Levan";
-  };
-  expipiplus1 = {
-    email = "nix@monoid.al";
-    github = "expipiplus1";
-    name = "Joe Hermaszewski";
-  };
-  f-breidenstein = {
-    email = "mail@felixbreidenstein.de";
-    github = "f-breidenstein";
-    name = "Felix Breidenstein";
-  };
-  fadenb = {
-    email = "tristan.helmich+nixos@gmail.com";
-    github = "fadenb";
-    name = "Tristan Helmich";
-  };
-  falsifian = {
-    email = "james.cook@utoronto.ca";
-    github = "falsifian";
-    name = "James Cook";
-  };
-  fare = {
-    email = "fahree@gmail.com";
-    github = "fare";
-    name = "Francois-Rene Rideau";
-  };
-  fgaz = {
-    email = "francygazz@gmail.com";
-    github = "fgaz";
-    name = "Francesco Gazzetta";
-  };
-  flokli = {
-    email = "flokli@flokli.de";
-    github = "flokli";
-    name = "Florian Klink";
-  };
-  florianjacob = {
-    email = "projects+nixos@florianjacob.de";
-    github = "florianjacob";
-    name = "Florian Jacob";
-  };
-  flosse = {
-    email = "mail@markus-kohlhase.de";
-    github = "flosse";
-    name = "Markus Kohlhase";
-  };
-  fluffynukeit = {
-    email = "dan@fluffynukeit.com";
-    github = "fluffynukeit";
-    name = "Daniel Austin";
-  };
-  fmthoma = {
-    email = "f.m.thoma@googlemail.com";
-    github = "fmthoma";
-    name = "Franz Thoma";
-  };
-  forkk = {
-    email = "forkk@forkk.net";
-    github = "forkk";
-    name = "Andrew Okin";
-  };
-  fornever = {
-    email = "friedrich@fornever.me";
-    github = "fornever";
-    name = "Friedrich von Never";
-  };
-  fpletz = {
-    email = "fpletz@fnordicwalking.de";
-    github = "fpletz";
-    name = "Franz Pletz";
-  };
-  fps = {
-    email = "mista.tapas@gmx.net";
-    github = "fps";
-    name = "Florian Paul Schmidt";
-  };
-  fridh = {
-    email = "fridh@fridh.nl";
-    github = "fridh";
-    name = "Frederik Rietdijk";
-  };
-  frlan = {
-    email = "frank@frank.uvena.de";
-    github = "frlan";
-    name = "Frank Lanitz";
-  };
-  fro_ozen = {
-    email = "fro_ozen@gmx.de";
-    github = "froozen";
-    name = "fro_ozen";
-  };
-  ftrvxmtrx = {
-    email = "ftrvxmtrx@gmail.com";
-    github = "ftrvxmtrx";
-    name = "Siarhei Zirukin";
-  };
-  funfunctor = {
-    email = "eocallaghan@alterapraxis.com";
-    name = "Edward O'Callaghan";
-  };
-  fuuzetsu = {
-    email = "fuuzetsu@fuuzetsu.co.uk";
-    github = "fuuzetsu";
-    name = "Mateusz Kowalczyk";
-  };
-  fuzzy-id = {
-    email = "hacking+nixos@babibo.de";
-    name = "Thomas Bach";
-  };
-  fxfactorial = {
-    email = "edgar.factorial@gmail.com";
-    github = "fxfactorial";
-    name = "Edgar Aroutiounian";
-  };
-  gabesoft = {
-    email = "gabesoft@gmail.com";
-    github = "gabesoft";
-    name = "Gabriel Adomnicai";
-  };
-  gal_bolle = {
-    email = "florent.becker@ens-lyon.org";
-    github = "FlorentBecker";
-    name = "Florent Becker";
-  };
-  garbas = {
-    email = "rok@garbas.si";
-    github = "garbas";
-    name = "Rok Garbas";
-  };
-  garrison = {
-    email = "jim@garrison.cc";
-    github = "garrison";
-    name = "Jim Garrison";
-  };
-  gavin = {
-    email = "gavin@praxeology.co.uk";
-    github = "gavinrogers";
-    name = "Gavin Rogers";
-  };
-  gebner = {
-    email = "gebner@gebner.org";
-    github = "gebner";
-    name = "Gabriel Ebner";
-  };
-  geistesk = {
-    email = "post@0x21.biz";
-    github = "geistesk";
-    name = "Alvar Penning";
-  };
-  genesis = {
-    email = "ronan@aimao.org";
-    github = "bignaux";
-    name = "Ronan Bignaux";
-  };
-  georgewhewell = {
-    email = "georgerw@gmail.com";
-    github = "georgewhewell";
-    name = "George Whewell";
-  };
-  gilligan = {
-    email = "tobias.pflug@gmail.com";
-    github = "gilligan";
-    name = "Tobias Pflug";
-  };
-  giogadi = {
-    email = "lgtorres42@gmail.com";
-    github = "giogadi";
-    name = "Luis G. Torres";
-  };
-  gleber = {
-    email = "gleber.p@gmail.com";
-    github = "gleber";
-    name = "Gleb Peregud";
-  };
-  glenns = {
-    email = "glenn.searby@gmail.com";
-    github = "glenns";
-    name = "Glenn Searby";
-  };
-  globin = {
-    email = "mail@glob.in";
-    github = "globin";
-    name = "Robin Gloster";
-  };
-  gnidorah = {
-    email = "yourbestfriend@opmbx.org";
-    github = "gnidorah";
-    name = "Alex Ivanov";
-  };
-  goibhniu = {
-    email = "cillian.deroiste@gmail.com";
-    github = "cillianderoiste";
-    name = "Cillian de Róiste";
-  };
-  goodrone = {
-    email = "goodrone@gmail.com";
-    github = "goodrone";
-    name = "Andrew Trachenko";
-  };
-  gpyh = {
-    email = "yacine.hmito@gmail.com";
-    github = "yacinehmito";
-    name = "Yacine Hmito";
-  };
-  grahamc = {
-    email = "graham@grahamc.com";
-    github = "grahamc";
-    name = "Graham Christensen";
-  };
-  grburst = {
-    email = "grburst@openmailbox.org";
-    github = "grburst";
-    name = "Julius Elias";
-  };
-  gridaphobe = {
-    email = "eric@seidel.io";
-    github = "gridaphobe";
-    name = "Eric Seidel";
-  };
-  guibert = {
-    email = "david.guibert@gmail.com";
-    github = "dguibert";
-    name = "David Guibert";
-  };
-  guibou = {
-    email = "guillaum.bouchard@gmail.com";
-    github = "guibou";
-    name = "Guillaume Bouchard";
-  };
-  guillaumekoenig = {
-    email = "guillaume.edward.koenig@gmail.com";
-    github = "guillaumekoenig";
-    name = "Guillaume Koenig";
-  };
-  guyonvarch = {
-    email = "joris@guyonvarch.me";
-    github = "guyonvarch";
-    name = "Joris Guyonvarch";
-  };
-  hakuch = {
-    email = "hakuch@gmail.com";
-    github = "hakuch";
-    name = "Jesse Haber-Kucharsky";
-  };
-  hamhut1066 = {
-    email = "github@hamhut1066.com";
-    github = "hamhut1066";
-    name = "Hamish Hutchings";
-  };
-  havvy = {
-    email = "ryan.havvy@gmail.com";
-    github = "havvy";
-    name = "Ryan Scheel";
-  };
-  hbunke = {
-    email = "bunke.hendrik@gmail.com";
-    github = "hbunke";
-    name = "Hendrik Bunke";
-  };
-  hce = {
-    email = "hc@hcesperer.org";
-    github = "hce";
-    name = "Hans-Christian Esperer";
-  };
-  hectorj = {
-    email = "hector.jusforgues+nixos@gmail.com";
-    github = "hectorj";
-    name = "Hector Jusforgues";
-  };
-  hedning = {
-    email = "torhedinbronner@gmail.com";
-    github = "hedning";
-    name = "Tor Hedin Brønner";
-  };
-  heel = {
-    email = "parizhskiy@gmail.com";
-    github = "heel";
-    name = "Sergii Paryzhskyi";
-  };
-  henrytill = {
-    email = "henrytill@gmail.com";
-    github = "henrytill";
-    name = "Henry Till";
-  };
-  hhm = {
-    email = "heehooman+nixpkgs@gmail.com";
-    github = "hhm0";
-    name = "hhm";
-  };
-  hinton = {
-    email = "t@larkery.com";
-    name = "Tom Hinton";
-  };
-  hodapp = {
-    email = "hodapp87@gmail.com";
-    github = "Hodapp87";
-    name = "Chris Hodapp";
-  };
-  hrdinka = {
-    email = "c.nix@hrdinka.at";
-    github = "hrdinka";
-    name = "Christoph Hrdinka";
-  };
-  htr = {
-    email = "hugo@linux.com";
-    github = "htr";
-    name = "Hugo Tavares Reis";
-  };
-  hyphon81 = {
-    email = "zero812n@gmail.com";
-    github = "hyphon81";
-    name = "Masato Yonekawa";
-  };
-  iand675 = {
-    email = "ian@iankduncan.com";
-    github = "iand675";
-    name = "Ian Duncan";
-  };
-  ianwookim = {
-    email = "ianwookim@gmail.com";
-    github = "wavewave";
-    name = "Ian-Woo Kim";
-  };
-  iblech = {
-    email = "iblech@speicherleck.de";
-    github = "iblech";
-    name = "Ingo Blechschmidt";
-  };
-  igsha = {
-    email = "igor.sharonov@gmail.com";
-    github = "igsha";
-    name = "Igor Sharonov";
-  };
-  ikervagyok = {
-    email = "ikervagyok@gmail.com";
-    github = "ikervagyok";
-    name = "Balázs Lengyel";
-  };
-  ilya-kolpakov = {
-    email = "ilya.kolpakov@gmail.com";
-    github = "ilya-kolpakov";
-    name = "Ilya Kolpakov";
-  };
-  infinisil = {
-    email = "infinisil@icloud.com";
-    github = "infinisil";
-    name = "Silvan Mosberger";
-  };
-  ironpinguin = {
-    email = "michele@catalano.de";
-    github = "ironpinguin";
-    name = "Michele Catalano";
-  };
-  ivan-tkatchev = {
-    email = "tkatchev@gmail.com";
-    name = "Ivan Tkatchev";
-  };
-  ixmatus = {
-    email = "parnell@digitalmentat.com";
-    github = "ixmatus";
-    name = "Parnell Springmeyer";
-  };
-  ixxie = {
-    email = "matan@fluxcraft.net";
-    github = "ixxie";
-    name = "Matan Bendix Shenhav";
-  };
-  izorkin = {
-    email = "Izorkin@gmail.com";
-    github = "izorkin";
-    name = "Yurii Izorkin";
-  };
-  j-keck = {
-    email = "jhyphenkeck@gmail.com";
-    github = "j-keck";
-    name = "Jürgen Keck";
-  };
-  jagajaga = {
-    email = "ars.seroka@gmail.com";
-    github = "jagajaga";
-    name = "Arseniy Seroka";
-  };
-  jammerful = {
-    email = "jammerful@gmail.com";
-    github = "jammerful";
-    name = "jammerful";
-  };
-  jansol = {
-    email = "jan.solanti@paivola.fi";
-    github = "jansol";
-    name = "Jan Solanti";
-  };
-  javaguirre = {
-    email = "contacto@javaguirre.net";
-    github = "javaguirre";
-    name = "Javier Aguirre";
-  };
-  jb55 = {
-    email = "jb55@jb55.com";
-    github = "jb55";
-    name = "William Casarin";
-  };
-  jbedo = {
-    email = "cu@cua0.org";
-    github = "jbedo";
-    name = "Justin Bedő";
-  };
-  jcumming = {
-    email = "jack@mudshark.org";
-    name = "Jack Cummings";
-  };
-  jdagilliland = {
-    email = "jdagilliland@gmail.com";
-    github = "jdagilliland";
-    name = "Jason Gilliland";
-  };
-  jefdaj = {
-    email = "jefdaj@gmail.com";
-    github = "jefdaj";
-    name = "Jeffrey David Johnson";
-  };
-  jensbin = {
-    email = "jensbin@protonmail.com";
-    github = "jensbin";
-    name = "Jens Binkert";
-  };
-  jerith666 = {
-    email = "github@matt.mchenryfamily.org";
-    github = "jerith666";
-    name = "Matt McHenry";
-  };
-  jfb = {
-    email = "james@yamtime.com";
-    github = "tftio";
-    name = "James Felix Black";
-  };
-  jfrankenau = {
-    email = "johannes@frankenau.net";
-    github = "jfrankenau";
-    name = "Johannes Frankenau";
-  };
-  jgeerds = {
-    email = "jascha@jgeerds.name";
-    github = "jgeerds";
-    name = "Jascha Geerds";
-  };
-  jgertm = {
-    email = "jger.tm@gmail.com";
-    github = "jgertm";
-    name = "Tim Jaeger";
-  };
-  jgillich = {
-    email = "jakob@gillich.me";
-    github = "jgillich";
-    name = "Jakob Gillich";
-  };
-  jhhuh = {
-    email = "jhhuh.note@gmail.com";
-    github = "jhhuh";
-    name = "Ji-Haeng Huh";
-  };
-  jirkamarsik = {
-    email = "jiri.marsik89@gmail.com";
-    github = "jirkamarsik";
-    name = "Jirka Marsik";
-  };
-  jlesquembre = {
-    email = "jl@lafuente.me";
-    github = "jlesquembre";
-    name = "José Luis Lafuente";
-  };
-  jluttine = {
-    email = "jaakko.luttinen@iki.fi";
-    github = "jluttine";
-    name = "Jaakko Luttinen";
-  };
-  joachifm = {
-    email = "joachifm@fastmail.fm";
-    github = "joachifm";
-    name = "Joachim Fasting";
-  };
-  joamaki = {
-    email = "joamaki@gmail.com";
-    github = "joamaki";
-    name = "Jussi Maki";
-  };
-  joelmo = {
-    email = "joel.moberg@gmail.com";
-    github = "joelmo";
-    name = "Joel Moberg";
-  };
-  joelteon = {
-    email = "me@joelt.io";
-    name = "Joel Taylor";
-  };
-  johbo = {
-    email = "johannes@bornhold.name";
-    github = "johbo";
-    name = "Johannes Bornhold";
-  };
-  johnazoidberg = {
-    email = "git@danielschaefer.me";
-    github = "johnazoidberg";
-    name = "Daniel Schäfer";
-  };
-  johnmh = {
-    email = "johnmh@openblox.org";
-    github = "johnmh";
-    name = "John M. Harris, Jr.";
-  };
-  johnramsden = {
-    email = "johnramsden@riseup.net";
-    github = "johnramsden";
-    name = "John Ramsden";
-  };
-  joko = {
-    email = "ioannis.koutras@gmail.com";
-    github = "jokogr";
-    name = "Ioannis Koutras";
-  };
-  jonafato = {
-    email = "jon@jonafato.com";
-    github = "jonafato";
-    name = "Jon Banafato";
-  };
-  joncojonathan = {
-    email = "joncojonathan@gmail.com";
-    github = "joncojonathan";
-    name = "Jonathan Haddock";
-  };
-  jpdoyle = {
-    email = "joethedoyle@gmail.com";
-    github = "jpdoyle";
-    name = "Joe Doyle";
-  };
-  jpierre03 = {
-    email = "nix@prunetwork.fr";
-    github = "jpierre03";
-    name = "Jean-Pierre PRUNARET";
-  };
-  jpotier = {
-    email = "jpo.contributes.to.nixos@marvid.fr";
-    github = "jpotier";
-    name = "Martin Potier";
-  };
-  jraygauthier = {
-    email = "jraygauthier@gmail.com";
-    github = "jraygauthier";
-    name = "Raymond Gauthier";
-  };
-  jtojnar = {
-    email = "jtojnar@gmail.com";
-    github = "jtojnar";
-    name = "Jan Tojnar";
-  };
-  juliendehos = {
-    email = "dehos@lisic.univ-littoral.fr";
-    github = "juliendehos";
-    name = "Julien Dehos";
-  };
-  jwiegley = {
-    email = "johnw@newartisans.com";
-    github = "jwiegley";
-    name = "John Wiegley";
-  };
-  jwilberding = {
-    email = "jwilberding@afiniate.com";
-    name = "Jordan Wilberding";
-  };
-  jyp = {
-    email = "jeanphilippe.bernardy@gmail.com";
-    github = "jyp";
-    name = "Jean-Philippe Bernardy";
-  };
-  jzellner = {
-    email = "jeffz@eml.cc";
-    github = "sofuture";
-    name = "Jeff Zellner";
-  };
-  kaiha = {
-    email = "kai.harries@gmail.com";
-    github = "kaiha";
-    name = "Kai Harries";
-  };
-  kamilchm = {
-    email = "kamil.chm@gmail.com";
-    github = "kamilchm";
-    name = "Kamil Chmielewski";
-  };
-  kampfschlaefer = {
-    email = "arnold@arnoldarts.de";
-    github = "kampfschlaefer";
-    name = "Arnold Krille";
-  };
-  karolchmist = {
-    email = "info+nix@chmist.com";
-    name = "karolchmist";
-  };
-  kentjames = {
-    email = "jameschristopherkent@gmail.com";
-    github = "kentjames";
-    name = "James Kent";
-  };
-  kevincox = {
-    email = "kevincox@kevincox.ca";
-    github = "kevincox";
-    name = "Kevin Cox";
-  };
-  khumba = {
-    email = "bog@khumba.net";
-    github = "khumba";
-    name = "Bryan Gardiner";
-  };
-  kierdavis = {
-    email = "kierdavis@gmail.com";
-    github = "kierdavis";
-    name = "Kier Davis";
-  };
-  kiloreux = {
-    email = "kiloreux@gmail.com";
-    github = "kiloreux";
-    name = "Kiloreux Emperex";
-  };
-  kini = {
-    email = "keshav.kini@gmail.com";
-    github = "kini";
-    name = "Keshav Kini";
-  };
-  kkallio = {
-    email = "tierpluspluslists@gmail.com";
-    name = "Karn Kallio";
-  };
-  knedlsepp = {
-    email = "josef.kemetmueller@gmail.com";
-    github = "knedlsepp";
-    name = "Josef Kemetmüller";
-  };
-  konimex = {
-    email = "herdiansyah@netc.eu";
-    github = "konimex";
-    name = "Muhammad Herdiansyah";
-  };
-  koral = {
-    email = "koral@mailoo.org";
-    github = "k0ral";
-    name = "Koral";
-  };
-  kovirobi = {
-    email = "kovirobi@gmail.com";
-    github = "kovirobi";
-    name = "Kovacsics Robert";
-  };
-  kquick = {
-    email = "quick@sparq.org";
-    github = "kquick";
-    name = "Kevin Quick";
-  };
-  kragniz = {
-    email = "louis@kragniz.eu";
-    github = "kragniz";
-    name = "Louis Taylor";
-  };
-  kristoff3r = {
-    email = "k.soeholm@gmail.com";
-    github = "kristoff3r";
-    name = "Kristoffer Søholm";
-  };
-  ktosiek = {
-    email = "tomasz.kontusz@gmail.com";
-    github = "ktosiek";
-    name = "Tomasz Kontusz";
-  };
-  kuznero = {
-    email = "roman@kuznero.com";
-    github = "kuznero";
-    name = "Roman Kuznetsov";
-  };
-  lasandell = {
-    email = "lasandell@gmail.com";
-    github = "lasandell";
-    name = "Luke Sandell";
-  };
-  lassulus = {
-    email = "lassulus@gmail.com";
-    github = "Lassulus";
-    name = "Lassulus";
-  };
-  layus = {
-    email = "layus.on@gmail.com";
-    github = "layus";
-    name = "Guillaume Maudoux";
-  };
-  lblasc = {
-    email = "lblasc@znode.net";
-    github = "lblasc";
-    name = "Luka Blaskovic";
-  };
-  ldesgoui = {
-    email = "ldesgoui@gmail.com";
-    github = "ldesgoui";
-    name = "Lucas Desgouilles";
-  };
-  league = {
-    email = "league@contrapunctus.net";
-    github = "league";
-    name = "Christopher League";
-  };
-  lebastr = {
-    email = "lebastr@gmail.com";
-    github = "lebastr";
-    name = "Alexander Lebedev";
-  };
-  ledif = {
-    email = "refuse@gmail.com";
-    github = "ledif";
-    name = "Adam Fidel";
-  };
-  leemachin = {
-    email = "me@mrl.ee";
-    github = "leemachin";
-    name = "Lee Machin";
-  };
-  leenaars = {
-    email = "ml.software@leenaa.rs";
-    github = "leenaars";
-    name = "Michiel Leenaars";
-  };
-  leonardoce = {
-    email = "leonardo.cecchi@gmail.com";
-    github = "leonardoce";
-    name = "Leonardo Cecchi";
-  };
-  lejonet = {
-    email = "daniel@kuehn.se";
-    github = "lejonet";
-    name = "Daniel Kuehn";
-  };
-  lethalman = {
-    email = "lucabru@src.gnome.org";
-    github = "lethalman";
-    name = "Luca Bruno";
-  };
-  lewo = {
-    email = "lewo@abesis.fr";
-    github = "nlewo";
-    name = "Antoine Eiche";
-  };
-  lheckemann = {
-    email = "git@sphalerite.org";
-    github = "lheckemann";
-    name = "Linus Heckemann";
-  };
-  lhvwb = {
-    email = "nathaniel.baxter@gmail.com";
-    github = "nathanielbaxter";
-    name = "Nathaniel Baxter";
-  };
-  lihop = {
-    email = "nixos@leroy.geek.nz";
-    github = "lihop";
-    name = "Leroy Hopson";
-  };
-  limeytexan = {
-    email = "limeytexan@gmail.com";
-    github = "limeytexan";
-    name = "Michael Brantley";
-  };
-  linquize = {
-    email = "linquize@yahoo.com.hk";
-    github = "linquize";
-    name = "Linquize";
-  };
-  linus = {
-    email = "linusarver@gmail.com";
-    github = "listx";
-    name = "Linus Arver";
-  };
-  lluchs = {
-    email = "lukas.werling@gmail.com";
-    github = "lluchs";
-    name = "Lukas Werling";
-  };
-  lnl7 = {
-    email = "daiderd@gmail.com";
-    github = "lnl7";
-    name = "Daiderd Jordan";
-  };
-  lo1tuma = {
-    email = "schreck.mathias@gmail.com";
-    github = "lo1tuma";
-    name = "Mathias Schreck";
-  };
-  loskutov = {
-    email = "ignat.loskutov@gmail.com";
-    github = "loskutov";
-    name = "Ignat Loskutov";
-  };
-  lovek323 = {
-    email = "jason@oconal.id.au";
-    github = "lovek323";
-    name = "Jason O'Conal";
-  };
-  lowfatcomputing = {
-    email = "andreas.wagner@lowfatcomputing.org";
-    github = "lowfatcomputing";
-    name = "Andreas Wagner";
-  };
-  lschuermann = {
-    email = "leon.git@is.currently.online";
-    github = "lschuermann";
-    name = "Leon Schuermann";
-  };
-  lsix = {
-    email = "lsix@lancelotsix.com";
-    github = "lsix";
-    name = "Lancelot SIX";
-  };
-  ltavard = {
-    email = "laure.tavard@univ-grenoble-alpes.fr";
-    github = "ltavard";
-    name = "Laure Tavard";
-  };
-  lucas8 = {
-    email = "luc.linux@mailoo.org";
-    github = "lucas8";
-    name = "Luc Chabassier";
-  };
-  ludo = {
-    email = "ludo@gnu.org";
-    github = "civodul";
-    name = "Ludovic Courtès";
-  };
-  lufia = {
-    email = "lufia@lufia.org";
-    github = "lufia";
-    name = "Kyohei Kadota";
-  };
-  luispedro = {
-    email = "luis@luispedro.org";
-    github = "luispedro";
-    name = "Luis Pedro Coelho";
-  };
-  lukego = {
-    email = "luke@snabb.co";
-    github = "lukego";
-    name = "Luke Gorrie";
-  };
-  luz = {
-    email = "luz666@daum.net";
-    github = "Luz";
-    name = "Luz";
-  };
-  lw = {
-    email = "lw@fmap.me";
-    github = "lolwat97";
-    name = "Sergey Sofeychuk";
-  };
-  lyt = {
-    email = "wheatdoge@gmail.com";
-    name = "Tim Liou";
-  };
-  m3tti = {
-    email = "mathaeus.peter.sander@gmail.com";
-    name = "Mathaeus Sander";
-  };
-  ma27 = {
-    email = "maximilian@mbosch.me";
-    github = "ma27";
-    name = "Maximilian Bosch";
-  };
-  madjar = {
-    email = "georges.dubus@compiletoi.net";
-    github = "madjar";
-    name = "Georges Dubus";
-  };
-  magnetophon = {
-    email = "bart@magnetophon.nl";
-    github = "magnetophon";
-    name = "Bart Brouns";
-  };
-  mahe = {
-    email = "matthias.mh.herrmann@gmail.com";
-    github = "2chilled";
-    name = "Matthias Herrmann";
-  };
-  makefu = {
-    email = "makefu@syntax-fehler.de";
-    github = "makefu";
-    name = "Felix Richter";
-  };
-  malyn = {
-    email = "malyn@strangeGizmo.com";
-    github = "malyn";
-    name = "Michael Alyn Miller";
-  };
-  manveru = {
-    email = "m.fellinger@gmail.com";
-    github = "manveru";
-    name = "Michael Fellinger";
-  };
-  marcweber = {
-    email = "marco-oweber@gmx.de";
-    github = "marcweber";
-    name = "Marc Weber";
-  };
-  markWot = {
-    email = "markus@wotringer.de";
-    name = "Markus Wotringer";
-  };
-  markus1189 = {
-    email = "markus1189@gmail.com";
-    github = "markus1189";
-    name = "Markus Hauck";
-  };
-  markuskowa = {
-    email = "markus.kowalewski@gmail.com";
-    github = "markuskowa";
-    name = "Markus Kowalewski";
-  };
-  martijnvermaat = {
-    email = "martijn@vermaat.name";
-    github = "martijnvermaat";
-    name = "Martijn Vermaat";
-  };
-  martingms = {
-    email = "martin@mg.am";
-    github = "martingms";
-    name = "Martin Gammelsæter";
-  };
-  matejc = {
-    email = "cotman.matej@gmail.com";
-    github = "matejc";
-    name = "Matej Cotman";
-  };
-  mathnerd314 = {
-    email = "mathnerd314.gph+hs@gmail.com";
-    github = "mathnerd314";
-    name = "Mathnerd314";
-  };
-  matthewbauer = {
-    email = "mjbauer95@gmail.com";
-    github = "matthewbauer";
-    name = "Matthew Bauer";
-  };
-  matthiasbeyer = {
-    email = "mail@beyermatthias.de";
-    github = "matthiasbeyer";
-    name = "Matthias Beyer";
-  };
-  maurer = {
-    email = "matthew.r.maurer+nix@gmail.com";
-    github = "maurer";
-    name = "Matthew Maurer";
-  };
-  mbakke = {
-    email = "mbakke@fastmail.com";
-    github = "mbakke";
-    name = "Marius Bakke";
-  };
-  mbbx6spp = {
-    email = "me@susanpotter.net";
-    github = "mbbx6spp";
-    name = "Susan Potter";
-  };
-  mbe = {
-    email = "brandonedens@gmail.com";
-    github = "brandonedens";
-    name = "Brandon Edens";
-  };
-  mbode = {
-    email = "maxbode@gmail.com";
-    github = "mbode";
-    name = "Maximilian Bode";
-  };
-  mboes = {
-    email = "mboes@tweag.net";
-    github = "mboes";
-    name = "Mathieu Boespflug";
-  };
-  mbrgm = {
-    email = "marius@yeai.de";
-    github = "mbrgm";
-    name = "Marius Bergmann";
-  };
-  mcmtroffaes = {
-    email = "matthias.troffaes@gmail.com";
-    github = "mcmtroffaes";
-    name = "Matthias C. M. Troffaes";
-  };
-  mdaiter = {
-    email = "mdaiter8121@gmail.com";
-    github = "mdaiter";
-    name = "Matthew S. Daiter";
-  };
-  meditans = {
-    email = "meditans@gmail.com";
-    github = "meditans";
-    name = "Carlo Nucera";
-  };
-  mehandes = {
-    email = "niewskici@gmail.com";
-    github = "mehandes";
-    name = "Matt Deming";
-  };
-  meisternu = {
-    email = "meister@krutt.org";
-    github = "meisternu";
-    name = "Matt Miemiec";
-  };
-  metabar = {
-    email = "softs@metabarcoding.org";
-    name = "Celine Mercier";
-  };
-  mgdelacroix = {
-    email = "mgdelacroix@gmail.com";
-    github = "mgdelacroix";
-    name = "Miguel de la Cruz";
-  };
-  mgttlinger = {
-    email = "megoettlinger@gmail.com";
-    github = "mgttlinger";
-    name = "Merlin Göttlinger";
-  };
-  mguentner = {
-    email = "code@klandest.in";
-    github = "mguentner";
-    name = "Maximilian Güntner";
-  };
-  mic92 = {
-    email = "joerg@thalheim.io";
-    github = "mic92";
-    name = "Jörg Thalheim";
-  };
-  michaelpj = {
-    email = "michaelpj@gmail.com";
-    github = "michaelpj";
-    name = "Michael Peyton Jones";
-  };
-  michalrus = {
-    email = "m@michalrus.com";
-    github = "michalrus";
-    name = "Michal Rus";
-  };
-  michelk = {
-    email = "michel@kuhlmanns.info";
-    github = "michelk";
-    name = "Michel Kuhlmann";
-  };
-  mickours = {
-    email = "mickours@gmail.com<";
-    github = "mickours";
-    name = "Michael Mercier";
-  };
-  midchildan = {
-    email = "midchildan+nix@gmail.com";
-    github = "midchildan";
-    name = "midchildan";
-  };
-  mikefaille = {
-    email = "michael@faille.io";
-    github = "mikefaille";
-    name = "Michaël Faille";
-  };
-  mikoim = {
-    email = "ek@esh.ink";
-    github = "mikoim";
-    name = "Eshin Kunishima";
-  };
-  miltador = {
-    email = "miltador@yandex.ua";
-    name = "Vasiliy Solovey";
-  };
-  mimadrid = {
-    email = "mimadrid@ucm.es";
-    github = "mimadrid";
-    name = "Miguel Madrid";
-  };
-  mirdhyn = {
-    email = "mirdhyn@gmail.com";
-    github = "mirdhyn";
-    name = "Merlin Gaillard";
-  };
-  mirrexagon = {
-    email = "mirrexagon@mirrexagon.com";
-    github = "mirrexagon";
-    name = "Andrew Abbott";
-  };
-  mjanczyk = {
-    email = "m@dragonvr.pl";
-    github = "mjanczyk";
-    name = "Marcin Janczyk";
-  };
-  mjp = {
-    email = "mike@mythik.co.uk";
-    github = "MikePlayle";
-    name = "Mike Playle";
-  };
-  mkg = {
-    email = "mkg@vt.edu";
-    github = "mkgvt";
-    name = "Mark K Gardner";
-  };
-  mlieberman85 = {
-    email = "mlieberman85@gmail.com";
-    github = "mlieberman85";
-    name = "Michael Lieberman";
-  };
-  mmahut = {
-    email = "marek.mahut@gmail.com";
-    github = "mmahut";
-    name = "Marek Mahut";
-  };
-  moaxcp = {
-    email = "moaxcp@gmail.com";
-    github = "moaxcp";
-    name = "John Mercier";
-  };
-  modulistic = {
-    email = "modulistic@gmail.com";
-    github = "modulistic";
-    name = "Pablo Costa";
-  };
-  mog = {
-    email = "mog-lists@rldn.net";
-    github = "mogorman";
-    name = "Matthew O'Gorman";
-  };
-  montag451 = {
-    email = "montag451@laposte.net";
-    github = "montag451";
-    name = "montag451";
-  };
-  moosingin3space = {
-    email = "moosingin3space@gmail.com";
-    github = "moosingin3space";
-    name = "Nathan Moos";
-  };
-  moredread = {
-    email = "code@apb.name";
-    github = "moredread";
-    name = "André-Patrick Bubel";
-  };
-  moretea = {
-    email = "maarten@moretea.nl";
-    github = "moretea";
-    name = "Maarten Hoogendoorn";
-  };
-  mounium = {
-    email = "muoniurn@gmail.com";
-    github = "mounium";
-    name = "Katona László";
-  };
-  mpcsh = {
-    email = "m@mpc.sh";
-    github = "mpcsh";
-    name = "Mark Cohen";
-  };
-  mpickering = {
-    email = "matthewtpickering@gmail.com";
-    github = "mpickering";
-    name = "Matthew Pickering";
-  };
-  mpscholten = {
-    email = "marc@mpscholten.de";
-    github = "mpscholten";
-    name = "Marc Scholten";
-  };
-  mpsyco = {
-    email = "fr.st-amour@gmail.com";
-    github = "fstamour";
-    name = "Francis St-Amour";
-  };
-  mrVanDalo = {
-    email = "contact@ingolf-wagner.de";
-    github = "mrVanDalo";
-    name = "Ingolf Wanger";
-  };
-  msackman = {
-    email = "matthew@wellquite.org";
-    name = "Matthew Sackman";
-  };
-  mschristiansen = {
-    email = "mikkel@rheosystems.com";
-    github = "mschristiansen";
-    name = "Mikkel Christiansen";
-  };
-  mstarzyk = {
-    email = "mstarzyk@gmail.com";
-    github = "mstarzyk";
-    name = "Maciek Starzyk";
-  };
-  msteen = {
-    email = "emailmatthijs@gmail.com";
-    github = "msteen";
-    name = "Matthijs Steen";
-  };
-  mt-caret = {
-    email = "mtakeda.enigsol@gmail.com";
-    github = "mt-caret";
-    name = "Masayuki Takeda";
-  };
-  mtreskin = {
-    email = "zerthurd@gmail.com";
-    github = "Zert";
-    name = "Max Treskin";
-  };
-  mudri = {
-    email = "lamudri@gmail.com";
-    github = "laMudri";
-    name = "James Wood";
-  };
-  muflax = {
-    email = "mail@muflax.com";
-    github = "muflax";
-    name = "Stefan Dorn";
-  };
-  myrl = {
-    email = "myrl.0xf@gmail.com";
-    github = "myrl";
-    name = "Myrl Hex";
-  };
-  nadrieril = {
-    email = "nadrieril@gmail.com";
-    github = "nadrieril";
-    name = "Nadrieril Feneanar";
-  };
-  namore = {
-    email = "namor@hemio.de";
-    github = "namore";
-    name = "Roman Naumann";
-  };
-  nand0p = {
-    email = "nando@hex7.com";
-    github = "nand0p";
-    name = "Fernando Jose Pando";
-  };
-  nathan-gs = {
-    email = "nathan@nathan.gs";
-    github = "nathan-gs";
-    name = "Nathan Bijnens";
-  };
-  nckx = {
-    email = "github@tobias.gr";
-    github = "nckx";
-    name = "Tobias Geerinckx-Rice";
-  };
-  ndowens = {
-    email = "ndowens04@gmail.com";
-    github = "ndowens";
-    name = "Nathan Owens";
-  };
-  neeasade = {
-    email = "nathanisom27@gmail.com";
-    github = "neeasade";
-    name = "Nathan Isom";
-  };
-  nequissimus = {
-    email = "tim@nequissimus.com";
-    github = "nequissimus";
-    name = "Tim Steinbach";
-  };
-  nfjinjing = {
-    email = "nfjinjing@gmail.com";
-    github = "nfjinjing";
-    name = "Jinjing Wang";
-  };
-  nh2 = {
-    email = "mail@nh2.me";
-    github = "nh2";
-    name = "Niklas Hambüchen";
-  };
-  nhooyr = {
-    email = "anmol@aubble.com";
-    github = "nhooyr";
-    name = "Anmol Sethi";
-  };
-  nickhu = {
-    email = "me@nickhu.co.uk";
-    github = "nickhu";
-    name = "Nick Hu";
-  };
-  nicknovitski = {
-    email = "nixpkgs@nicknovitski.com";
-    github = "nicknovitski";
-    name = "Nick Novitski";
-  };
-  nico202 = {
-    email = "anothersms@gmail.com";
-    github = "nico202";
-    name = "Nicolò Balzarotti";
-  };
-  ninjatrappeur = {
-    email = "felix@alternativebit.fr";
-    github = "ninjatrappeur";
-    name = "Félix Baylac-Jacqué";
-  };
-  nipav = {
-    email = "niko.pavlinek@gmail.com";
-    github = "nipav";
-    name = "Niko Pavlinek";
-  };
-  nixy = {
-    email = "nixy@nixy.moe";
-    github = "nixy";
-    name = "Andrew R. M.";
-  };
-  nmattia = {
-    email = "nicolas@nmattia.com";
-    github = "nmattia";
-    name = "Nicolas Mattia";
-  };
-  nocoolnametom = {
-    email = "nocoolnametom@gmail.com";
-    github = "nocoolnametom";
-    name = "Tom Doggett";
-  };
-  notthemessiah = {
-    email = "brian.cohen.88@gmail.com";
-    github = "notthemessiah";
-    name = "Brian Cohen";
-  };
-  np = {
-    email = "np.nix@nicolaspouillard.fr";
-    github = "np";
-    name = "Nicolas Pouillard";
-  };
-  nslqqq = {
-    email = "nslqqq@gmail.com";
-    name = "Nikita Mikhailov";
-  };
-  nthorne = {
-    email = "notrupertthorne@gmail.com";
-    github = "nthorne";
-    name = "Niklas Thörne";
-  };
-  nyarly = {
-    email = "nyarly@gmail.com";
-    github = "nyarly";
-    name = "Judson Lester";
-  };
-  obadz = {
-    email = "obadz-nixos@obadz.com";
-    github = "obadz";
-    name = "obadz";
-  };
-  ocharles = {
-    email = "ollie@ocharles.org.uk";
-    github = "ocharles";
-    name = "Oliver Charles";
-  };
-  odi = {
-    email = "oliver.dunkl@gmail.com";
-    github = "odi";
-    name = "Oliver Dunkl";
-  };
-  offline = {
-    email = "jakahudoklin@gmail.com";
-    github = "offlinehacker";
-    name = "Jaka Hudoklin";
-  };
-  oida = {
-    email = "oida@posteo.de";
-    github = "oida";
-    name = "oida";
-  };
-  okasu = {
-    email = "oka.sux@gmail.com";
-    name = "Okasu";
-  };
-  olcai = {
-    email = "dev@timan.info";
-    github = "olcai";
-    name = "Erik Timan";
-  };
-  olejorgenb = {
-    email = "olejorgenb@yahoo.no";
-    github = "olejorgenb";
-    name = "Ole Jørgen Brønner";
-  };
-  olynch = {
-    email = "owen@olynch.me";
-    github = "olynch";
-    name = "Owen Lynch";
-  };
-  orbekk = {
-    email = "kjetil.orbekk@gmail.com";
-    github = "orbekk";
-    name = "KJ Ørbekk";
-  };
-  orbitz = {
-    email = "mmatalka@gmail.com";
-    github = "orbitz";
-    name = "Malcolm Matalka";
-  };
-  orivej = {
-    email = "orivej@gmx.fr";
-    github = "orivej";
-    name = "Orivej Desh";
-  };
-  osener = {
-    email = "ozan@ozansener.com";
-    github = "osener";
-    name = "Ozan Sener";
-  };
-  otwieracz = {
-    email = "slawek@otwiera.cz";
-    github = "otwieracz";
-    name = "Slawomir Gonet";
-  };
-  oxij = {
-    email = "oxij@oxij.org";
-    github = "oxij";
-    name = "Jan Malakhovski";
-  };
-  pSub = {
-    email = "mail@pascal-wittmann.de";
-    github = "pSub";
-    name = "Pascal Wittmann";
-  };
-  paholg = {
-    email = "paho@paholg.com";
-    github = "paholg";
-    name = "Paho Lurie-Gregg";
-  };
-  pakhfn = {
-    email = "pakhfn@gmail.com";
-    github = "pakhfn";
-    name = "Fedor Pakhomov";
-  };
-  panaeon = {
-    email = "vitalii.voloshyn@gmail.com";
-    github = "panaeon";
-    name = "Vitalii Voloshyn";
-  };
-  paperdigits = {
-    email = "mica@silentumbrella.com";
-    github = "paperdigits";
-    name = "Mica Semrick";
-  };
-  paraseba = {
-    email = "paraseba@gmail.com";
-    github = "paraseba";
-    name = "Sebastian Galkin";
-  };
-  pashev = {
-    email = "pashev.igor@gmail.com";
-    github = "ip1981";
-    name = "Igor Pashev";
-  };
-  patternspandemic = {
-    email = "patternspandemic@live.com";
-    github = "patternspandemic";
-    name = "Brad Christensen";
-  };
-  pawelpacana = {
-    email = "pawel.pacana@gmail.com";
-    github = "pawelpacana";
-    name = "Paweł Pacana";
-  };
-  pbogdan = {
-    email = "ppbogdan@gmail.com";
-    github = "pbogdan";
-    name = "Piotr Bogdan";
-  };
-  pcarrier = {
-    email = "pc@rrier.ca";
-    github = "pcarrier";
-    name = "Pierre Carrier";
-  };
-  periklis = {
-    email = "theopompos@gmail.com";
-    github = "periklis";
-    name = "Periklis Tsirakidis";
-  };
-  pesterhazy = {
-    email = "pesterhazy@gmail.com";
-    github = "pesterhazy";
-    name = "Paulus Esterhazy";
-  };
-  peterhoeg = {
-    email = "peter@hoeg.com";
-    github = "peterhoeg";
-    name = "Peter Hoeg";
-  };
-  peterromfeldhk = {
-    email = "peter.romfeld.hk@gmail.com";
-    github = "peterromfeldhk";
-    name = "Peter Romfeld";
-  };
-  peti = {
-    email = "simons@cryp.to";
-    github = "peti";
-    name = "Peter Simons";
-  };
-  philandstuff = {
-    email = "philip.g.potter@gmail.com";
-    github = "philandstuff";
-    name = "Philip Potter";
-  };
-  phile314 = {
-    email = "nix@314.ch";
-    github = "phile314";
-    name = "Philipp Hausmann";
-  };
-  phreedom = {
-    email = "phreedom@yandex.ru";
-    github = "phreedom";
-    name = "Evgeny Egorochkin";
-  };
-  phunehehe = {
-    email = "phunehehe@gmail.com";
-    github = "phunehehe";
-    name = "Hoang Xuan Phu";
-  };
-  pierrechevalier83 = {
-    email = "pierrechevalier83@gmail.com";
-    github = "pierrechevalier83";
-    name = "Pierre Chevalier";
-  };
-  pierrer = {
-    email = "pierrer@pi3r.be";
-    github = "pierrer";
-    name = "Pierre Radermecker";
-  };
-  pierron = {
-    email = "nixos@nbp.name";
-    github = "nbp";
-    name = "Nicolas B. Pierron";
-  };
-  piotr = {
-    email = "ppietrasa@gmail.com";
-    name = "Piotr Pietraszkiewicz";
-  };
-  pjbarnoy = {
-    email = "pjbarnoy@gmail.com";
-    github = "pjbarnoy";
-    name = "Perry Barnoy";
-  };
-  pjones = {
-    email = "pjones@devalot.com";
-    github = "pjones";
-    name = "Peter Jones";
-  };
-  pkmx = {
-    email = "pkmx.tw@gmail.com";
-    github = "pkmx";
-    name = "Chih-Mao Chen";
-  };
-  plcplc = {
-    email = "plcplc@gmail.com";
-    github = "plcplc";
-    name = "Philip Lykke Carlsen";
-  };
-  plumps = {
-    email = "maks.bronsky@web.de";
-    github = "plumps";
-    name = "Maksim Bronsky";
-  };
-  pmahoney = {
-    email = "pat@polycrystal.org";
-    github = "pmahoney";
-    name = "Patrick Mahoney";
-  };
-  pmeunier = {
-    email = "pierre-etienne.meunier@inria.fr";
-    github = "P-E-Meunier";
-    name = "Pierre-Étienne Meunier";
-  };
-  pmiddend = {
-    email = "pmidden@secure.mailbox.org";
-    github = "pmiddend";
-    name = "Philipp Middendorf";
-  };
-  pneumaticat = {
-    email = "kevin@potatofrom.space";
-    github = "pneumaticat";
-    name = "Kevin Liu";
-  };
-  polyrod = {
-    email = "dc1mdp@gmail.com";
-    github = "polyrod";
-    name = "Maurizio Di Pietro";
-  };
-  pradeepchhetri = {
-    email = "pradeep.chhetri89@gmail.com";
-    github = "pradeepchhetri";
-    name = "Pradeep Chhetri";
-  };
-  prikhi = {
-    email = "pavan.rikhi@gmail.com";
-    github = "prikhi";
-    name = "Pavan Rikhi";
-  };
-  primeos = {
-    email = "dev.primeos@gmail.com";
-    github = "primeos";
-    name = "Michael Weiss";
-  };
-  proglodyte = {
-    email = "proglodyte23@gmail.com";
-    github = "proglodyte";
-    name = "Proglodyte";
-  };
-  pshendry = {
-    email = "paul@pshendry.com";
-    github = "pshendry";
-    name = "Paul Hendry";
-  };
-  psibi = {
-    email = "sibi@psibi.in";
-    github = "psibi";
-    name = "Sibi";
-  };
-  pstn = {
-    email = "philipp@xndr.de";
-    name = "Philipp Steinpaß";
-  };
-  puffnfresh = {
-    email = "brian@brianmckenna.org";
-    github = "puffnfresh";
-    name = "Brian McKenna";
-  };
-  pxc = {
-    email = "patrick.callahan@latitudeengineering.com";
-    name = "Patrick Callahan";
-  };
-  qknight = {
-    email = "js@lastlog.de";
-    github = "qknight";
-    name = "Joachim Schiele";
-  };
-  ragge = {
-    email = "r.dahlen@gmail.com";
-    github = "ragnard";
-    name = "Ragnar Dahlen";
-  };
-  ralith = {
-    email = "ben.e.saunders@gmail.com";
-    github = "ralith";
-    name = "Benjamin Saunders";
-  };
-  ramkromberg = {
-    email = "ramkromberg@mail.com";
-    github = "ramkromberg";
-    name = "Ram Kromberg";
-  };
-  rardiol = {
-    email = "ricardo.ardissone@gmail.com";
-    github = "rardiol";
-    name = "Ricardo Ardissone";
-  };
-  rasendubi = {
-    email = "rasen.dubi@gmail.com";
-    github = "rasendubi";
-    name = "Alexey Shmalko";
-  };
-  raskin = {
-    email = "7c6f434c@mail.ru";
-    github = "7c6f434c";
-    name = "Michael Raskin";
-  };
-  ravloony = {
-    email = "ravloony@gmail.com";
-    name = "Tom Macdonald";
-  };
-  razvan = {
-    email = "razvan.panda@gmail.com";
-    github = "razvan-panda";
-    name = "Răzvan Flavius Panda";
-  };
-  rbasso = {
-    email = "rbasso@sharpgeeks.net";
-    github = "rbasso";
-    name = "Rafael Basso";
-  };
-  redbaron = {
-    email = "ivanov.maxim@gmail.com";
-    github = "redbaron";
-    name = "Maxim Ivanov";
-  };
-  redvers = {
-    email = "red@infect.me";
-    github = "redvers";
-    name = "Redvers Davies";
-  };
-  refnil = {
-    email = "broemartino@gmail.com";
-    github = "refnil";
-    name = "Martin Lavoie";
-  };
-  regnat = {
-    email = "regnat@regnat.ovh";
-    github = "regnat";
-    name = "Théophane Hufschmitt";
-  };
-  relrod = {
-    email = "ricky@elrod.me";
-    github = "relrod";
-    name = "Ricky Elrod";
-  };
-  renzo = {
-    email = "renzocarbonara@gmail.com";
-    github = "k0001";
-    name = "Renzo Carbonara";
-  };
-  retrry = {
-    email = "retrry@gmail.com";
-    github = "retrry";
-    name = "Tadas Barzdžius";
-  };
-  rht = {
-    email = "rhtbot@protonmail.com";
-    github = "rht";
-    name = "rht";
-  };
-  richardipsum = {
-    email = "richardipsum@fastmail.co.uk";
-    github = "richardipsum";
-    name = "Richard Ipsum";
-  };
-  rick68 = {
-    email = "rick68@gmail.com";
-    github = "rick68";
-    name = "Wei-Ming Yang";
-  };
-  rickynils = {
-    email = "rickynils@gmail.com";
-    github = "rickynils";
-    name = "Rickard Nilsson";
-  };
-  ris = {
-    email = "code@humanleg.org.uk";
-    github = "risicle";
-    name = "Robert Scott";
-  };
-  rlupton20 = {
-    email = "richard.lupton@gmail.com";
-    github = "rlupton20";
-    name = "Richard Lupton";
-  };
-  rnhmjoj = {
-    email = "micheleguerinirocco@me.com";
-    github = "rnhmjoj";
-    name = "Michele Guerini Rocco";
-  };
-  rob = {
-    email = "rob.vermaas@gmail.com";
-    github = "rbvermaa";
-    name = "Rob Vermaas";
-  };
-  robberer = {
-    email = "robberer@freakmail.de";
-    github = "robberer";
-    name = "Longrin Wischnewski";
-  };
-  robbinch = {
-    email = "robbinch33@gmail.com";
-    github = "robbinch";
-    name = "Robbin C.";
-  };
-  roberth = {
-    email = "nixpkgs@roberthensing.nl";
-    github = "roberth";
-    name = "Robert Hensing";
-  };
-  robertodr = {
-    email = "roberto.diremigio@gmail.com";
-    github = "robertodr";
-    name = "Roberto Di Remigio";
-  };
-  robgssp = {
-    email = "robgssp@gmail.com";
-    github = "robgssp";
-    name = "Rob Glossop";
-  };
-  roblabla = {
-    email = "robinlambertz+dev@gmail.com";
-    github = "roblabla";
-    name = "Robin Lambertz";
-  };
-  roconnor = {
-    email = "roconnor@theorem.ca";
-    github = "roconnor";
-    name = "Russell O'Connor";
-  };
-  romildo = {
-    email = "malaquias@gmail.com";
-    github = "romildo";
-    name = "José Romildo Malaquias";
-  };
-  rongcuid = {
-    email = "rongcuid@outlook.com";
-    github = "rongcuid";
-    name = "Rongcui Dong";
-  };
-  rszibele = {
-    email = "richard@szibele.com";
-    github = "rszibele";
-    name = "Richard Szibele";
-  };
-  rtreffer = {
-    email = "treffer+nixos@measite.de";
-    github = "rtreffer";
-    name = "Rene Treffer";
-  };
-  rushmorem = {
-    email = "rushmore@webenchanter.com";
-    github = "rushmorem";
-    name = "Rushmore Mushambi";
-  };
-  rvl = {
-    email = "dev+nix@rodney.id.au";
-    github = "rvl";
-    name = "Rodney Lorrimar";
-  };
-  rvlander = {
-    email = "rvlander@gaetanandre.eu";
-    github = "rvlander";
-    name = "Gaëtan André";
-  };
-  rvolosatovs = {
-    email = "rvolosatovs@riseup.net";
-    github = "rvolosatovs";
-    name = "Roman Volosatovs";
-  };
-  ryanartecona = {
-    email = "ryanartecona@gmail.com";
-    github = "ryanartecona";
-    name = "Ryan Artecona";
-  };
-  ryansydnor = {
-    email = "ryan.t.sydnor@gmail.com";
-    github = "ryansydnor";
-    name = "Ryan Sydnor";
-  };
-  ryantm = {
-    email = "ryan@ryantm.com";
-    github = "ryantm";
-    name = "Ryan Mulligan";
-  };
-  ryantrinkle = {
-    email = "ryan.trinkle@gmail.com";
-    github = "ryantrinkle";
-    name = "Ryan Trinkle";
-  };
-  rybern = {
-    email = "ryan.bernstein@columbia.edu";
-    github = "rybern";
-    name = "Ryan Bernstein";
-  };
-  rycee = {
-    email = "robert@rycee.net";
-    github = "rycee";
-    name = "Robert Helgesson";
-  };
-  ryneeverett = {
-    email = "ryneeverett@gmail.com";
-    github = "ryneeverett";
-    name = "Ryne Everett";
-  };
-  rzetterberg = {
-    email = "richard.zetterberg@gmail.com";
-    github = "rzetterberg";
-    name = "Richard Zetterberg";
-  };
-  s1lvester = {
-    email = "s1lvester@bockhacker.me";
-    github = "s1lvester";
-    name = "Markus Silvester";
-  };
-  samdroid-apps = {
-    email = "sam@sam.today";
-    github = "samdroid-apps";
-    name = "Sam Parkinson";
-  };
-  samueldr = {
-    email = "samuel@dionne-riel.com";
-    github = "samueldr";
-    name = "Samuel Dionne-Riel";
-  };
-  samuelrivas = {
-    email = "samuelrivas@gmail.com";
-    github = "samuelrivas";
-    name = "Samuel Rivas";
-  };
-  sander = {
-    email = "s.vanderburg@tudelft.nl";
-    github = "svanderburg";
-    name = "Sander van der Burg";
-  };
-  sargon = {
-    email = "danielehlers@mindeye.net";
-    github = "sargon";
-    name = "Daniel Ehlers";
-  };
-  sauyon = {
-    email = "s@uyon.co";
-    github = "sauyon";
-    name = "Sauyon Lee";
-  };
-  schmitthenner = {
-    email = "development@schmitthenner.eu";
-    github = "fkz";
-    name = "Fabian Schmitthenner";
-  };
-  schneefux = {
-    email = "schneefux+nixos_pkg@schneefux.xyz";
-    github = "schneefux";
-    name = "schneefux";
-  };
-  schristo = {
-    email = "schristopher@konputa.com";
-    name = "Scott Christopher";
-  };
-  scode = {
-    email = "peter.schuller@infidyne.com";
-    github = "scode";
-    name = "Peter Schuller";
-  };
-  scolobb = {
-    email = "sivanov@colimite.fr";
-    github = "scolobb";
-    name = "Sergiu Ivanov";
-  };
-  sdll = {
-    email = "sasha.delly@gmail.com";
-    github = "sdll";
-    name = "Sasha Illarionov";
-  };
-  sellout = {
-    email = "greg@technomadic.org";
-    github = "sellout";
-    name = "Greg Pfeil";
-  };
-  sepi = {
-    email = "raffael@mancini.lu";
-    github = "sepi";
-    name = "Raffael Mancini";
-  };
-  seppeljordan = {
-    email = "sebastian.jordan.mail@googlemail.com";
-    github = "seppeljordan";
-    name = "Sebastian Jordan";
-  };
-  sfrijters = {
-    email = "sfrijters@gmail.com";
-    github = "sfrijters";
-    name = "Stefan Frijters";
-  };
-  shanemikel = {
-    email = "shanemikel1@gmail.com";
-    github = "shanemikel";
-    name = "Shane Pearlman";
-  };
-  shawndellysse = {
-    email = "sdellysse@gmail.com";
-    github = "shawndellysse";
-    name = "Shawn Dellysse";
-  };
-  sheenobu = {
-    email = "sheena.artrip@gmail.com";
-    github = "sheenobu";
-    name = "Sheena Artrip";
-  };
-  sheganinans = {
-    email = "sheganinans@gmail.com";
-    github = "sheganinans";
-    name = "Aistis Raulinaitis";
-  };
-  shell = {
-    email = "cam.turn@gmail.com";
-    github = "VShell";
-    name = "Shell Turner";
-  };
-  shlevy = {
-    email = "shea@shealevy.com";
-    github = "shlevy";
-    name = "Shea Levy";
-  };
-  siddharthist = {
-    email = "langston.barrett@gmail.com";
-    github = "siddharthist";
-    name = "Langston Barrett";
-  };
-  sifmelcara = {
-    email = "ming@culpring.com";
-    github = "sifmelcara";
-    name = "Ming Chuan";
-  };
-  sigma = {
-    email = "yann.hodique@gmail.com";
-    github = "sigma";
-    name = "Yann Hodique";
-  };
-  simonvandel = {
-    email = "simon.vandel@gmail.com";
-    github = "simonvandel";
-    name = "Simon Vandel Sillesen";
-  };
-  sivteck = {
-    email = "sivaram1992@gmail.com";
-    github = "sivteck";
-    name = "Sivaram Balakrishnan";
-  };
-  sjagoe = {
-    email = "simon@simonjagoe.com";
-    github = "sjagoe";
-    name = "Simon Jagoe";
-  };
-  sjmackenzie = {
-    email = "setori88@gmail.com";
-    github = "sjmackenzie";
-    name = "Stewart Mackenzie";
-  };
-  sjourdois = {
-    email = "sjourdois@gmail.com";
-    name = "Stéphane ‘kwisatz’ Jourdois";
-  };
-  skeidel = {
-    email = "svenkeidel@gmail.com";
-    github = "svenkeidel";
-    name = "Sven Keidel";
-  };
-  skrzyp = {
-    email = "jot.skrzyp@gmail.com";
-    name = "Jakub Skrzypnik";
-  };
-  sleexyz = {
-    email = "freshdried@gmail.com";
-    github = "sleexyz";
-    name = "Sean Lee";
-  };
-  smironov = {
-    email = "grrwlf@gmail.com";
-    github = "grwlf";
-    name = "Sergey Mironov";
-  };
-  snyh = {
-    email = "snyh@snyh.org";
-    github = "snyh";
-    name = "Xia Bin";
-  };
-  solson = {
-    email = "scott@solson.me";
-    github = "solson";
-    name = "Scott Olson";
-  };
-  sorki = {
-    email = "srk@48.io";
-    github = "sorki";
-    name = "Richard Marko";
-  };
-  sorpaas = {
-    email = "hi@that.world";
-    github = "sorpaas";
-    name = "Wei Tang";
-  };
-  spacefrogg = {
-    email = "spacefrogg-nixos@meterriblecrew.net";
-    github = "spacefrogg";
-    name = "Michael Raitza";
-  };
-  spencerjanssen = {
-    email = "spencerjanssen@gmail.com";
-    github = "spencerjanssen";
-    name = "Spencer Janssen";
-  };
-  spinus = {
-    email = "tomasz.czyz@gmail.com";
-    github = "spinus";
-    name = "Tomasz Czyż";
-  };
-  sprock = {
-    email = "rmason@mun.ca";
-    github = "sprock";
-    name = "Roger Mason";
-  };
-  spwhitt = {
-    email = "sw@swhitt.me";
-    github = "spwhitt";
-    name = "Spencer Whitt";
-  };
-  srhb = {
-    email = "sbrofeldt@gmail.com";
-    github = "srhb";
-    name = "Sarah Brofeldt";
-  };
-  stephenmw = {
-    email = "stephen@q5comm.com";
-    github = "stephenmw";
-    name = "Stephen Weinberg";
-  };
-  sternenseemann = {
-    email = "post@lukasepple.de";
-    github = "sternenseemann";
-    name = "Lukas Epple";
-  };
-  stesie = {
-    email = "stesie@brokenpipe.de";
-    github = "stesie";
-    name = "Stefan Siegl";
-  };
-  steveej = {
-    email = "mail@stefanjunker.de";
-    github = "steveej";
-    name = "Stefan Junker";
-  };
-  stumoss = {
-    email = "samoss@gmail.com";
-    github = "stumoss";
-    name = "Stuart Moss";
-  };
-  suvash = {
-    email = "suvash+nixpkgs@gmail.com";
-    github = "suvash";
-    name = "Suvash Thapaliya";
-  };
-  svsdep = {
-    email = "svsdep@gmail.com";
-    github = "svsdep";
-    name = "Vasyl Solovei";
-  };
-  swarren83 = {
-    email = "shawn.w.warren@gmail.com";
-    github = "swarren83";
-    name = "Shawn Warren";
-  };
-  swflint = {
-    email = "swflint@flintfam.org";
-    github = "swflint";
-    name = "Samuel W. Flint";
-  };
-  swistak35 = {
-    email = "me@swistak35.com";
-    github = "swistak35";
-    name = "Rafał Łasocha";
-  };
-  symphorien = {
-    email = "symphorien_nixpkgs@xlumurb.eu";
-    github = "symphorien";
-    name = "Guillaume Girol";
-  };
-  szczyp = {
-    email = "qb@szczyp.com";
-    github = "szczyp";
-    name = "Szczyp";
-  };
-  sztupi = {
-    email = "attila.sztupak@gmail.com";
-    github = "sztupi";
-    name = "Attila Sztupak";
-  };
-  tadfisher = {
-    email = "tadfisher@gmail.com";
-    github = "tadfisher";
-    name = "Tad Fisher";
-  };
-  taeer = {
-    email = "taeer@necsi.edu";
-    github = "Radvendii";
-    name = "Taeer Bar-Yam";
-  };
-  tailhook = {
-    email = "paul@colomiets.name";
-    github = "tailhook";
-    name = "Paul Colomiets";
-  };
-  taketwo = {
-    email = "alexandrov88@gmail.com";
-    github = "taketwo";
-    name = "Sergey Alexandrov";
-  };
-  takikawa = {
-    email = "asumu@igalia.com";
-    github = "takikawa";
-    name = "Asumu Takikawa";
-  };
-  taktoa = {
-    email = "taktoa@gmail.com";
-    github = "taktoa";
-    name = "Remy Goldschmidt";
-  };
-  taku0 = {
-    email = "mxxouy6x3m_github@tatapa.org";
-    github = "taku0";
-    name = "Takuo Yonezawa";
-  };
-  tari = {
-    email = "peter@taricorp.net";
-    github = "tari";
-    name = "Peter Marheine";
-  };
-  tavyc = {
-    email = "octavian.cerna@gmail.com";
-    github = "tavyc";
-    name = "Octavian Cerna";
-  };
-  teh = {
-    email = "tehunger@gmail.com";
-    github = "teh";
-    name = "Tom Hunger";
-  };
-  telotortium = {
-    email = "rirelan@gmail.com";
-    github = "telotortium";
-    name = "Robert Irelan";
-  };
-  teozkr = {
-    email = "teo@nullable.se";
-    github = "teozkr";
-    name = "Teo Klestrup Röijezon";
-  };
-  teto = {
-    email = "mcoudron@hotmail.com";
-    github = "teto";
-    name = "Matthieu Coudron";
-  };
-  tex = {
-    email = "milan.svoboda@centrum.cz";
-    github = "tex";
-    name = "Milan Svoboda";
-  };
-  thall = {
-    email = "niclas.thall@gmail.com";
-    github = "thall";
-    name = "Niclas Thall";
-  };
-  thammers = {
-    email = "jawr@gmx.de";
-    github = "tobias-hammerschmidt";
-    name = "Tobias Hammerschmidt";
-  };
-  thanegill = {
-    email = "me@thanegill.com";
-    github = "thanegill";
-    name = "Thane Gill";
-  };
-  the-kenny = {
-    email = "moritz@tarn-vedra.de";
-    github = "the-kenny";
-    name = "Moritz Ulrich";
-  };
-  theuni = {
-    email = "ct@flyingcircus.io";
-    github = "ctheune";
-    name = "Christian Theune";
-  };
-  thoughtpolice = {
-    email = "aseipp@pobox.com";
-    github = "thoughtpolice";
-    name = "Austin Seipp";
-  };
-  thpham = {
-    email = "thomas.pham@ithings.ch";
-    github = "thpham";
-    name = "Thomas Pham";
-  };
-  tilpner = {
-    email = "till@hoeppner.ws";
-    github = "tilpner";
-    name = "Till Höppner";
-  };
-  timbertson = {
-    email = "tim@gfxmonk.net";
-    github = "timbertson";
-    name = "Tim Cuthbertson";
-  };
-  timokau = {
-    email = "timokau@zoho.com";
-    github = "timokau";
-    name = "Timo Kaufmann";
-  };
-  timor = {
-    email = "timor.dd@googlemail.com";
-    github = "timor";
-    name = "timor";
-  };
-  tiramiseb = {
-    email = "sebastien@maccagnoni.eu";
-    github = "tiramiseb";
-    name = "Sébastien Maccagnoni";
-  };
-  titanous = {
-    email = "jonathan@titanous.com";
-    github = "titanous";
-    name = "Jonathan Rudenberg";
-  };
-  tnias = {
-    email = "phil@grmr.de";
-    github = "tnias";
-    name = "Philipp Bartsch";
-  };
-  tohl = {
-    email = "tom@logand.com";
-    github = "tohl";
-    name = "Tomas Hlavaty";
-  };
-  tokudan = {
-    email = "git@danielfrank.net";
-    github = "tokudan";
-    name = "Daniel Frank";
-  };
-  tomberek = {
-    email = "tomberek@gmail.com";
-    github = "tomberek";
-    name = "Thomas Bereknyei";
-  };
-  tomsmeets = {
-    email = "tom@tsmeets.nl";
-    github = "tomsmeets";
-    name = "Tom Smeets";
-  };
-  travisbhartwell = {
-    email = "nafai@travishartwell.net";
-    github = "travisbhartwell";
-    name = "Travis B. Hartwell";
-  };
-  treemo = {
-    email = "matthieu.chevrier@treemo.fr";
-    github = "treemo";
-    name = "Matthieu Chevrier";
-  };
-  trevorj = {
-    email = "nix@trevor.joynson.io";
-    github = "akatrevorjay";
-    name = "Trevor Joynson";
-  };
-  trino = {
-    email = "muehlhans.hubert@ekodia.de";
-    github = "hmuehlhans";
-    name = "Hubert Mühlhans";
-  };
-  troydm = {
-    email = "d.geurkov@gmail.com";
-    github = "troydm";
-    name = "Dmitry Geurkov";
-  };
-  tstrobel = {
-    email = "4ZKTUB6TEP74PYJOPWIR013S2AV29YUBW5F9ZH2F4D5UMJUJ6S@hash.domains";
-    name = "Thomas Strobel";
-  };
-  ttuegel = {
-    email = "ttuegel@mailbox.org";
-    github = "ttuegel";
-    name = "Thomas Tuegel";
-  };
-  tv = {
-    email = "tv@shackspace.de";
-    github = "4z3";
-    name = "Tomislav Viljetić";
-  };
-  tvestelind = {
-    email = "tomas.vestelind@fripost.org";
-    github = "tvestelind";
-    name = "Tomas Vestelind";
-  };
-  tvorog = {
-    email = "marszaripov@gmail.com";
-    github = "tvorog";
-    name = "Marsel Zaripov";
-  };
-  tweber = {
-    email = "tw+nixpkgs@360vier.de";
-    github = "thorstenweber83";
-    name = "Thorsten Weber";
-  };
-  twey = {
-    email = "twey@twey.co.uk";
-    github = "twey";
-    name = "James ‘Twey’ Kay";
-  };
-  unode = {
-    email = "alves.rjc@gmail.com";
-    github = "unode";
-    name = "Renato Alves";
-  };
-  uralbash = {
-    email = "root@uralbash.ru";
-    github = "uralbash";
-    name = "Svintsov Dmitry";
-  };
-  utdemir = {
-    email = "me@utdemir.com";
-    github = "utdemir";
-    name = "Utku Demir";
-  };
-  uwap = {
-    email = "me@uwap.name";
-    github = "uwap";
-    name = "uwap";
-  };
-  va1entin = {
-    email = "github@valentinsblog.com";
-    github = "va1entin";
-    name = "Valentin Heidelberger";
-  };
-  vaibhavsagar = {
-    email = "vaibhavsagar@gmail.com";
-    github = "vaibhavsagar";
-    name = "Vaibhav Sagar";
-  };
-  valeriangalliat = {
-    email = "val@codejam.info";
-    github = "valeriangalliat";
-    name = "Valérian Galliat";
-  };
-  vandenoever = {
-    email = "jos@vandenoever.info";
-    github = "vandenoever";
-    name = "Jos van den Oever";
-  };
-  vanschelven = {
-    email = "klaas@vanschelven.com";
-    github = "vanschelven";
-    name = "Klaas van Schelven";
-  };
-  vanzef = {
-    email = "vanzef@gmail.com";
-    github = "vanzef";
-    name = "Ivan Solyankin";
-  };
-  varunpatro = {
-    email = "varun.kumar.patro@gmail.com";
-    github = "varunpatro";
-    name = "Varun Patro";
-  };
-  vbgl = {
-    email = "Vincent.Laporte@gmail.com";
-    github = "vbgl";
-    name = "Vincent Laporte";
-  };
-  vbmithr = {
-    email = "vb@luminar.eu.org";
-    github = "vbmithr";
-    name = "Vincent Bernardoff";
-  };
-  vcunat = {
-    email = "vcunat@gmail.com";
-    github = "vcunat";
-    name = "Vladimír Čunát";
-  };
-  vdemeester = {
-    email = "vincent@sbr.pm";
-    github = "vdemeester";
-    name = "Vincent Demeester";
-  };
-  velovix = {
-    email = "xaviosx@gmail.com";
-    github = "velovix";
-    name = "Tyler Compton";
-  };
-  veprbl = {
-    email = "veprbl@gmail.com";
-    github = "veprbl";
-    name = "Dmitry Kalinkin";
-  };
-  vidbina = {
-    email = "vid@bina.me";
-    github = "vidbina";
-    name = "David Asabina";
-  };
-  vifino = {
-    email = "vifino@tty.sh";
-    github = "vifino";
-    name = "Adrian Pistol";
-  };
-  vinymeuh = {
-    email = "vinymeuh@gmail.com";
-    github = "vinymeuh";
-    name = "VinyMeuh";
-  };
-  viric = {
-    email = "viric@viric.name";
-    github = "viric";
-    name = "Lluís Batlle i Rossell";
-  };
-  vizanto = {
-    email = "danny@prime.vc";
-    github = "vizanto";
-    name = "Danny Wilson";
-  };
-  vklquevs = {
-    email = "vklquevs@gmail.com";
-    github = "vklquevs";
-    name = "vklquevs";
-  };
-  vlstill = {
-    email = "xstill@fi.muni.cz";
-    github = "vlstill";
-    name = "Vladimír Štill";
-  };
-  vmandela = {
-    email = "venkat.mandela@gmail.com";
-    github = "vmandela";
-    name = "Venkateswara Rao Mandela";
-  };
-  vmchale = {
-    email = "tmchale@wisc.edu";
-    github = "vmchale";
-    name = "Vanessa McHale";
-  };
-  volhovm = {
-    email = "volhovm.cs@gmail.com";
-    github = "volhovm";
-    name = "Mikhail Volkhov";
-  };
-  volth = {
-    email = "jaroslavas@volth.com";
-    github = "volth";
-    name = "Jaroslavas Pocepko";
-  };
-  vozz = {
-    email = "oliver.huntuk@gmail.com";
-    name = "Oliver Hunt";
-  };
-  vrthra = {
-    email = "rahul@gopinath.org";
-    github = "vrthra";
-    name = "Rahul Gopinath";
-  };
-  vyp = {
-    email = "elisp.vim@gmail.com";
-    github = "vyp";
-    name = "vyp";
-  };
-  wedens = {
-    email = "kirill.wedens@gmail.com";
-    name = "wedens";
-  };
-  willibutz = {
-    email = "willibutz@posteo.de";
-    github = "willibutz";
-    name = "Willi Butz";
-  };
-  willtim = {
-    email = "tim.williams.public@gmail.com";
-    name = "Tim Philip Williams";
-  };
-  winden = {
-    email = "windenntw@gmail.com";
-    name = "Antonio Vargas Gonzalez";
-  };
-  wizeman = {
-    email = "rcorreia@wizy.org";
-    github = "wizeman";
-    name = "Ricardo M. Correia";
-  };
-  wjlroe = {
-    email = "willroe@gmail.com";
-    github = "wjlroe";
-    name = "William Roe";
-  };
-  wkennington = {
-    email = "william@wkennington.com";
-    github = "wkennington";
-    name = "William A. Kennington III";
-  };
-  wmertens = {
-    email = "Wout.Mertens@gmail.com";
-    github = "wmertens";
-    name = "Wout Mertens";
-  };
-  woffs = {
-    email = "github@woffs.de";
-    github = "woffs";
-    name = "Frank Doepper";
-  };
-  womfoo = {
-    email = "kranium@gikos.net";
-    github = "womfoo";
-    name = "Kranium Gikos Mendoza";
-  };
-  wscott = {
-    email = "wsc9tt@gmail.com";
-    github = "wscott";
-    name = "Wayne Scott";
-  };
-  wyvie = {
-    email = "elijahrum@gmail.com";
-    github = "wyvie";
-    name = "Elijah Rum";
-  };
-  xaverdh = {
-    email = "hoe.dom@gmx.de";
-    github = "xaverdh";
-    name = "Dominik Xaver Hörl";
-  };
-  xeji = {
-    email = "xeji@cat3.de";
-    github = "xeji";
-    name = "xeji";
-  };
-  xnaveira = {
-    email = "xnaveira@gmail.com";
-    github = "xnaveira";
-    name = "Xavier Naveira";
-  };
-  xnwdd = {
-    email = "nwdd+nixos@no.team";
-    github = "xnwdd";
-    name = "Guillermo NWDD";
-  };
-  xurei = {
-    email = "olivier.bourdoux@gmail.com";
-    github = "xurei";
-    name = "Olivier Bourdoux";
-  };
-  xvapx = {
-    email = "marti.serra.coscollano@gmail.com";
-    github = "xvapx";
-    name = "Marti Serra";
-  };
-  xwvvvvwx = {
-    email = "davidterry@posteo.de";
-    github = "xwvvvvwx";
-    name = "David Terry";
-  };
-  xzfc = {
-    email = "xzfcpw@gmail.com";
-    github = "xzfc";
-    name = "Albert Safin";
-  };
-  y0no = {
-    email = "y0no@y0no.fr";
-    github = "y0no";
-    name = "Yoann Ono";
-  };
-  yarr = {
-    email = "savraz@gmail.com";
-    github = "Eternity-Yarr";
-    name = "Dmitry V.";
-  };
-  yegortimoshenko = {
-    email = "yegortimoshenko@gmail.com";
-    github = "yegortimoshenko";
-    name = "Yegor Timoshenko";
-  };
-  yesbox = {
-    email = "jesper.geertsen.jonsson@gmail.com";
-    github = "yesbox";
-    name = "Jesper Geertsen Jonsson";
-  };
-  ylwghst = {
-    email = "ylwghst@onionmail.info";
-    github = "ylwghst";
-    name = "Burim Augustin Berisa";
-  };
-  yochai = {
-    email = "yochai@titat.info";
-    github = "yochai";
-    name = "Yochai";
-  };
-  yorickvp = {
-    email = "yorickvanpelt@gmail.com";
-    github = "yorickvp";
-    name = "Yorick van Pelt";
-  };
-  yrashk = {
-    email = "yrashk@gmail.com";
-    github = "yrashk";
-    name = "Yurii Rashkovskii";
-  };
-  yuriaisaka = {
-    email = "yuri.aisaka+nix@gmail.com";
-    github = "yuriaisaka";
-    name = "Yuri Aisaka";
-  };
-  yurrriq = {
-    email = "eric@ericb.me";
-    github = "yurrriq";
-    name = "Eric Bailey";
-  };
-  z77z = {
-    email = "maggesi@math.unifi.it";
-    github = "maggesi";
-    name = "Marco Maggesi";
-  };
-  zagy = {
-    email = "cz@flyingcircus.io";
-    github = "zagy";
-    name = "Christian Zagrodnick";
-  };
-  zalakain = {
-    email = "contact@unaizalakain.info";
-    github = "umazalakain";
-    name = "Unai Zalakain";
-  };
-  zarelit = {
-    email = "david@zarel.net";
-    github = "zarelit";
-    name = "David Costa";
-  };
-  zauberpony = {
-    email = "elmar@athmer.org";
-    github = "zauberpony";
-    name = "Elmar Athmer";
-  };
-  zef = {
-    email = "zef@zef.me";
-    name = "Zef Hemel";
-  };
-  zimbatm = {
-    email = "zimbatm@zimbatm.com";
-    github = "zimbatm";
-    name = "zimbatm";
-  };
-  zohl = {
-    email = "zohl@fmap.me";
-    github = "zohl";
-    name = "Al Zohali";
-  };
-  zoomulator = {
-    email = "zoomulator@gmail.com";
-    github = "zoomulator";
-    name = "Kim Simmons";
-  };
-  zraexy = {
-    email = "zraexy@gmail.com";
-    github = "zraexy";
-    name = "David Mell";
-  };
-  zx2c4 = {
-    email = "Jason@zx2c4.com";
-    github = "zx2c4";
-    name = "Jason A. Donenfeld";
-  };
-  zzamboni = {
-    email = "diego@zzamboni.org";
-    github = "zzamboni";
-    name = "Diego Zamboni";
-  };
-}
diff --git a/lib/modules.nix b/lib/modules.nix
index 654c4c588de..6c8033322a5 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -59,7 +59,7 @@ rec {
         };
       };
 
-      closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options; lib = import ./.; } // specialArgs);
+      closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options lib; } // specialArgs);
 
       options = mergeModules prefix (reverseList (filterModules (specialArgs.modulesPath or "") closed));
 
@@ -159,7 +159,7 @@ rec {
       context = name: ''while evaluating the module argument `${name}' in "${key}":'';
       extraArgs = builtins.listToAttrs (map (name: {
         inherit name;
-        value = addErrorContext (context name)
+        value = builtins.addErrorContext (context name)
           (args.${name} or config._module.args.${name});
       }) requiredArgs);
 
@@ -309,7 +309,7 @@ rec {
           res.mergedValue;
 
     in opt //
-      { value = addErrorContext "while evaluating the option `${showOption loc}':" value;
+      { value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
         definitions = map (def: def.value) res.defsFinal;
         files = map (def: def.file) res.defsFinal;
         inherit (res) isDefined;
@@ -660,7 +660,7 @@ rec {
   doRename = { from, to, visible, warn, use }:
     let
       toOf = attrByPath to
-        (abort "Renaming error: option `${showOption to}' does not exists.");
+        (abort "Renaming error: option `${showOption to}' does not exist.");
     in
       { config, options, ... }:
       { options = setAttrByPath from (mkOption {
diff --git a/lib/strings.nix b/lib/strings.nix
index 9cbd1494a2b..61babf0b1aa 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -82,7 +82,7 @@ rec {
        => "//bin"
   */
   makeSearchPath = subDir: packages:
-    concatStringsSep ":" (map (path: path + "/" + subDir) packages);
+    concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) packages));
 
   /* Construct a Unix-style search path, using given package output.
      If no output is found, fallback to `.out` and then to the default.
@@ -437,6 +437,13 @@ rec {
   */
   fixedWidthNumber = width: n: fixedWidthString width "0" (toString n);
 
+  /* Check whether a value can be coerced to a string */
+  isCoercibleToString = x:
+    builtins.elem (builtins.typeOf x) [ "path" "string" "null" "int" "float" "bool" ] ||
+    (builtins.isList x && lib.all isCoercibleToString x) ||
+    x ? outPath ||
+    x ? __toString;
+
   /* Check whether a value is a store path.
 
      Example:
@@ -450,7 +457,7 @@ rec {
        => false
   */
   isStorePath = x:
-       builtins.isString x
+       isCoercibleToString x
     && builtins.substring 0 1 (toString x) == "/"
     && dirOf (builtins.toPath x) == builtins.storeDir;
 
diff --git a/lib/systems/default.nix b/lib/systems/default.nix
index 9b930824609..ee4c29660a5 100644
--- a/lib/systems/default.nix
+++ b/lib/systems/default.nix
@@ -45,8 +45,17 @@ rec {
       };
       # Misc boolean options
       useAndroidPrebuilt = false;
+      useiOSPrebuilt = false;
+      isiPhoneSimulator = false;
     } // mapAttrs (n: v: v final.parsed) inspect.predicates
       // args;
   in assert final.useAndroidPrebuilt -> final.isAndroid;
+     assert lib.foldl
+       (pass: { assertion, message }:
+         if assertion final
+         then pass
+         else throw message)
+       true
+       (final.parsed.abi.assertions or []);
     final;
 }
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index 32c24bab7c9..07728c19fc9 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -87,16 +87,36 @@ rec {
   #
 
   iphone64 = {
-    config = "aarch64-apple-darwin14";
-    arch = "arm64";
-    libc = "libSystem";
+    config = "aarch64-apple-ios";
+    # config = "aarch64-apple-darwin14";
+    sdkVer = "10.2";
+    useiOSPrebuilt = true;
     platform = {};
   };
 
   iphone32 = {
-    config = "arm-apple-darwin10";
-    arch = "armv7-a";
-    libc = "libSystem";
+    config = "armv7a-apple-ios";
+    # config = "arm-apple-darwin10";
+    sdkVer = "10.2";
+    useiOSPrebuilt = true;
+    platform = {};
+  };
+
+  iphone64-simulator = {
+    config = "x86_64-apple-ios";
+    # config = "x86_64-apple-darwin14";
+    sdkVer = "10.2";
+    useiOSPrebuilt = true;
+    isiPhoneSimulator = true;
+    platform = {};
+  };
+
+  iphone32-simulator = {
+    config = "i686-apple-ios";
+    # config = "i386-apple-darwin11";
+    sdkVer = "10.2";
+    useiOSPrebuilt = true;
+    isiPhoneSimulator = true;
     platform = {};
   };
 
diff --git a/lib/systems/for-meta.nix b/lib/systems/for-meta.nix
index 68c68c2cd36..9e85cea3ad1 100644
--- a/lib/systems/for-meta.nix
+++ b/lib/systems/for-meta.nix
@@ -4,8 +4,8 @@ let
   inherit (lib.systems.inspect) patterns;
 
 in rec {
-  inherit (lib.systems.doubles) all mesaPlatforms;
-  none = [];
+  all     = [ {} ]; # `{}` matches anything
+  none    = [];
 
   arm     = [ patterns.isAarch32 ];
   aarch64 = [ patterns.isAarch64 ];
@@ -13,6 +13,7 @@ in rec {
   i686    = [ patterns.isi686 ];
   x86_64  = [ patterns.isx86_64 ];
   mips    = [ patterns.isMips ];
+  riscv   = [ patterns.isRiscV ];
 
   cygwin  = [ patterns.isCygwin ];
   darwin  = [ patterns.isDarwin ];
@@ -24,4 +25,7 @@ in rec {
   netbsd  = [ patterns.isNetBSD ];
   openbsd = [ patterns.isOpenBSD ];
   unix    = patterns.isUnix; # Actually a list
+  windows = [ patterns.isWindows ];
+
+  inherit (lib.systems.doubles) mesaPlatforms;
 }
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index 6738ae3d441..9960954e464 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -21,9 +21,11 @@ rec {
     isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
 
     isBSD          = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
+    isDarwin       = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
     isUnix         = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ];
 
-    isDarwin       = { kernel = kernels.darwin; };
+    isMacOS        = { kernel = kernels.macos; };
+    isiOS          = { kernel = kernels.ios; };
     isLinux        = { kernel = kernels.linux; };
     isSunOS        = { kernel = kernels.solaris; };
     isFreeBSD      = { kernel = kernels.freebsd; };
@@ -38,12 +40,8 @@ rec {
     isMusl         = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
     isUClibc       = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
 
-    isKexecable    = map (family: { kernel = kernels.linux; cpu.family = family; })
-                       [ "x86" "arm" "aarch64" "mips" ];
     isEfi          = map (family: { cpu.family = family; })
                        [ "x86" "arm" "aarch64" ];
-    isSeccomputable = map (family: { kernel = kernels.linux; cpu.family = family; })
-                        [ "x86" "arm" "aarch64" "mips" ];
 
     # Deprecated after 18.03
     isArm = isAarch32;
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 3667766aa9f..1315f290cef 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -34,7 +34,7 @@ rec {
 
   ################################################################################
 
-  types.openSignifiantByte = mkOptionType {
+  types.openSignificantByte = mkOptionType {
     name = "significant-byte";
     description = "Endianness";
     merge = mergeOneOption;
@@ -42,7 +42,7 @@ rec {
 
   types.significantByte = enum (attrValues significantBytes);
 
-  significantBytes = setTypes types.openSignifiantByte {
+  significantBytes = setTypes types.openSignificantByte {
     bigEndian = {};
     littleEndian = {};
   };
@@ -140,6 +140,7 @@ rec {
 
   kernelFamilies = setTypes types.openKernelFamily {
     bsd = {};
+    darwin = {};
   };
 
   ################################################################################
@@ -155,7 +156,10 @@ rec {
   types.kernel = enum (attrValues kernels);
 
   kernels = with execFormats; with kernelFamilies; setTypes types.openKernel {
-    darwin  = { execFormat = macho;   families = { }; };
+    # TODO(@Ericson2314): Don't want to mass-rebuild yet to keeping 'darwin' as
+    # the nnormalized name for macOS.
+    macos   = { execFormat = macho;   families = { inherit darwin; }; name = "darwin"; };
+    ios     = { execFormat = macho;   families = { inherit darwin; }; };
     freebsd = { execFormat = elf;     families = { inherit bsd; }; };
     hurd    = { execFormat = elf;     families = { }; };
     linux   = { execFormat = elf;     families = { }; };
@@ -165,9 +169,13 @@ rec {
     solaris = { execFormat = elf;     families = { }; };
     windows = { execFormat = pe;      families = { }; };
   } // { # aliases
+    # 'darwin' is the kernel for all of them. We choose macOS by default.
+    darwin = kernels.macos;
     # TODO(@Ericson2314): Handle these Darwin version suffixes more generally.
-    darwin10 = kernels.darwin;
-    darwin14 = kernels.darwin;
+    darwin10 = kernels.macos;
+    darwin14 = kernels.macos;
+    watchos = kernels.ios;
+    tvos = kernels.ios;
     win32 = kernels.windows;
   };
 
@@ -191,7 +199,15 @@ rec {
 
     gnueabi      = { float = "soft"; };
     gnueabihf    = { float = "hard"; };
-    gnu          = {};
+    gnu          = {
+      assertions = [
+        { assertion = platform: !platform.isAarch32;
+          message = ''
+            The "gnu" ABI is ambiguous on 32-bit ARM. Use "gnueabi" or "gnueabihf" instead.
+          '';
+        }
+      ];
+    };
 
     musleabi     = { float = "soft"; };
     musleabihf   = { float = "hard"; };
@@ -206,7 +222,7 @@ rec {
 
   ################################################################################
 
-  types.system = mkOptionType {
+  types.parsedPlatform = mkOptionType {
     name = "system";
     description = "fully parsed representation of llvm- or nix-style platform tuple";
     merge = mergeOneOption;
@@ -220,7 +236,7 @@ rec {
   isSystem = isType "system";
 
   mkSystem = components:
-    assert types.system.check components;
+    assert types.parsedPlatform.check components;
     setType "system" components;
 
   mkSkeletonFromList = l: {
@@ -266,7 +282,7 @@ rec {
       kernel = getKernel args.kernel;
       abi =
         /**/ if args ? abi       then getAbi args.abi
-        else if isLinux   parsed then abis.gnu
+        else if isLinux   parsed then (if isAarch32 parsed then abis.gnueabi else abis.gnu)
         else if isWindows parsed then abis.gnu
         else                     abis.unknown;
     };
@@ -276,8 +292,8 @@ rec {
   mkSystemFromString = s: mkSystemFromSkeleton (mkSkeletonFromList (lib.splitString "-" s));
 
   doubleFromSystem = { cpu, vendor, kernel, abi, ... }:
-    if abi == abis.cygnus
-    then "${cpu.name}-cygwin"
+    /**/ if abi == abis.cygnus       then "${cpu.name}-cygwin"
+    else if kernel.families ? darwin then "${cpu.name}-darwin"
     else "${cpu.name}-${kernel.name}";
 
   tripleFromSystem = { cpu, vendor, kernel, abi, ... } @ sys: assert isSystem sys; let
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index 1657ec33a46..c683df7d7ca 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -93,6 +93,7 @@ runTests {
             "${builtins.storeDir}/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11";
       in {
         storePath = isStorePath goodPath;
+        storePathDerivation = isStorePath (import ../.. {}).hello;
         storePathAppendix = isStorePath
           "${goodPath}/bin/python";
         nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath)));
@@ -106,6 +107,7 @@ runTests {
       };
     expected = {
       storePath = true;
+      storePathDerivation = true;
       storePathAppendix = false;
       nonAbsolute = false;
       asPath = true;
@@ -205,6 +207,29 @@ runTests {
     expected = ''f\:oo:bar'';
   };
 
+  testMkValueString = {
+    expr = let
+      vals = {
+        int = 42;
+        string = ''fo"o'';
+        bool = true;
+        bool2 = false;
+        null = null;
+        # float = 42.23; # floats are strange
+      };
+      in mapAttrs
+        (const (generators.mkValueStringDefault {}))
+        vals;
+    expected = {
+      int = "42";
+      string = ''fo"o'';
+      bool = "true";
+      bool2 = "false";
+      null = "null";
+      # float = "42.23" true false [ "bar" ] ]'';
+    };
+  };
+
   testToKeyValue = {
     expr = generators.toKeyValue {} {
       key = "value";
@@ -247,6 +272,8 @@ runTests {
       "section 1" = {
         attribute1 = 5;
         x = "Me-se JarJar Binx";
+        # booleans are converted verbatim by default
+        boolean = false;
       };
       "foo[]" = {
         "he\\h=he" = "this is okay";
@@ -258,6 +285,7 @@ runTests {
 
       [section 1]
       attribute1=5
+      boolean=false
       x=Me-se JarJar Binx
     '';
   };
@@ -289,7 +317,8 @@ runTests {
     expr = mapAttrs (const (generators.toPretty {})) rec {
       int = 42;
       bool = true;
-      string = "fnord";
+      string = ''fno"rd'';
+      path = /. + "/foo"; # toPath returns a string
       null_ = null;
       function = x: x;
       functionArgs = { arg ? 4, foo }: arg;
@@ -300,13 +329,14 @@ runTests {
     expected = rec {
       int = "42";
       bool = "true";
-      string = "\"fnord\"";
+      string = ''"fno\"rd"'';
+      path = "/foo";
       null_ = "null";
       function = "<λ>";
       functionArgs = "<λ:{(arg),foo}>";
       list = "[ 3 4 ${function} [ false ] ]";
       attrs = "{ \"foo\" = null; \"foo bar\" = \"baz\"; }";
-      drv = "<δ>";
+      drv = "<δ:test>";
     };
   };
 
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 96a91c0fffb..b83e1eb7d82 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -136,7 +136,18 @@ checkConfigOutput "true" "$@" ./define-module-check.nix
 # Check coerced value.
 checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
 checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
-checkConfigError 'The option value .* in .* is not.*string or signed integer.*' config.value ./declare-coerced-value.nix ./define-value-list.nix
+checkConfigError 'The option value .* in .* is not.*string or signed integer convertible to it' config.value ./declare-coerced-value.nix ./define-value-list.nix
+
+# Check coerced value with unsound coercion
+checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
+checkConfigError 'The option value .* in .* is not.*8 bit signed integer.* or string convertible to it' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
+checkConfigError 'unrecognised JSON value' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
+
+# Check loaOf with long list.
+checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-long-list.nix
+
+# Check loaOf with many merges of lists.
+checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-many-list-merges.nix
 
 cat <<EOF
 ====== module tests ======
diff --git a/lib/tests/modules/declare-coerced-value-unsound.nix b/lib/tests/modules/declare-coerced-value-unsound.nix
new file mode 100644
index 00000000000..7a017f24e77
--- /dev/null
+++ b/lib/tests/modules/declare-coerced-value-unsound.nix
@@ -0,0 +1,10 @@
+{ lib, ... }:
+
+{
+  options = {
+    value = lib.mkOption {
+      default = "12";
+      type = lib.types.coercedTo lib.types.str lib.toInt lib.types.ints.s8;
+    };
+  };
+}
diff --git a/lib/tests/modules/define-value-string-arbitrary.nix b/lib/tests/modules/define-value-string-arbitrary.nix
new file mode 100644
index 00000000000..8e3abaf536a
--- /dev/null
+++ b/lib/tests/modules/define-value-string-arbitrary.nix
@@ -0,0 +1,3 @@
+{
+  value = "foobar";
+}
diff --git a/lib/tests/modules/define-value-string-bigint.nix b/lib/tests/modules/define-value-string-bigint.nix
new file mode 100644
index 00000000000..f27e31985c9
--- /dev/null
+++ b/lib/tests/modules/define-value-string-bigint.nix
@@ -0,0 +1,3 @@
+{
+  value = "1000";
+}
diff --git a/lib/tests/modules/loaOf-with-long-list.nix b/lib/tests/modules/loaOf-with-long-list.nix
new file mode 100644
index 00000000000..f30903c47e5
--- /dev/null
+++ b/lib/tests/modules/loaOf-with-long-list.nix
@@ -0,0 +1,19 @@
+{ config, lib, ... }:
+
+{
+  options = {
+    loaOfInt = lib.mkOption {
+      type = lib.types.loaOf lib.types.int;
+    };
+
+    result = lib.mkOption {
+      type = lib.types.str;
+    };
+  };
+
+  config = {
+    loaOfInt = [ 1 2 3 4 5 6 7 8 9 10 ];
+
+    result = toString (lib.attrValues config.loaOfInt);
+  };
+}
diff --git a/lib/tests/modules/loaOf-with-many-list-merges.nix b/lib/tests/modules/loaOf-with-many-list-merges.nix
new file mode 100644
index 00000000000..f8f8a8da82b
--- /dev/null
+++ b/lib/tests/modules/loaOf-with-many-list-merges.nix
@@ -0,0 +1,19 @@
+{ config, lib, ... }:
+
+{
+  options = {
+    loaOfInt = lib.mkOption {
+      type = lib.types.loaOf lib.types.int;
+    };
+
+    result = lib.mkOption {
+      type = lib.types.str;
+    };
+  };
+
+  config = {
+    loaOfInt = lib.mkMerge (map lib.singleton [ 1 2 3 4 5 6 7 8 9 10 ]);
+
+    result = toString (lib.attrValues config.loaOfInt);
+  };
+}
diff --git a/lib/tests/release.nix b/lib/tests/release.nix
index a6184041682..d9a8a006725 100644
--- a/lib/tests/release.nix
+++ b/lib/tests/release.nix
@@ -13,7 +13,6 @@ pkgs.stdenv.mkDerivation {
     export NIX_DB_DIR=$TEST_ROOT/db
     export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
     export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
-    export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
     export NIX_STATE_DIR=$TEST_ROOT/var/nix
     export NIX_STORE_DIR=$TEST_ROOT/store
     export PAGER=cat
@@ -21,7 +20,7 @@ pkgs.stdenv.mkDerivation {
     nix-store --init
 
     cd ${pkgs.path}/lib/tests
-    ./modules.sh
+    bash ./modules.sh
 
     [[ "$(nix-instantiate --eval --strict misc.nix)" == "[ ]" ]]
 
diff --git a/lib/trivial.nix b/lib/trivial.nix
index a928e1dbca9..251cb796db0 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -58,11 +58,14 @@ rec {
 
   inherit (lib.strings) fileContents;
 
+  release = fileContents ../.version;
+  versionSuffix = let suffixFile = ../.version-suffix; in
+    if pathExists suffixFile then fileContents suffixFile else "pre-git";
+
   # Return the Nixpkgs version number.
-  nixpkgsVersion =
-    let suffixFile = ../.version-suffix; in
-    fileContents ../.version
-    + (if pathExists suffixFile then fileContents suffixFile else "pre-git");
+  version = release + versionSuffix;
+
+  nixpkgsVersion = builtins.trace "`lib.nixpkgsVersion` is deprecated, use `lib.version` instead!" version;
 
   # Whether we're being called by nix-shell.
   inNixShell = builtins.getEnv "IN_NIX_SHELL" != "";
diff --git a/lib/types.nix b/lib/types.nix
index a334db5c724..77271689772 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -256,7 +256,7 @@ rec {
       functor = (defaultFunctor name) // { wrapped = elemType; };
     };
 
-    nonEmptyListOf = elemType: 
+    nonEmptyListOf = elemType:
       let list = addCheck (types.listOf elemType) (l: l != []);
       in list // { description = "non-empty " + list.description; };
 
@@ -280,15 +280,26 @@ rec {
     # List or attribute set of ...
     loaOf = elemType:
       let
-        convertIfList = defIdx: def:
+        convertAllLists = defs:
+          let
+            padWidth = stringLength (toString (length defs));
+            unnamedPrefix = i: "unnamed-" + fixedWidthNumber padWidth i + ".";
+          in
+            imap1 (i: convertIfList (unnamedPrefix i)) defs;
+
+        convertIfList = unnamedPrefix: def:
           if isList def.value then
-            { inherit (def) file;
-              value = listToAttrs (
-                imap1 (elemIdx: elem:
-                  { name = elem.name or "unnamed-${toString defIdx}.${toString elemIdx}";
-                    value = elem;
-                  }) def.value);
-            }
+            let
+              padWidth = stringLength (toString (length def.value));
+              unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i;
+            in
+              { inherit (def) file;
+                value = listToAttrs (
+                  imap1 (elemIdx: elem:
+                    { name = elem.name or (unnamed elemIdx);
+                      value = elem;
+                    }) def.value);
+              }
           else
             def;
         listOnly = listOf elemType;
@@ -297,7 +308,7 @@ rec {
         name = "loaOf";
         description = "list or attribute set of ${elemType.description}s";
         check = x: isList x || isAttrs x;
-        merge = loc: defs: attrOnly.merge loc (imap1 convertIfList defs);
+        merge = loc: defs: attrOnly.merge loc (convertAllLists defs);
         getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["<name?>"]);
         getSubModules = elemType.getSubModules;
         substSubModules = m: loaOf (elemType.substSubModules m);
@@ -419,16 +430,13 @@ rec {
       assert coercedType.getSubModules == null;
       mkOptionType rec {
         name = "coercedTo";
-        description = "${finalType.description} or ${coercedType.description}";
-        check = x: finalType.check x || coercedType.check x;
+        description = "${finalType.description} or ${coercedType.description} convertible to it";
+        check = x: finalType.check x || (coercedType.check x && finalType.check (coerceFunc x));
         merge = loc: defs:
           let
             coerceVal = val:
               if finalType.check val then val
-              else let
-                coerced = coerceFunc val;
-              in assert finalType.check coerced; coerced;
-
+              else coerceFunc val;
           in finalType.merge loc (map (def: def // { value = coerceVal def.value; }) defs);
         getSubOptions = finalType.getSubOptions;
         getSubModules = finalType.getSubModules;