{ callPackage }: with builtins; rec { listDirectory = action: dir: let list = readDir dir; in listToAttrs (map (name: { name = replaceStrings [".nix"] [""] name; value = action (dir + ("/" + name)); }) (attrNames list)); pathDirectory = listDirectory (x: x); importDirectory = listDirectory import; callDirectory = listDirectory (p: callPackage p {}); }