48 lines
1.6 KiB
Haskell
48 lines
1.6 KiB
Haskell
{-# LANGUAGE FlexibleInstances #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
{-# LANGUAGE TypeApplications #-}
|
|
{-# LANGUAGE TypeSynonymInstances #-}
|
|
|
|
{-# OPTIONS_GHC -Wno-orphans #-}
|
|
|
|
module Nix.Fresh.Basic where
|
|
|
|
import Control.Monad.Reader
|
|
import Nix.Effects
|
|
import Nix.Render
|
|
import Nix.Fresh
|
|
import Nix.Value
|
|
|
|
type StdIdT = FreshIdT Int
|
|
|
|
instance MonadFile m => MonadFile (StdIdT m)
|
|
instance MonadIntrospect m => MonadIntrospect (StdIdT m)
|
|
instance MonadStore m => MonadStore (StdIdT m) where
|
|
addPath' = lift . addPath'
|
|
toFile_' = (lift .) . toFile_'
|
|
instance MonadPutStr m => MonadPutStr (StdIdT m)
|
|
instance MonadHttp m => MonadHttp (StdIdT m)
|
|
instance MonadEnv m => MonadEnv (StdIdT m)
|
|
instance MonadInstantiate m => MonadInstantiate (StdIdT m)
|
|
instance MonadExec m => MonadExec (StdIdT m)
|
|
|
|
instance (MonadEffects t f m, MonadDataContext f m)
|
|
=> MonadEffects t f (StdIdT m) where
|
|
makeAbsolutePath = lift . makeAbsolutePath @t @f @m
|
|
findEnvPath = lift . findEnvPath @t @f @m
|
|
findPath vs path = do
|
|
i <- FreshIdT ask
|
|
let vs' = map (unliftNValue (runFreshIdT i)) vs
|
|
lift $ findPath @t @f @m vs' path
|
|
importPath path = do
|
|
i <- FreshIdT ask
|
|
p <- lift $ importPath @t @f @m path
|
|
return $ liftNValue (runFreshIdT i) p
|
|
pathToDefaultNix = lift . pathToDefaultNix @t @f @m
|
|
derivationStrict v = do
|
|
i <- FreshIdT ask
|
|
p <- lift $ derivationStrict @t @f @m (unliftNValue (runFreshIdT i) v)
|
|
return $ liftNValue (runFreshIdT i) p
|
|
traceEffect = lift . traceEffect @t @f @m
|