diff --git a/utils/utils.nix b/utils/default.nix
similarity index 100%
rename from utils/utils.nix
rename to utils/default.nix
diff --git a/utils/dirsIn.nix b/utils/dirsIn.nix
new file mode 100644
index 0000000..7ef9d6a
--- /dev/null
+++ b/utils/dirsIn.nix
@@ -0,0 +1,2 @@
+# Modified from http://chriswarbo.net/projects/nixos/useful_hacks.html
+lib: dir: map (name: dir + "/${name}") (lib.attrNames (lib.filterAttrs (_: type: type == "directory") (builtins.readDir dir)))
diff --git a/utils/dirsInWithName.nix b/utils/dirsInWithName.nix
new file mode 100644
index 0000000..3da4017
--- /dev/null
+++ b/utils/dirsInWithName.nix
@@ -0,0 +1,6 @@
+# Modified from http://chriswarbo.net/projects/nixos/useful_hacks.html
+lib: dir:
+map (name: {
+  inherit name;
+  path = dir + "/${name}";
+}) (lib.attrNames (lib.filterAttrs (_: type: type == "directory") (builtins.readDir dir)))
diff --git a/utils/interpretNonstandardModule.nix b/utils/interpretNonstandardModule.nix
index 6d8de43..405c615 100644
--- a/utils/interpretNonstandardModule.nix
+++ b/utils/interpretNonstandardModule.nix
@@ -15,29 +15,87 @@
         importedModule
         (transformArgs args)
       else importedModule;
-  in
-    lib.warnIfNot ((lib.pipe resolvedModule [
-        builtins.attrNames
-        (lib.subtractLists ["home" "config" "imports" "options"])
-      ])
-      == [])
-    "Module ${
+    moduleName =
       if builtins.typeOf module == "lambda"
       then "<AnonFunction>"
-      else builtins.toString module
-    } had attribute names ${builtins.toJSON (builtins.attrNames resolvedModule)} but only home, config, imports and options are resolved" {
-      config = lib.recursiveUpdate (resolvedModule.config or {}) {
-        home-manager.users."${args.username}".imports =
-          (resolvedModule.config.home-manager.users."${args.username}".imports or [])
-          ++ [resolvedModule.home or {}];
-      };
-      imports = resolvedModule.imports or [];
-      options = resolvedModule.options or {};
-    };
+      else if builtins.typeOf module == "path"
+      then builtins.toString module
+      else builtins.toJSON module;
+  in
+    lib.warnIfNot
+    ((lib.pipe resolvedModule [
+        builtins.attrNames
+        (lib.subtractLists ["home" "config" "imports" "options" "traces"])
+      ])
+      == [])
+    "Module ${moduleName} had attribute names ${builtins.toJSON (builtins.attrNames resolvedModule)} but only home, config, imports and options are resolved"
+    [
+      {
+        config = lib.recursiveUpdate (resolvedModule.config or {}) {
+          home-manager.users."${args.username}".imports =
+            (resolvedModule.config.home-manager.users."${args.username}".imports or [])
+            ++ [resolvedModule.home or {}];
+        };
+        imports = resolvedModule.imports or [];
+        options = resolvedModule.options or {};
+      }
+    ]
+    ++ (builtins.map (trace: let
+      splitTrace = lib.splitString "." trace;
+      traceHead = builtins.head splitTrace;
+      traceTail = builtins.tail splitTrace;
+      resolvedTrace =
+        (
+          if traceHead == "home"
+          then ["home-manager" "users" args.username]
+          else lib.errorIfNot (traceHead == "config") []
+        )
+        ++ traceTail;
+    in
+      {config, ...}: (builtins.seq (
+        lib.pipe resolvedTrace [
+          (lib.foldl ({
+            value,
+            error,
+          }: key:
+            if builtins.hasAttr key value
+            then {
+              value = value.${key};
+              inherit error;
+            }
+            else {
+              value = {};
+              error = true;
+            }) {
+            value = {};
+            error = false;
+          })
+          (data: lib.warnIf data.error "trace@${moduleName}/${trace} is invalid; the key does not exist" data)
+          ({
+            value,
+            error,
+          }: {
+            value = builtins.toJSON value;
+            inherit error;
+          })
+          ({
+            value,
+            error,
+          }: {
+            value = "trace@${moduleName}/${trace}: ${value}";
+            inherit error;
+          })
+          ({
+            value,
+            error,
+          }:
+            lib.traceIf (!error) value null)
+        ]
+      ) {})) (resolvedModule.traces or []));
 in {
   imports = (
     if builtins.typeOf modules == "list"
-    then builtins.map resolver modules
-    else [(resolver modules)]
+    then builtins.concatLists (builtins.map resolver modules)
+    else resolver modules
   );
 }
diff --git a/utils/nixFilesIn.nix b/utils/nixFilesIn.nix
index b5340bd..e85fa1c 100644
--- a/utils/nixFilesIn.nix
+++ b/utils/nixFilesIn.nix
@@ -1,2 +1,2 @@
 # Modified from http://chriswarbo.net/projects/nixos/useful_hacks.html
-lib: dir: map (name: dir + "/${name}") (lib.attrNames (lib.filterAttrs (name: _: lib.hasSuffix ".nix" name) (builtins.readDir dir)))
+lib: dir: map (name: dir + "/${name}") (lib.attrNames (lib.filterAttrs (name: type: type == "regular" && lib.hasSuffix ".nix" name) (builtins.readDir dir)))
diff --git a/utils/nixFilesInWithName.nix b/utils/nixFilesInWithName.nix
index 41bd157..7c56abc 100644
--- a/utils/nixFilesInWithName.nix
+++ b/utils/nixFilesInWithName.nix
@@ -3,4 +3,4 @@
 map (name: {
   inherit name;
   path = dir + "/${name}";
-}) (lib.attrNames (lib.filterAttrs (name: _: lib.hasSuffix ".nix" name) (builtins.readDir dir)))
+}) (lib.attrNames (lib.filterAttrs (name: type: lib.hasSuffix ".nix" name && type == "regular") (builtins.readDir dir)))
