module Hercules.Agent.Worker.Env where import Control.Concurrent.STM (TVar) import Data.IORef (IORef) import Data.UUID (UUID) import Hercules.Agent.Worker.HerculesStore (HerculesStore) import Hercules.Agent.WorkerProtocol.Command.BuildResult qualified as BuildResult import Hercules.Agent.WorkerProtocol.Event (Event) import Hercules.CNix (Ref) import Hercules.CNix.Store (Store, StorePath) import Protolude data HerculesState = HerculesState { drvsCompleted :: TVar (Map StorePath (UUID, BuildResult.BuildStatus)), drvBuildAsyncs :: TVar (Map StorePath (Async (UUID, BuildResult.BuildStatus))), drvRebuildAsyncs :: TVar (Map StorePath (Async (UUID, BuildResult.BuildStatus))), drvOutputSubstituteAsyncs :: TVar (Map (StorePath, ByteString) (Async StorePath)), drvsInProgress :: IORef (Set StorePath), herculesStore :: Ptr (Ref HerculesStore), wrappedStore :: Store, shortcutChannel :: Chan (Maybe Event), extraNixOptions :: [(Text, Text)] }