@@ -84,6 +84,7 @@ import GHC.Generics (Generic)
8484
8585import qualified Control.Monad
8686import qualified Control.Monad.Reader
87+ import qualified Data.Attoparsec.Text
8788import qualified Data.Bits
8889import qualified Data.ByteString
8990import qualified Data.HashSet
@@ -103,6 +104,7 @@ import System.Nix.ContentAddress (ContentAddress)
103104import System.Nix.Derivation (Derivation (.. ), DerivationOutput (.. ))
104105import System.Nix.DerivedPath (DerivedPath , ParseOutputsError )
105106import System.Nix.Hash (HashAlgo )
107+ import System.Nix.Signature (NarSignature )
106108import System.Nix.StorePath (HasStoreDir (.. ), InvalidPathError , StorePath , StorePathHashPart , StorePathName )
107109import System.Nix.StorePath.Metadata (Metadata (.. ), StorePathTrust (.. ))
108110import System.Nix.Store.Remote.Types
@@ -114,6 +116,7 @@ import qualified System.Nix.Base
114116import qualified System.Nix.ContentAddress
115117import qualified System.Nix.DerivedPath
116118import qualified System.Nix.Hash
119+ import qualified System.Nix.Signature
117120import qualified System.Nix.StorePath
118121
119122-- | Transformer for @Serializer@
@@ -176,6 +179,7 @@ data PrimError
176179 | PrimError_NarHashMustBeSHA256
177180 | PrimError_NotYetImplemented String (ForPV ProtoVersion )
178181 | PrimError_Path InvalidPathError
182+ | PrimError_Signature String
179183 deriving (Eq , Ord , Generic , Show )
180184
181185data ForPV a
@@ -441,12 +445,9 @@ pathMetadata = Serializer
441445 size -> Just size) <$> getS int
442446 trust <- getS storePathTrust
443447
444- _sigStrings <- getS $ list text
448+ sigs <- getS $ set signature
445449 contentAddress <- getS maybeContentAddress
446450
447- let
448- -- XXX: signatures need pubkey from config
449- sigs = mempty
450451 pure $ Metadata {.. }
451452
452453 , putS = \ Metadata {.. } -> do
@@ -466,7 +467,7 @@ pathMetadata = Serializer
466467 putS time registrationTime
467468 putS int $ Prelude. maybe 0 id $ narBytes
468469 putS storePathTrust trust
469- putS (hashSet text) mempty
470+ putS (set signature) sigs
470471 putS maybeContentAddress contentAddress
471472 }
472473 where
@@ -505,12 +506,23 @@ pathMetadata = Serializer
505506 putS text $ System.Nix.StorePath. storePathToText sd p
506507 }
507508
509+ storePathTrust
510+ :: NixSerializer r PrimError StorePathTrust
508511 storePathTrust =
509512 mapIsoSerializer
510513 (\ case False -> BuiltElsewhere ; True -> BuiltLocally )
511514 (\ case BuiltElsewhere -> False ; BuiltLocally -> True )
512515 bool
513516
517+ signature
518+ :: NixSerializer r PrimError NarSignature
519+ signature =
520+ mapPrismSerializer
521+ (Data.Bifunctor. first PrimError_Signature
522+ . Data.Attoparsec.Text. parseOnly
523+ System.Nix.Signature. signatureParser)
524+ (System.Nix.Signature. signatureToText)
525+ text
514526
515527-- * Some HashAlgo
516528
0 commit comments