packages feed

hnix-store-core-0.3.0.0: src/System/Nix/Derivation.hs

{-# LANGUAGE OverloadedStrings #-}

module System.Nix.Derivation (
    parseDerivation
  , buildDerivation
  ) where

import Data.Attoparsec.Text.Lazy (Parser)
import Data.ByteString (ByteString)
import Data.Text (Text)
import Data.Text.Lazy.Builder (Builder)
import Nix.Derivation (Derivation)
import System.Nix.StorePath (StorePath, pathParser)

import qualified Data.ByteString.Char8
import qualified Data.Text
import qualified Data.Text.Lazy.Builder
import qualified Data.Attoparsec.Text.Lazy

import qualified Nix.Derivation
import qualified System.Nix.StorePath

parseDerivation :: FilePath -> Parser (Derivation StorePath Text)
parseDerivation expectedRoot =
  Nix.Derivation.parseDerivationWith
    ("\"" *> System.Nix.StorePath.pathParser expectedRoot <* "\"")
    Nix.Derivation.textParser

buildDerivation :: Derivation StorePath Text -> Builder
buildDerivation derivation =
  Nix.Derivation.buildDerivationWith
    (string . Data.Text.pack . show)
    string
    derivation
  where
    string = Data.Text.Lazy.Builder.fromText . Data.Text.pack . show