about summary refs log tree commit diff
path: root/src/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Types.hs')
-rw-r--r--src/Types.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Types.hs b/src/Types.hs
index eed9bf8c1696..135c50f17f4a 100644
--- a/src/Types.hs
+++ b/src/Types.hs
@@ -16,6 +16,7 @@ import Database.SQLite.Simple.ToField
 import GHC.Generics
 import Web.Cookie
 import Servant.API
+import System.Envy (FromEnv, fromEnv, env)
 import Crypto.Random.Types (MonadRandom)
 
 import qualified Crypto.KDF.BCrypt as BC
@@ -26,6 +27,17 @@ import qualified Data.Text.Encoding as TE
 import qualified Data.UUID as UUID
 --------------------------------------------------------------------------------
 
+-- | Top-level application configuration.
+data Config = Config
+  { mailgunAPIKey :: Text
+  , dbFile :: FilePath
+  } deriving (Eq, Show)
+
+instance FromEnv Config where
+  fromEnv _ =
+    Config <$> env "MAILGUN_API_KEY"
+           <*> env "DB_FILE"
+
 -- TODO(wpcarro): Properly handle NULL for columns like profilePicture.
 forNewtype :: (Typeable b) => (Text -> b) -> FieldParser b
 forNewtype wrapper field =