99{-# LANGUAGE TypeFamilies #-}
1010{-# LANGUAGE DataKinds #-}
1111{-# LANGUAGE TypeApplications #-}
12+ {-# LANGUAGE StandaloneDeriving #-}
13+ {-# LANGUAGE GeneralizedNewtypeDeriving #-}
14+ {-# LANGUAGE UndecidableInstances #-}
1215
1316module Nix.Effects where
1417
@@ -26,6 +29,7 @@ import qualified Data.Text.Encoding as T
2629import Network.HTTP.Client hiding ( path , Proxy )
2730import Network.HTTP.Client.TLS
2831import Network.HTTP.Types
32+ import Nix.Utils.Fix1
2933import Nix.Expr
3034import Nix.Frames hiding ( Proxy )
3135import Nix.Parser
@@ -286,3 +290,21 @@ addPath p = either throwError return =<< addToStore (T.pack $ takeFileName p) p
286290
287291toFile_ :: (Framed e m , MonadStore m ) => FilePath -> String -> m StorePath
288292toFile_ p contents = addTextToStore (T. pack p) (T. pack contents) HS. empty False
293+
294+ -- All of the following type classes defer to the underlying 'm'.
295+
296+ deriving instance MonadPutStr (t (Fix1 t )) => MonadPutStr (Fix1 t )
297+ deriving instance MonadHttp (t (Fix1 t )) => MonadHttp (Fix1 t )
298+ deriving instance MonadEnv (t (Fix1 t )) => MonadEnv (Fix1 t )
299+ deriving instance MonadPaths (t (Fix1 t )) => MonadPaths (Fix1 t )
300+ deriving instance MonadInstantiate (t (Fix1 t )) => MonadInstantiate (Fix1 t )
301+ deriving instance MonadExec (t (Fix1 t )) => MonadExec (Fix1 t )
302+ deriving instance MonadIntrospect (t (Fix1 t )) => MonadIntrospect (Fix1 t )
303+
304+ deriving instance MonadPutStr (t (Fix1T t m ) m ) => MonadPutStr (Fix1T t m )
305+ deriving instance MonadHttp (t (Fix1T t m ) m ) => MonadHttp (Fix1T t m )
306+ deriving instance MonadEnv (t (Fix1T t m ) m ) => MonadEnv (Fix1T t m )
307+ deriving instance MonadPaths (t (Fix1T t m ) m ) => MonadPaths (Fix1T t m )
308+ deriving instance MonadInstantiate (t (Fix1T t m ) m ) => MonadInstantiate (Fix1T t m )
309+ deriving instance MonadExec (t (Fix1T t m ) m ) => MonadExec (Fix1T t m )
310+ deriving instance MonadIntrospect (t (Fix1T t m ) m ) => MonadIntrospect (Fix1T t m )
0 commit comments