diff --git a/lib/attrs.nix b/lib/attrs.nix index 7b86aaa..84b63c7 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -1,6 +1,6 @@ { lib, ... }: let - inherit (lib) filterAttrs listToAttrs mapAttrs'; + inherit (lib) filterAttrs listToAttrs mapAttrs' nameValuePair; in { # Filter a generated set of attrs using a predicate function. @@ -18,4 +18,19 @@ in # (value -> { name = any; value = any; }) # attrs genAttrs' = values: f: listToAttrs (map f values); + + # Rename each of the attributes in an attribute set using the mapping function + # + # renameAttrs :: + # (name -> new name) + # attrs + renameAttrs = f: mapAttrs' (name: value: nameValuePair (f name) value); + + # Rename each of the attributes in an attribute set using a function which + # takes the attribute's name and value as inputs. + # + # renameAttrs' :: + # (name -> value -> new name) + # attrs + renameAttrs' = f: mapAttrs' (name: value: nameValuePair (f name value) value); }