diff --git a/flake.lock b/flake.lock
index 799a4efb..c73393c5 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1584,6 +1584,26 @@
         "type": "github"
       }
     },
+    "quickshell": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1743928855,
+        "narHash": "sha256-6skFnvfLbslUOieffviT+XNH/M1HOQDQJhJLsG0UM2o=",
+        "ref": "refs/heads/master",
+        "rev": "ed528268e0c0a2f6be2b5aca7089ebc3e214d446",
+        "revCount": 505,
+        "type": "git",
+        "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
+      }
+    },
     "root": {
       "inputs": {
         "Kapowarr-src": "Kapowarr-src",
@@ -1642,6 +1662,7 @@
         "pokemon-colorscripts-src": "pokemon-colorscripts-src",
         "pr-tracker": "pr-tracker",
         "pre-commit-hooks": "pre-commit-hooks",
+        "quickshell": "quickshell",
         "secrets": "secrets",
         "sioyek-theme-src": "sioyek-theme-src",
         "smartinspect-src": "smartinspect-src",
diff --git a/flake.nix b/flake.nix
index 85ab87aa..1396f46a 100644
--- a/flake.nix
+++ b/flake.nix
@@ -416,6 +416,11 @@
       repo = "git-hooks.nix";
       type = "github";
     };
+    quickshell = {
+      inputs.nixpkgs.follows = "nixpkgs";
+      type = "git";
+      url = "https://git.outfoxxed.me/outfoxxed/quickshell";
+    };
     secrets = {
       inputs = {
         nixpkgs.follows = "nixpkgs";
diff --git a/inputs/default.nix b/inputs/default.nix
index 79103532..81febbd7 100644
--- a/inputs/default.nix
+++ b/inputs/default.nix
@@ -194,7 +194,12 @@ let
       };
     };
 
-    agsInputs = {
+    shellInputs = {
+      quickshell = mkInput {
+        type = "git";
+        url = "https://git.outfoxxed.me/outfoxxed/quickshell";
+      };
+
       astal = mkInput {
         # owner = "Aylur";
         repo = "astal";
@@ -434,7 +439,7 @@ in
   // nosInputs
   // bbsteamieInputs
   // desktopInputs.hyprlandInputs
-  // desktopInputs.agsInputs
+  // desktopInputs.shellInputs
   // (listToAttrs (map (x: {
       name = x.name or "${x.repo}-src";
       value = mkSrc (removeAttrs x ["name"]);
diff --git a/lib/flake/default.nix b/lib/flake/default.nix
index d11bf381..04f0072c 100644
--- a/lib/flake/default.nix
+++ b/lib/flake/default.nix
@@ -1,6 +1,13 @@
 inputs: let
-  inherit (builtins) removeAttrs;
+  inherit (builtins) functionArgs mapAttrs removeAttrs;
 in rec {
+  # This is for packages from flakes that don't offer overlays
+  overrideAll = pkgs: pkg: extraArgs: let
+    pkgFile = pkgs.lib.head (pkgs.lib.splitString [":"] pkg.meta.position);
+    args = functionArgs (import pkgFile);
+  in
+    pkg.override ((mapAttrs (n: v: pkgs.${n} or v) args) // extraArgs);
+
   # Import pkgs from a nixpkgs instance
   mkPkgs = {
     system,
@@ -20,6 +27,7 @@ in rec {
           inputs.self.overlays.appsPackages
           inputs.self.overlays.selfPackages
           inputs.self.overlays.scopedPackages
+          inputs.self.overlays.forced
         ]
         ++ (cfg.overlays or []));
       config =
diff --git a/overlays/README.md b/overlays/README.md
index 1720a73d..3879794e 100644
--- a/overlays/README.md
+++ b/overlays/README.md
@@ -7,6 +7,7 @@ This directory contains every overlay exposed by this flake.
 | Name | Description |
 | ---- | ----------- |
 | `appsPackages` | This overlay puts every derivations for apps exposed by this flake under pkgs.appsPackages. |
+| `forced` | Overrides packages from third party flakes that don't offer overlays. |
 | `misc-fixes` | Fixes build failures, missing meta attributes, evaluation failures, etc. of the current `nixpkgs` revision of this flake. |
 | `nix-version` | Overrides the nix package for everything so I don't need multiple versions. |
 | `scopedPackages` | This overlay puts every package scopes exposed by this flake under pkgs.scopedPackages. |
diff --git a/overlays/default.nix b/overlays/default.nix
index fe6307c3..8db84dce 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -27,6 +27,13 @@ in {
       of the current `nixpkgs` revision of this flake.
     '';
 
+  forced =
+    overlay
+    (import ./forced self)
+    ''
+      Overrides packages from third party flakes that don't offer overlays.
+    '';
+
   nix-version =
     overlay
     (import ./nix-version self)
diff --git a/overlays/forced/default.nix b/overlays/forced/default.nix
new file mode 100644
index 00000000..4dc76ad4
--- /dev/null
+++ b/overlays/forced/default.nix
@@ -0,0 +1,15 @@
+self: final: prev: let
+  inherit (self.inputs) quickshell;
+
+  overrideAll = self.lib.overrideAll final;
+in {
+  quickshell = overrideAll quickshell.packages.${final.system}.default {
+    gitRev = quickshell.rev;
+
+    buildStdenv = final.clangStdenv;
+
+    debug = false;
+    withI3 = false;
+    withX11 = false;
+  };
+}
diff --git a/overlays/nix-version/default.nix b/overlays/nix-version/default.nix
index 6ec8bc03..3f802594 100644
--- a/overlays/nix-version/default.nix
+++ b/overlays/nix-version/default.nix
@@ -1,6 +1,6 @@
 self: {nix ? null}: final: prev: let
-  inherit (builtins) functionArgs mapAttrs replaceStrings;
-  inherit (final.lib) generateSplicesForMkScope head splitString versions;
+  inherit (builtins) mapAttrs replaceStrings;
+  inherit (final.lib) generateSplicesForMkScope versions;
   inherit (self.inputs) nix-eval-jobs nix-fast-build;
 
   nullCheck = n: v:
@@ -8,12 +8,7 @@ self: {nix ? null}: final: prev: let
     then prev.${n}
     else v;
 
-  # This is for packages from flakes that don't offer overlays
-  overrideAll = pkg: extraArgs: let
-    pkgFile = head (splitString [":"] pkg.meta.position);
-    args = functionArgs (import pkgFile);
-  in
-    pkg.override (mapAttrs (n: v: final.${n} or v) (args // extraArgs));
+  overrideAll = self.lib.overrideAll final;
 in
   mapAttrs nullCheck {
     inherit nix;