29 lines
825 B
Nix
29 lines
825 B
Nix
pkgs_or_lib:
|
|
let
|
|
is_pkgs = pkgs_or_lib ? lib;
|
|
lib = if is_pkgs then pkgs_or_lib.lib else pkgs_or_lib;
|
|
utils = lib.pipe ./. [
|
|
(import ./nixFilesInWithName.nix lib)
|
|
(builtins.map (file: rec {
|
|
name = lib.removeSuffix ".nix" file.name;
|
|
func = import file.path;
|
|
accepts_pkgs = builtins.hasAttr "pkgs" (builtins.functionArgs func);
|
|
value =
|
|
if accepts_pkgs then
|
|
func
|
|
(builtins.intersectAttrs (builtins.functionArgs func) {
|
|
inherit
|
|
lib utils; pkgs = pkgs_or_lib;
|
|
})
|
|
else if is_pkgs
|
|
then func lib
|
|
else
|
|
func pkgs_or_lib;
|
|
include = file.name != "default.nix" && (!accepts_pkgs || is_pkgs);
|
|
}))
|
|
(builtins.filter (utility: utility.include))
|
|
builtins.listToAttrs
|
|
];
|
|
in
|
|
utils
|