diff --git a/keys/default.nix b/keys/default.nix index 3bc08d1..9c1a2bd 100644 --- a/keys/default.nix +++ b/keys/default.nix @@ -1,14 +1,30 @@ let inherit (builtins) + attrValues elemAt + foldl' mapAttrs match readDir readFile ; + ## `mergeAttrs` and `concatMapAttrs` are in `lib.trivial` and `lib.attrsets`, + ## but we would rather avoid a dependency in nixpkgs for this file. + mergeAttrs = x: y: x // y; + concatMapAttrs = f: v: foldl' mergeAttrs { } (attrValues (mapAttrs f v)); + removePubSuffix = + s: + let + maybeMatch = match "(.*)\.pub" s; + in + if maybeMatch == null then s else elemAt maybeMatch 0; removeTrailingWhitespace = s: elemAt (match "(.*[^[:space:]])[[:space:]]*" s) 0; + collectKeys = - dir: mapAttrs (name: _: removeTrailingWhitespace (readFile (dir + "/${name}"))) (readDir dir); + dir: + concatMapAttrs (name: _: { + "${removePubSuffix name}" = removeTrailingWhitespace (readFile (dir + "/${name}")); + }) (readDir dir); in { contributors = collectKeys ./contributors;