packages feed

hix-0.9.0: lib/Hix/NixCode.hs

module Hix.NixCode where

import Exon (ToSegment (..), exonWith)
import Language.Haskell.TH.Quote (QuasiQuoter)

import Hix.Class.EncodeNix (EncodeNix (encodeNix))
import Hix.NixExpr (renderRootExpr)

newtype NixCode =
  NixCode { code :: Text }
  deriving stock (Eq, Show)
  deriving newtype (IsString, Ord, Semigroup, Monoid)

nixCode :: NixCode -> Text
nixCode NixCode {code} = code

nixon :: QuasiQuoter
nixon = exonWith (Just ([e|NixCode|], [e|id|])) True False

instance EncodeNix a => ToSegment a NixCode where
  toSegment = NixCode . renderRootExpr . encodeNix