There's various bits and pieces in tvix-cli that use both the store and evaluator, as well as nix-compat. For example, builtins.derivation, as well as the reference scanning implementation. This "glue code" currently isn't accessible from anywhere else, but it'd be very useful if it were. Move it out into a `glue` crate, and make `tvix-cli` a consumer of it. All the KnownPaths setup and passing around, as well as NIX_PATH handling is also something that should probably be moved into the glue crate as well, but that's something left for a future CL. Change-Id: I080ed3d1825ab23790666486840f301f00856277 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9908 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			941 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			941 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use nix_compat::{derivation::DerivationError, nixhash};
 | |
| use std::rc::Rc;
 | |
| use thiserror::Error;
 | |
| 
 | |
| /// Errors related to derivation construction
 | |
| #[derive(Debug, Error)]
 | |
| pub enum Error {
 | |
|     #[error("an output with the name '{0}' is already defined")]
 | |
|     DuplicateOutput(String),
 | |
|     #[error("fixed-output derivations can only have the default `out`-output")]
 | |
|     ConflictingOutputTypes,
 | |
|     #[error("the environment variable '{0}' has already been set in this derivation")]
 | |
|     DuplicateEnvVar(String),
 | |
|     #[error("invalid derivation parameters: {0}")]
 | |
|     InvalidDerivation(DerivationError),
 | |
|     #[error("invalid output hash: {0}")]
 | |
|     InvalidOutputHash(nixhash::Error),
 | |
|     #[error("invalid output hash mode: '{0}', only 'recursive' and 'flat` are supported")]
 | |
|     InvalidOutputHashMode(String),
 | |
| }
 | |
| 
 | |
| impl From<Error> for tvix_eval::ErrorKind {
 | |
|     fn from(err: Error) -> Self {
 | |
|         tvix_eval::ErrorKind::TvixError(Rc::new(err))
 | |
|     }
 | |
| }
 |