with import <nixpkgs> {};
let 
    build = import ./build.nix;
    run = import ./run.nix;
in rec
{
calc = build {
    derivName = "calc";
    target = "calc";
    output = "calc";
};
test = build {
    derivName = "test";
    target = "unit_test";
    buildDependencies = [catch2];
    output = "unit_test";
};
fuzzCalc = build {
    derivName = "fuzz_calc";
    target = "fuzz_calc";
    buildDependencies = [afl];
    output = "fuzz_calc";
};

runTest = run {
    derivName = "testResult";
    target = "unit_test";
    buildDependencies = [catch2];
    checkCommand = "make run_test";
    output = "unit_test";
};

runFuzz = run {
    derivName = "fuzzerResult";
    target = "fuzz_calc";
    buildDependencies = [afl];
    checkCommand = "bash fuzz_seconds.sh ${fuzzCalc}/bin/fuzz_calc";
    output = "out/*";
};

}