diff --git a/Database/Persist/Cereal.hs b/Database/Persist/Cereal.hs
new file mode 100644
--- /dev/null
+++ b/Database/Persist/Cereal.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Database.Persist.Cereal where
+
+import           Data.Serialize   (Serialize, encode, decode)
+import qualified Data.Text        as T
+import           Database.Persist
+
+toPersistValue :: Serialize a => a -> PersistValue
+toPersistValue = PersistByteString . encode
+
+fromPersistValue :: Serialize a => PersistValue -> Either T.Text a
+fromPersistValue (PersistByteString bs) = either (Left . T.pack) Right (decode bs)
+fromPersistValue _ = Left "Serializable values must be converted from PersistByteString"
diff --git a/Database/Persist/Cereal/Instances.hs b/Database/Persist/Cereal/Instances.hs
new file mode 100644
--- /dev/null
+++ b/Database/Persist/Cereal/Instances.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
+-- | Warning: this module uses @UndecidableInstances@
+module Database.Persist.Cereal.Instances where
+
+import Data.Serialize          (Serialize)
+import Database.Persist
+import Database.Persist.Cereal as C
+
+instance (Serialize a) => PersistField a where
+    toPersistValue = C.toPersistValue
+    fromPersistValue = C.fromPersistValue
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,1 @@
+Public domain
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/persistent-cereal.cabal b/persistent-cereal.cabal
new file mode 100644
--- /dev/null
+++ b/persistent-cereal.cabal
@@ -0,0 +1,20 @@
+name:                persistent-cereal
+version:             0.1.0
+synopsis:            Helper functions for writing Persistent instances
+description:         Minor boilerplate for writing Persistance instances for values that are serializable with the 'cereal' library.
+homepage:            http://hub.darcs.net/co-dan/persistent-cereal
+license:             PublicDomain
+license-file:        LICENSE
+author:              Dan Frumin
+maintainer:          difrumin@gmail.com
+category:            Database
+build-type:          Simple
+cabal-version:       >=1.8
+
+library
+  exposed-modules:     Database.Persist.Cereal,
+                       Database.Persist.Cereal.Instances
+  build-depends:       base       >= 4.5 && <= 4.8,
+                       cereal     >= 0.1 && < 0.4,
+                       persistent >= 1.2.3.2 && < 1.4,
+                       text       >= 0.8
