thermostat/shell.nix

48 lines
1.3 KiB
Nix
Raw Normal View History

2019-03-07 23:27:33 +08:00
{ rustChannel ? "nightly" }:
let
mozillaOverlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
pkgs = import <nixpkgs> { overlays = [ mozillaOverlay ]; };
# `lib.systems.examples.armhf-embedded` from nixpkgs master
# (TODO: use directly starting with NixOS 19.0X)
targetPlatform = {
config = "arm-none-eabihf";
libc = "newlib";
};
2019-03-07 23:27:33 +08:00
in
with pkgs;
2019-03-07 23:27:33 +08:00
let
2019-03-08 01:24:21 +08:00
rustPlatform = callPackage (import ./nix/rustPlatform.nix) { inherit rustChannel; };
openocd = callPackage (import ./nix/openocd.nix) {};
# TODO: gdb 8.2.1 from NixOS >= 19.XX is multiarch by default.
# remove the following as `gdb` is already in scope
gdb = pkgs.gdb.override {
stdenv = stdenv.override {
targetPlatform = {
config = "arm-none-eabihf";
libc = "newlib";
};
};
};
2019-03-07 23:27:33 +08:00
in
stdenv.mkDerivation {
name = "adc2tcp-env";
buildInputs = with rustPlatform.rust; [
rustc cargo gdb
2019-03-07 23:27:33 +08:00
];
# Set Environment Variables
RUST_BACKTRACE = 1;
2019-03-08 01:24:21 +08:00
shellHook = ''
echo "Starting openocd"
${openocd}/bin/openocd-nucleo-f429zi &
# Let openocd output scroll by
sleep 1
2019-03-15 02:58:41 +08:00
echo "Run 'cargo build --release --features=semihosting'"
echo "Then '${targetPlatform.config}-gdb target/thumbv7em-none-eabihf/release/adc2tcp'"
2019-03-08 01:24:21 +08:00
'';
2019-03-07 23:27:33 +08:00
}