diff --git a/horizon.dhall b/horizon.dhall
index fe837535e41106feae06a42ceb5ca4721db57244..e8aa0524eaa7d462086bed867a304196f3fa779e 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -68,7 +68,7 @@ let packages =
         , plutus-core = callCHaP "plutus-core" "1.40.0.0"
         , plutus-ledger-api = callCHaP "plutus-ledger-api" "1.40.0.0"
         , plutus-tx = callCHaP "plutus-tx" "1.40.0.0"
-        , plutus-tx-plugin = callCHaP "plutus-tx-plugin" "1.40.0.0"
+        , plutus-tx-plugin = H.callGit "https://github.com/locallycompact/plutus" "275236a13d63578280d742923a13813ee089c40d" (Some "plutus-tx-plugin/")
         , prettyprinter-configurable =
             callCHaP "prettyprinter-configurable" "1.36.0.0"
         , quickcheck-transformer =
diff --git a/horizon.lock b/horizon.lock
index 9104922fdf9e5431d727d6a3f3a1a5933dad0bc4..5a08dce8bc3928a7b9167d997fc48fe96ee83494 100644
--- a/horizon.lock
+++ b/horizon.lock
@@ -188,7 +188,7 @@
   }
 , { mapKey = "plutus-tx-plugin"
   , mapValue =
-      "beec11b5316273a2a6b8508944ce7c865db52522021627f51e2836dba6bcefdb"
+      "3a70b16d4b892e04118de5a3385d268303aca17cf89d7c3f2f4620c1620a77b2"
   }
 , { mapKey = "prettyprinter-configurable"
   , mapValue =
diff --git a/pkgs/plutus-tx-plugin.nix b/pkgs/plutus-tx-plugin.nix
index 5cbcf83175af8a27c204e4f7056b155da2786b82..e36fd835d84aa441f4d440e41a87ae072015152e 100644
--- a/pkgs/plutus-tx-plugin.nix
+++ b/pkgs/plutus-tx-plugin.nix
@@ -1,14 +1,37 @@
-{ mkDerivation, fetchzip, lib }:
+{ mkDerivation, PyF, array, base, base16-bytestring, bytestring
+, containers, deepseq, either, extra, fetchgit, filepath, flat, ghc
+, hedgehog, lens, lib, mtl, optparse-applicative, plutus-core
+, plutus-tx, plutus-tx-test-util, prettyprinter, serialise, tagged
+, tasty, tasty-golden, tasty-hedgehog, tasty-hunit
+, template-haskell, text, these, uniplate
+}:
 mkDerivation {
   pname = "plutus-tx-plugin";
   version = "1.40.0.0";
-  src = fetchzip {
-    url = "https://chap.intersectmbo.org/package/plutus-tx-plugin-1.40.0.0.tar.gz";
-    sha256 = "19wkq42aa4c8l30l04ngkig1vmdpfwqja15s4k65grndbfzilvm6";
+  src = fetchgit {
+    url = "https://github.com/locallycompact/plutus";
+    sha256 = "1b7qvqbdmjc36sl5fw0rzx1f488ks0gcd3zmwsfj543mwvhmwsjk";
+    rev = "275236a13d63578280d742923a13813ee089c40d";
+    fetchSubmodules = true;
   };
+  postUnpack = "sourceRoot+=/plutus-tx-plugin/; echo source root reset to $sourceRoot";
   isLibrary = true;
   isExecutable = true;
   enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    array base base16-bytestring bytestring containers either extra
+    flat ghc lens mtl plutus-core plutus-tx prettyprinter
+    template-haskell text uniplate
+  ];
+  executableHaskellDepends = [
+    base containers lens optparse-applicative prettyprinter PyF text
+  ];
+  testHaskellDepends = [
+    base base16-bytestring bytestring containers deepseq filepath flat
+    hedgehog lens mtl plutus-core plutus-tx plutus-tx-test-util
+    serialise tagged tasty tasty-golden tasty-hedgehog tasty-hunit
+    template-haskell text these
+  ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
   doHaddock = true;