{-# LANGUAGE DeriveGeneric #-} -- | Shared types module Nix.Derivation.Types ( -- * Types Derivation(..) , DerivationOutput(..) ) where import Control.DeepSeq (NFData) import Data.Map (Map) import Data.Set (Set) import Data.Text (Text) import Data.Vector (Vector) import Filesystem.Path.CurrentOS (FilePath) import GHC.Generics (Generic) import Prelude hiding (FilePath) -- | A Nix derivation data Derivation = Derivation { outputs :: Map Text DerivationOutput -- ^ Outputs produced by this derivation where keys are output names , inputDrvs :: Map FilePath (Set Text) -- ^ Inputs that are derivations where keys specify derivation paths and -- values specify which output names are used by this derivation , inputSrcs :: Set FilePath -- ^ Inputs that are sources , platform :: Text -- ^ Platform required for this derivation , builder :: Text -- ^ Code to build the derivation, which can be a path or a builtin function , args :: Vector Text -- ^ Arguments passed to the executable used to build to derivation , env :: Map Text Text -- ^ Environment variables provided to the executable used to build the -- derivation } deriving (Eq, Generic, Ord, Show) instance NFData Derivation -- | An output of a Nix derivation data DerivationOutput = DerivationOutput { path :: FilePath -- ^ Path where the output will be saved , hashAlgo :: Text -- ^ Hash used for expected hash computation , hash :: Text -- ^ Expected hash } deriving (Eq, Generic, Ord, Show) instance NFData DerivationOutput