{lib}: { root, exclude ? [], }: with builtins; with lib; # http://chriswarbo.net/projects/nixos/useful_hacks.html let basename = removeSuffix ".nix"; isMatch = name: type: (hasSuffix ".nix" name || type == "directory") && ! elem name (map basename exclude); entry = name: _: { name = basename name; value = import (root + "/${name}"); }; in mapAttrs' entry (filterAttrs isMatch (readDir root))