diff --git a/flake.lock b/flake.lock
index 1f4c50c..af8f13e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -95,11 +95,11 @@
         "nixpkgs": "nixpkgs_4"
       },
       "locked": {
-        "lastModified": 1743783972,
-        "narHash": "sha256-5wPsNCnWmeLpLxavsftA9L7tnYgtlexV7FwLegxtpy4=",
+        "lastModified": 1744298740,
+        "narHash": "sha256-m5RnbHQqYQhQA4ntohXlJsiIsOAKx+pz/vOC+E+FmHg=",
         "owner": "cachix",
         "repo": "devenv",
-        "rev": "2f53e2f867e0c2ba18b880e66169366e5f8ca554",
+        "rev": "028c6a38fb0284c96691176bd31626bf36981129",
         "type": "github"
       },
       "original": {
@@ -350,11 +350,11 @@
     },
     "hardware": {
       "locked": {
-        "lastModified": 1743420942,
-        "narHash": "sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo=",
+        "lastModified": 1744366945,
+        "narHash": "sha256-OuLhysErPHl53BBifhesrRumJNhrlSgQDfYOTXfgIMg=",
         "owner": "NixOS",
         "repo": "nixos-hardware",
-        "rev": "de6fc5551121c59c01e2a3d45b277a6d05077bc4",
+        "rev": "1fe3cc2bc5d2dc9c81cb4e63d2f67c1543340df1",
         "type": "github"
       },
       "original": {
@@ -504,11 +504,11 @@
         "rust-overlay": "rust-overlay_2"
       },
       "locked": {
-        "lastModified": 1744137608,
-        "narHash": "sha256-KEuKL7lM2ZqKzvaGIptVDAce29CAR4ZSgWtFD3PnpB0=",
+        "lastModified": 1744369853,
+        "narHash": "sha256-rVW9J8gMUFj8PsFV2TgNiNuJd8+O+FUizEQgl1ooQFY=",
         "owner": "lilyinstarlight",
         "repo": "nixos-cosmic",
-        "rev": "d20b15f629985fe6900925bef462f947e4a75b2f",
+        "rev": "c2b4dd2f85d558c7147bc06c6417f87aa1775ad5",
         "type": "github"
       },
       "original": {
@@ -581,11 +581,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1743975612,
-        "narHash": "sha256-o4FjFOUmjSRMK7dn0TFdAT0RRWUWD+WsspPHa+qEQT8=",
+        "lastModified": 1744168086,
+        "narHash": "sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "a880f49904d68b5e53338d1e8c7bf80f59903928",
+        "rev": "60e405b241edb6f0573f3d9f944617fe33ac4a73",
         "type": "github"
       },
       "original": {
@@ -677,11 +677,11 @@
     },
     "nixpkgs_7": {
       "locked": {
-        "lastModified": 1743964447,
-        "narHash": "sha256-nEo1t3Q0F+0jQ36HJfbJtiRU4OI+/0jX/iITURKe3EE=",
+        "lastModified": 1744098102,
+        "narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "063dece00c5a77e4a0ea24e5e5a5bd75232806f8",
+        "rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7",
         "type": "github"
       },
       "original": {
@@ -802,11 +802,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744079607,
-        "narHash": "sha256-5cog6Qd6w/bINdLO5mOysAHOHey8PwFXk4IWo+y+Czg=",
+        "lastModified": 1744338850,
+        "narHash": "sha256-pwMIVmsb8fjjT92n5XFDqCsplcX70qVMMT7NulumPXs=",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "f6b62cc99c25e79a1c17e9fca91dc6b6faebec6c",
+        "rev": "5e64aecc018e6f775572609e7d7485fdba6985a7",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 3ff0627..357ce0e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -70,10 +70,16 @@
           ];
         };
 
-        packages = lib.packagesFromDirectoryRecursive {
-          inherit (pkgs) callPackage;
-          directory = ./packages;
-        };
+        packages =
+          lib.packagesFromDirectoryRecursive {
+            inherit (pkgs) callPackage;
+            directory = ./packages;
+          }
+          // {
+            symfony-cli = pkgs.callPackage ./symfony-cli/package.nix {
+              fossarPhps = inputs'.phps.packages;
+            };
+          };
       };
     };
 }
diff --git a/symfony-cli/package.nix b/symfony-cli/package.nix
new file mode 100644
index 0000000..4f2101c
--- /dev/null
+++ b/symfony-cli/package.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  fossarPhps,
+  symlinkJoin,
+  symfony-cli,
+  makeWrapper,
+}: let
+  supportedPhps = [
+    "php72"
+    "php73"
+    "php74"
+    "php80"
+    "php81"
+    "php82"
+    "php83"
+    "php84"
+  ];
+
+  extraConfig = ''
+    memory_limit = -1
+
+    xdebug.mode = develop,coverage,gcstats,profile,debug,trace
+    xdebug.discover_client_host = 1
+    xdebug.client_host = localhost
+  '';
+
+  # Wrap all PHP versions with the extensions I need and bundle composer
+  phps = lib.genAttrs supportedPhps (
+    phpName: let
+      phpBase = fossarPhps.${phpName};
+      phpWithEnv = phpBase.buildEnv {
+        extensions = {
+          enabled,
+          all,
+        }:
+          enabled
+          ++ [all.xdebug]
+          ++ (
+            if (lib.versionAtLeast phpBase.version "8")
+            then [all.amqp]
+            else []
+          );
+        inherit extraConfig;
+      };
+      phpWithTools = symlinkJoin {
+        inherit (phpWithEnv) name version meta passthru;
+        paths = [
+          phpWithEnv
+          phpWithEnv.packages.composer
+        ];
+      };
+    in
+      phpWithTools
+  );
+
+  package = symfony-cli;
+in
+  # Tell Symfony's CLI where it can access the different PHP versions
+  symlinkJoin {
+    inherit (package) pname version meta;
+
+    paths = [package];
+
+    buildInputs = [makeWrapper];
+
+    postBuild = ''
+      wrapProgram $out/bin/${package.meta.mainProgram} \
+        --suffix PATH : ${lib.makeBinPath (
+        builtins.attrValues phps
+      )}
+    '';
+  }