lib: set as fixed point

This commit is contained in:
Gabriel Arazas 2024-02-25 20:02:41 +08:00
parent 8377dba214
commit 29b7b302e1
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC

View File

@ -1,21 +1,42 @@
# All of the custom functions suitable for all environments.
# The entrypoint for our custom library set.
{ lib }:
rec {
/* Count the attributes with the given predicate.
lib.makeExtensible
(self:
rec {
/* Count the attributes with the given predicate.
Examples:
countAttrs (name: value: value) { d = true; f = true; a = false; }
=> 2
Examples:
countAttrs (name: value: value) { d = true; f = true; a = false; }
=> 2
countAttrs (name: value: value.enable) { d = { enable = true; }; f = { enable = false; package = [ ]; }; }
=> 1
*/
countAttrs = pred: attrs:
lib.count (attr: pred attr.name attr.value)
(lib.mapAttrsToList lib.nameValuePair attrs);
countAttrs (name: value: value.enable) { d = { enable = true; }; f = { enable = false; package = [ ]; }; }
=> 1
*/
countAttrs = pred: attrs:
lib.count (attr: pred attr.name attr.value)
(lib.mapAttrsToList lib.nameValuePair attrs);
getConfig = type: config: ../configs/${type}/${config};
/* Returns the file path of the given config of the given environment.
getUser = type: user: ../configs/${type}/_users/${user};
}
Type: getConfig :: String -> String -> Path
Example:
getConfig "home-manager" "foo-dogsquared"
=> ../configs/home-manager/foo-dogsquared
*/
getConfig = type: config: ../configs/${type}/${config};
/* Returns the file path of the given user subpart of the given
environment. Only certain environments such as NixOS have this type of
setup.
Type: getConfig :: String -> String -> Path
Example:
getUser "nixos" "foo-dogsquared"
=> ../configs/nixos/_users/foo-dogsquared
*/
getUser = type: user: ../configs/${type}/_users/${user};
})