about summary refs log blame commit diff
path: root/protocol.prs
blob: f6fa7e76886d27dd162a6b11cca877038d88bc9b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
           
                            
 






                                                             
 






                                                                   
 
                                                                
 
                                                                     



                                                                          
 
                    
                             
 







                                                                          
 




                                                           



                                                               


                                                          


                                                                                                                                                                         
                                 


                                 
version 1 .
embeddedType EntityRef.Cap .

# Gatekeeper step to access a Nix repository.
RepoResolveStep = <nix-repo @detail RepoResolveDetail> .
RepoResolveDetail = {

  # Path to a repository to import.
  # This string is evaluated so it can include "<…>" paths.
  import: string

  # List of strings corresponding to entries in NIX_PATH.
  # For example:
  #  [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos"
  #    "nixos-config=/etc/nixos/configuration.nix"
  #    "/nix/var/nix/profiles/per-user/root/channels"
  #  ]
  lookupPath: [string ...]

} & @args RepoArgs & @store RepoStore & @cacheSpace CacheSpace .

# Arguments to call the imported expression with if it is a function.
RepoArgs = @present { args: any } / @absent { } .

# Store uri or capability.
RepoStore = @uri { store: string } / @cap { store: #:any } / @absent { } .

# Common error type.
Error = <error @message any>.

# Represents a Nix derivation.
# The @storePath can be realized as store object from @drvPath.
#
# If an attrset value resulting from evaluation has a "drvPath" attribute
# then a drv record is returned in place of the attrset. Returning the
# attrset is not feasible because otherwise lazy values would explode into
# complete dependency trees.
Derivation = <drv @drvPath string @storePath string> .

# Gatekeeper step to access a Nix store.
StoreResolveStep = <nix-store @detail StoreResolveDetail> .
StoreResolveDetail = {
  params: AttrSet
  uri: string
} & @cacheSpace CacheSpace .

# A cooperative caching dataspace shared with other Nix stores.
CacheSpace = @cacheSpace { cache: #:any } / @absent { } .

CheckStorePath = <check-path @path string @valid #:bool> .

# Assertion. The store that this asserted to will copy the closure of @storePath to @destination. When the copy completes or fails a Result value is asserted to @result.
CopyClosure = <copy-closure @dest #:any @storePath string @result #:Result>.

AttrSet = {symbol: any ...:...} .

# Value.
Result = Error / <ok @value any>.