FRET/flake.nix

78 lines
2.2 KiB
Nix

{
description = "A devShell example";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
};
myrust = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override {
extensions = [ "rust-analyzer" "rust-src" "rust-docs" ];
});
in
with pkgs;
rec {
devShell = mkShell.override {stdenv = llvmPackages_14.stdenv;} { # LibAFL needs LLVM
buildInputs = [
# rust-bin.nightly.latest.default
myrust
llvmPackages_14.libclang
# für qemu
python3
meson # unsure
ninja
pkgconfig
glib
pixman
# libslirp
# für analyse der in-/outputs
xxd
# FreeRTOS
gcc-arm-embedded
# generate bindings from RTOS to Rust
rust-bindgen
# compare libafl edges
packages.edge_compare
# Debugging
ddd
# visualization
graphviz
rstudioWrapper
R
# dependencies for mosaic
freetype
fontconfig
];
shellHook = ''
export CUSTOM_QEMU_DIR=/home/alwin/code/FRET/qemu-libafl-bridge
export CUSTOM_QEMU_NO_BUILD=1
# export EMULATION_MODE=systemmode
# export CPU_TARGET=arm
# export CROSS_CC=arm-none-eabi-gcc
export LIBCLANG_PATH=${llvmPackages_14.libclang.lib}/lib
'';
};
packages = {
edge_compare=rustPlatform.buildRustPackage rec {
pname = "edge_compare";
version = "0.1.0";
src = ./edge_compare;
cargoSha256 = "sha256-47THUU9aKhAwb2Tz8bJWDmVhDokpr+DOiFNZhmsN8Gk=";
};
};
}
);
}