diff --git a/ChangeLog b/ChangeLog
new file mode 100644
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,6 @@
+-*-org-*-
+
+* 0.1.4
+** Support using a Unix socket
+
+   Contributed by Daniel Patterson <dbp@riseup.net>
diff --git a/snaplet-redis.cabal b/snaplet-redis.cabal
--- a/snaplet-redis.cabal
+++ b/snaplet-redis.cabal
@@ -1,5 +1,5 @@
 Name:                snaplet-redis
-Version:             0.1.3.3
+Version:             0.1.4
 Synopsis:            Redis support for Snap Framework
 Description:         This package provides a snaplet which exposes
                      interface to Redis in-memory key-value storage as
@@ -17,6 +17,7 @@
 Build-type:          Simple
 Cabal-version:       >=1.6
 Tested-with:         GHC == 7.6.3, GHC == 7.8.3
+Extra-source-files:  ChangeLog
 
 source-repository head
   type:     git
@@ -36,4 +37,5 @@
     mtl                 >= 2 && < 3,
     network             >= 2.4 && < 2.6,
     snap                >= 0.11 && < 0.14,
-    transformers        >= 0.3 && < 0.5
+    transformers        >= 0.3 && < 0.5,
+    text                >= 0.9 && < 1.2
diff --git a/src/Snap/Snaplet/RedisDB.hs b/src/Snap/Snaplet/RedisDB.hs
--- a/src/Snap/Snaplet/RedisDB.hs
+++ b/src/Snap/Snaplet/RedisDB.hs
@@ -20,10 +20,14 @@
 import Control.Lens
 import Control.Monad.State
 
-import Database.Redis
+import Database.Redis hiding (String)
+import Network (PortID(..))
 import Network.Socket (PortNumber(..))
 import Data.Configurator as C
+import Data.Configurator.Types (Configured(..), Value(..))
 import Data.Maybe
+import Data.Ratio (numerator, denominator)
+import qualified Data.Text as T
 
 import Snap.Snaplet
 
@@ -37,6 +41,14 @@
 makeLenses ''RedisDB
 
 ------------------------------------------------------------------------------
+-- | Instance to allow port to be either a path to a unix socket or a
+-- port number.
+instance Configured PortID where
+  convert (Number r) | denominator r == 1 = Just $ PortNumber $ PortNum $ fromInteger $ numerator r
+  convert (String s) = Just $ UnixSocket $ T.unpack s
+  convert _ = Nothing
+
+------------------------------------------------------------------------------
 -- | A lens to retrieve the connection to Redis from the 'RedisDB'
 -- wrapper.
 redisConnection :: Simple Lens RedisDB Connection
@@ -71,6 +83,20 @@
 -- >     max_idle_time = 0.5
 -- > }
 --
+-- Alternately, you can configure it to connect via a socket, for example:
+--
+-- > redis {
+-- >     port = "/var/run/redis/redis.sock"
+-- > }
+--
+-- This corresponds to setting:
+--
+-- > connectPort = UnixSocket "/var/run/redis/redis.sock"
+--
+-- in `ConnectInfo`. In this case, the host setting, if anything, is
+-- ignored.
+--
+--
 -- > appInit :: SnapletInit MyApp MyApp
 -- > appInit = makeSnaplet "app" "App with Redis child snaplet" Nothing $
 -- >           do
@@ -89,8 +115,7 @@
 
         let def = defaultConnectInfo
         return $ def { connectHost = fromMaybe (connectHost def) cHost
-                     , connectPort =
-                       maybe (connectPort def) (PortNumber . PortNum) cPort
+                     , connectPort = fromMaybe (connectPort def) cPort
                      , connectAuth = cAuth
                      , connectMaxConnections =
                        fromMaybe (connectMaxConnections def) cCons
