packages feed

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

{-# LANGUAGE OverloadedStrings #-}

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

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

import qualified Data.Text
import qualified Data.Text.Lazy.Builder

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