feat(lib): add admin user using custom lib function
This commit is contained in:
parent
da6fa1b9df
commit
5d24a11990
2 changed files with 71 additions and 1 deletions
54
nix/lib/attrsets.nix
Normal file
54
nix/lib/attrsets.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (builtins) attrNames head;
|
||||
inherit (lib.trivial) pipe;
|
||||
inherit (lib.attrsets) filterAttrs;
|
||||
in
|
||||
{
|
||||
flake.lib.attrsets = {
|
||||
/**
|
||||
`firstAttrNameMatching pred set` filters an attribute set `set` based on a predicate `pred`
|
||||
and returns the *first* attribute name that satisfies the predicate.
|
||||
|
||||
# Example
|
||||
|
||||
```nix
|
||||
let
|
||||
mySet = {
|
||||
a = { value = 1; };
|
||||
b = { value = 2; };
|
||||
c = { value = 3; };
|
||||
};
|
||||
|
||||
isGreaterThanOne = name: value: value.value > 1;
|
||||
|
||||
result = firstAttrNameMatching isGreaterThanOne mySet;
|
||||
|
||||
in
|
||||
result
|
||||
# Output: "b"
|
||||
```
|
||||
|
||||
# Type
|
||||
|
||||
```
|
||||
firstAttrNameMatching :: (String -> Any -> Bool) -> AttrSet -> String
|
||||
```
|
||||
|
||||
# Arguments
|
||||
|
||||
pred
|
||||
: A function that takes an attribute name and its value and returns a boolean.
|
||||
|
||||
set
|
||||
: The attribute set to filter.
|
||||
*/
|
||||
firstAttrNameMatching =
|
||||
pred: set:
|
||||
pipe set [
|
||||
(filterAttrs pred)
|
||||
attrNames
|
||||
head
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue