23 lines
876 B
Nix
23 lines
876 B
Nix
{lib}: let
|
|
inherit (lib) recursiveUpdate;
|
|
|
|
# the below function is by far the most cursed I've put in my configuration
|
|
# if you are, for whatever reason, copying my configuration - PLEASE omit this
|
|
# and do your imports manually
|
|
# credits go to @nrabulinski
|
|
import' = path: let
|
|
func = import path;
|
|
args = lib.functionArgs func;
|
|
requiredArgs = lib.filterAttrs (_: val: !val) args;
|
|
defaultArgs = (lib.mapAttrs (_: _: null) requiredArgs) // {inherit lib;};
|
|
functor = {__functor = _: attrs: func (defaultArgs // attrs);};
|
|
in
|
|
(func defaultArgs) // functor;
|
|
|
|
# recursively merges two attribute sets
|
|
# it is used to convert the importedLibs list into an attrset
|
|
# there is probably a better way to do it, more cleanly - but I wouldn't know
|
|
mergeRecursively = lhs: rhs: recursiveUpdate lhs rhs;
|
|
in {
|
|
inherit import' mergeRecursively;
|
|
}
|