Use inputs in overlays
diff --git a/overlays/default.nix b/overlays/default.nix
index 13cb83c..0c66a9f 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -1,4 +1,4 @@
-lib:
+lib: specialArgs:
 let
   utils = import ../utils lib;
 in
@@ -8,4 +8,8 @@
   (lib.traceValFn (overlays: "Applying overlays ${builtins.toJSON (map (overlay: overlay.name) overlays)}"))
   (builtins.map ({ path, ... }: lib.traceVal path))
   (map (path: import path))
+  (map (overlay:
+    if (builtins.functionArgs overlay) != { }
+    then overlay (builtins.intersectAttrs (builtins.functionArgs overlay) specialArgs)
+    else overlay))
 ]
diff --git a/overlays/packages.nix b/overlays/packages.nix
index 44fd08e..d238dd7 100644
--- a/overlays/packages.nix
+++ b/overlays/packages.nix
@@ -1,4 +1,4 @@
-final: prev:
+{ fenix, ...}: final: prev:
 let
   lib = prev.lib;
   utils = import ../utils lib;
@@ -18,7 +18,13 @@
     value = final.callPackage path (
       builtins.intersectAttrs
         (builtins.functionArgs (import path))
-        (lib.fold lib.mergeAttrs { } extraAttrSets)
+        (lib.fold lib.mergeAttrs
+          {
+            packageSets = {
+              fenix = fenix.packages.${prev.system};
+            };
+          }
+          extraAttrSets)
     );
   }))
   builtins.listToAttrs