snix/tvix/glue/src/errors.rs
Florian Klink 3196fe0143 refactor(tvix): move tvix glue code into glue crate
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>
2023-11-04 15:18:44 +00:00

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))
}
}