diff --git a/flake.nix b/flake.nix
index b527b27..701ba47 100644
--- a/flake.nix
+++ b/flake.nix
@@ -20,9 +20,12 @@
     inherit (inputs) self nixpkgs flake-utils;
   in
     flake-utils.lib.eachDefaultSystem (system: let
-      pkgs = nixpkgs.legacyPackages.${system};
+      pkgs = import nixpkgs {
+        inherit system;
+        overlays = import ./overlays nixpkgs.lib;
+      };
 
-      utils = import ./utils/utils.nix nixpkgs.lib;
+      utils = import ./utils nixpkgs.lib;
 
       username = "minion";
     in {
@@ -33,13 +36,15 @@
           modules = [
             (nixpkgs.lib.pipe ./modules [
               utils.nixFilesIn
-              utils.importAll
               (utils.interpretNonstandardModule (args:
                 args
                 // {
-                  home = args.config.home-manager."${username}";
+                  home = args.config.home-manager.users.${username};
                 }))
             ])
+            {
+              minion = import ./config.nix;
+            }
           ];
 
           specialArgs = inputs // {inherit username pkgs;};
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)))
