forked from M-Labs/thermostat
atse
44e9130010
Follow ARTIQ, and in this project lets us include the version number directly in flake.nix instead of linking to the toml file of a specific release date, as we use stable Rust. Also, from nixpkgs manual: both oxalica's overlay and fenix better integrate with nix and cache optimizations. Because of this and ergonomics, either of those community projects should be preferred to the Mozilla's Rust overlay (nixpkgs-mozilla).
70 lines
2.0 KiB
Nix
70 lines
2.0 KiB
Nix
{
|
|
description = "Firmware for the Sinara 8451 Thermostat";
|
|
|
|
inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-23.05;
|
|
inputs.rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, rust-overlay }:
|
|
let
|
|
pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import rust-overlay) ]; };
|
|
|
|
rust = pkgs.rust-bin.stable."1.66.0".default.override {
|
|
extensions = [ "rust-src" ];
|
|
targets = [ "thumbv7em-none-eabihf" ];
|
|
};
|
|
rustPlatform = pkgs.makeRustPlatform {
|
|
rustc = rust;
|
|
cargo = rust;
|
|
};
|
|
|
|
thermostat = rustPlatform.buildRustPackage {
|
|
name = "thermostat";
|
|
version = "0.0.0";
|
|
|
|
src = self;
|
|
cargoLock = {
|
|
lockFile = ./Cargo.lock;
|
|
outputHashes = {
|
|
"stm32-eth-0.2.0" = "sha256-48RpZgagUqgVeKm7GXdk3Oo0v19ScF9Uby0nTFlve2o=";
|
|
};
|
|
};
|
|
|
|
nativeBuildInputs = [ pkgs.llvm ];
|
|
|
|
buildPhase = ''
|
|
cargo build --release --bin thermostat
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out $out/nix-support
|
|
cp target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.elf
|
|
echo file binary-dist $out/thermostat.elf >> $out/nix-support/hydra-build-products
|
|
llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.bin
|
|
echo file binary-dist $out/thermostat.bin >> $out/nix-support/hydra-build-products
|
|
'';
|
|
|
|
dontFixup = true;
|
|
};
|
|
in {
|
|
packages.x86_64-linux = {
|
|
inherit thermostat;
|
|
};
|
|
|
|
hydraJobs = {
|
|
inherit thermostat;
|
|
};
|
|
|
|
devShell.x86_64-linux = pkgs.mkShell {
|
|
name = "thermostat-dev-shell";
|
|
buildInputs = with pkgs; [
|
|
rust openocd dfu-util
|
|
] ++ (with python3Packages; [
|
|
numpy matplotlib
|
|
]);
|
|
};
|
|
defaultPackage.x86_64-linux = thermostat;
|
|
};
|
|
} |