diff --git a/default.nix b/default.nix index f7622c3..b2f56ee 100644 --- a/default.nix +++ b/default.nix @@ -19,26 +19,30 @@ stdenv.mkDerivation { buildInputs = [ adc2tcp openocd + makeWrapper ]; src = ./.; dontBuild = true; - installPhase = '' - mkdir -p $out/bin $out/lib $out/nix-support + installPhase = + let + firmwareBinary = "$out/lib/adc2tcp.elf"; + openOcdFlags = [ + "-c" "reset halt" + "-c" "flash write_image erase ${firmwareBinary}" + "-c" "verify_image ${firmwareBinary}" + "-c" "reset run" + "-c" "shutdown" + ]; + in '' + mkdir -p $out/bin $out/lib $out/nix-support - BIN=$out/lib/adc2tcp - ln -s ${adc2tcp}/lib/adc2tcp $BIN - cat >> $out/bin/flash-adc2tcp <> $out/nix-support/hydra-build-products - ''; + makeWrapper ${openocd}/bin/openocd-nucleo-f429zi $out/bin/flash-adc2tcp \ + --add-flags "${lib.escapeShellArgs openOcdFlags}" + + echo file binary-dist ${firmwareBinary} >> $out/nix-support/hydra-build-products + ''; } diff --git a/nix/openocd.nix b/nix/openocd.nix index 8a5e2a0..6f3648c 100644 --- a/nix/openocd.nix +++ b/nix/openocd.nix @@ -1,22 +1,24 @@ -{ stdenv, openocd }: +{ stdenv, lib, openocd, makeWrapper }: stdenv.mkDerivation { name = "openocd-nucleo-f429zi"; buildInputs = [ openocd + makeWrapper ]; src = ./.; noBuild = true; - installPhase = '' - mkdir -p $out/bin - cat >> $out/bin/openocd-nucleo-f429zi <