diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,18 @@
+import Distribution.PackageDescription (PackageDescription(..))
 import Distribution.Simple
-main = defaultMain
+import Distribution.Simple.LocalBuildInfo
+       (InstallDirs(..), LocalBuildInfo(..), absoluteInstallDirs)
+import Distribution.Simple.Setup
+import Distribution.Simple.Utils (rawSystemExit)
+
+main = defaultMainWithHooks simpleUserHooks {copyHook = copyLib}
+
+copyLib ::
+     PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()
+copyLib pkg_descr lbi _ flags = do
+  let libPref =
+        libdir . absoluteInstallDirs pkg_descr lbi . fromFlag . copyDest $ flags
+  rawSystemExit
+    (fromFlag $ copyVerbosity flags)
+    "cp"
+    ["notifier/target/release/libnotifier.dylib", libPref]
diff --git a/hs-rs-notify.cabal b/hs-rs-notify.cabal
--- a/hs-rs-notify.cabal
+++ b/hs-rs-notify.cabal
@@ -1,5 +1,5 @@
 name:                hs-rs-notify
-version:             0.1.0.14
+version:             0.1.0.15
 synopsis:            Experimental! Wraps this awesome rust library so you can use it in haskell. https://docs.rs/crate/notify
 -- description:
 homepage:            https://github.com/NoRedInk/hs-rs-notify#readme
@@ -26,8 +26,8 @@
                      , process == 1.4.3.0
   default-language:    Haskell2010
   default-extensions:  OverloadedStrings, NoImplicitPrelude, NamedFieldPuns
-  extra-libraries:     notifier, pthread
   include-dirs:        notifier/target/release
+  extra-libraries:     notifier, pthread
 
 executable notify
   hs-source-dirs:      app
@@ -38,6 +38,7 @@
                      , protolude >= 0.1.6 && < 0.2
   default-language:    Haskell2010
   default-extensions:  OverloadedStrings, NoImplicitPrelude
+  extra-libraries:     notifier, pthread
 
 test-suite hs-rs-notify-test
   type:                exitcode-stdio-1.0
