diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,82 @@
+This file was generated by `cargo-cabal`, its goal is to define few hooks to
+call `cargo` on the fly and link correctly the generated library.
+
+While it's an acceptable hack as this project is currently a prototype, this
+should be removed before `cargo-cabal` stable release.
+
+> import Data.Maybe
+> import qualified Distribution.PackageDescription as PD
+> import Distribution.Simple
+>   ( Args,
+>     UserHooks (confHook, preConf),
+>     defaultMainWithHooks,
+>     simpleUserHooks,
+>   )
+> import Distribution.Simple.LocalBuildInfo
+>   ( LocalBuildInfo (localPkgDescr),
+>   )
+> import Distribution.Simple.Setup
+>   ( BuildFlags (buildVerbosity),
+>     ConfigFlags (configVerbosity),
+>     fromFlag,
+>   )
+> import Distribution.Simple.UserHooks
+>   ( UserHooks (buildHook, confHook),
+>   )
+> import Distribution.Simple.Utils (rawSystemExit)
+> import System.Directory (getCurrentDirectory)
+>
+> main :: IO ()
+> main =
+>   defaultMainWithHooks
+>     simpleUserHooks
+>       { confHook = rustConfHook
+>       , buildHook = rustBuildHook
+>       }
+
+This hook could be remove if at some point, likely if this issue is resolved
+https://github.com/haskell/cabal/issues/2641
+
+> rustConfHook ::
+>   (PD.GenericPackageDescription, PD.HookedBuildInfo) ->
+>   ConfigFlags ->
+>   IO LocalBuildInfo
+> rustConfHook (description, buildInfo) flags = do
+>   localBuildInfo <- confHook simpleUserHooks (description, buildInfo) flags
+>   let packageDescription = localPkgDescr localBuildInfo
+>       library = fromJust $ PD.library packageDescription
+>       libraryBuildInfo = PD.libBuildInfo library
+>   dir <- getCurrentDirectory
+>   return localBuildInfo
+>     { localPkgDescr = packageDescription
+>       { PD.library = Just $ library
+>         { PD.libBuildInfo = libraryBuildInfo
+>           { PD.extraLibDirs = (dir ++ "/target/release") :
+>                               (dir ++ "/target/debug") :
+>             PD.extraLibDirs libraryBuildInfo
+>     } } } }
+
+It would be nice to remove this hook ot some point, e.g., if this RFC is merged
+in Cabal https://github.com/haskell/cabal/issues/7906
+
+> rustBuildHook ::
+>   PD.PackageDescription ->
+>   LocalBuildInfo ->
+>   UserHooks ->
+>   BuildFlags ->
+>   IO ()
+> rustBuildHook description localBuildInfo hooks flags = do
+>   putStrLn "******************************************************************"
+>   putStrLn "Call `cargo build --release` to build a dependency written in Rust"
+>   -- FIXME: add `--target $TARGET` flag to support cross-compiling to $TARGET
+>   -- rawSystemExit (fromFlag $ buildVerbosity flags) "cargo" ["build","--release"]
+>   rawSystemExit (fromFlag $ buildVerbosity flags) "bash" ["./scripts/download-or-build.sh"]
+>   putStrLn "... `rustc` compilation seems to succeed 🦀! Back to Cabal build:"
+>   putStrLn "******************************************************************"
+>   putStrLn "Back to Cabal build"
+>   buildHook simpleUserHooks description localBuildInfo hooks flags
+
+This handy automation (particularly useful when you want to quickly prototype
+without having to spawn manually `cargo` commands) is disabled by default.
+Feel free to re-enable it while debugging your library, but I discourage you
+strongly to publish anything on Hackage that contains this hook!
diff --git a/extism.cabal b/extism.cabal
--- a/extism.cabal
+++ b/extism.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               extism
-version:            1.1.0.0
+version:            1.2.0.0
 license:            BSD-3-Clause
 maintainer:         oss@extism.org
 author:             Extism authors
@@ -10,14 +10,23 @@
 category:           Plugins, WebAssembly
 extra-doc-files: cabal.project README.md CHANGELOG.md
 
+build-type:         Custom
+custom-setup
+    setup-depends:
+        Cabal >= 3.0 && < 4,
+        base  >= 4.16.1 && < 5,
+        directory >= 1.3 && < 2,
+        process >=1.2.1.0 && < 2
+
 library
     exposed-modules:    Extism, Extism.HostFunction, Extism.Encoding
     reexported-modules: Extism.Manifest, Extism.JSON
     hs-source-dirs:     src
     other-modules:      Extism.Bindings
     default-language:   Haskell2010
-    extra-libraries:    extism
-    extra-lib-dirs:     /usr/local/lib
+    extra-bundled-libraries: extism_hs
+    -- extra-libraries:    extism
+    -- extra-lib-dirs:     /usr/local/lib
     build-depends:
         base              >= 4.16.1 && < 5,
         bytestring        >= 0.11.3 && <= 0.12,
