{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module System.Nix.Store
( PathName, pathNameContents, pathName
, PathHashAlgo, Path(..)
, StoreEffects(..)
, SubstitutablePathInfo(..)
) where
import qualified Data.ByteString.Lazy as BS
import Data.Text (Text)
import Text.Regex.Base.RegexLike (makeRegex, matchTest)
import Text.Regex.TDFA.Text (Regex)
import Data.Hashable (Hashable(..), hashPtrWithSalt)
import Data.HashSet (HashSet)
import Data.HashMap.Strict (HashMap)
import System.IO.Unsafe (unsafeDupablePerformIO)
import System.Nix.Hash (Digest)
import System.Nix.Path
import System.Nix.Nar
data StoreEffects rootedPath validPath m =
StoreEffects
{
fromRootedPath :: !(rootedPath -> Path)
,
fromValidPath :: !(validPath -> rootedPath)
,
validPaths :: !(HashSet rootedPath -> m (HashSet validPath))
,
referrers :: !(validPath -> m (HashSet Path))
,
rootedPath :: !(Path -> m rootedPath)
,
substitutablePathInfos ::
!(HashSet Path -> m (HashMap Path SubstitutablePathInfo))
,
validDerivers :: !(Path -> m (HashSet Path))
,
derivationOutputs :: !(validPath -> m (HashSet Path))
,
derivationOutputNames :: !(validPath -> m (HashSet Text))
,
pathFromHashPart :: !(Digest PathHashAlgo -> m Path)
,
addFile :: !(BS.ByteString -> m validPath)
}