init
This commit is contained in:
59
flake.nix
Normal file
59
flake.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
inputs = {
|
||||
fenix.url = "github:nix-community/fenix";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
naersk.url = "github:nix-community/naersk";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
};
|
||||
|
||||
outputs = { self, fenix, flake-utils, naersk, nixpkgs }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = (import nixpkgs) {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
fenix' = fenix.packages.${system};
|
||||
|
||||
toolchain = with fenix';
|
||||
combine [
|
||||
minimal.rustc
|
||||
minimal.cargo
|
||||
targets.riscv32imc-unknown-none-elf.latest.rust-std # ESP32-C3 RISC-V
|
||||
targets.riscv32imac-unknown-none-elf.latest.rust-std # ESP32-C3 RISC-V \w atomic emulation
|
||||
];
|
||||
|
||||
naersk' = naersk.lib.${system}.override {
|
||||
cargo = toolchain;
|
||||
rustc = toolchain;
|
||||
};
|
||||
|
||||
in rec {
|
||||
defaultPackage = packages.riscv32-embedded;
|
||||
|
||||
packages.riscv32-embedded = naersk'.buildPackage rec {
|
||||
src = self;
|
||||
|
||||
depsBuildBuild = with pkgs; [
|
||||
pkgsCross.riscv32-embedded.stdenv.cc
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
RUSTFLAGS="-C link-arg=-Tlinkall.x -C force-frame-pointers";
|
||||
# CARGO_UNSTABLE_BUILD_STD = "true";
|
||||
"CARGO_TARGET_${pkgs.lib.toUpper CARGO_BUILD_TARGET}_LINKER" = "riscv32-none-elf-gcc";
|
||||
"CARGO_TARGET_${pkgs.lib.toUpper CARGO_BUILD_TARGET}_RUNNER" = "espflash --monitor";
|
||||
CARGO_BUILD_TARGET = "riscv32imc-unknown-none-elf";
|
||||
shellHook = ''
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
devShell = with pkgs; mkShell ({
|
||||
RUST_SRC_PATH = "${fenix'.complete.rust-src}/lib/rustlib/src/rust/library";
|
||||
nativeBuildInputs = [ toolchain cargo-espmonitor cargo-espflash ] ++ defaultPackage.depsBuildBuild;
|
||||
} // (lib.filterAttrs (name: _: lib.hasPrefix "CARGO_" name || lib.hasPrefix "RUST" name) defaultPackage));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user