If you are using the emonTxShield you can easily forgo all the link wires and use the serialusb programmer directly on the 6way header (see STM32 Development - #207 by pb66) by not populating the 5v pin and linking the 5v and 3.3v tracks on the shield. You also need to change a couple of links on the STM32 to access the uart via the Arduino headers, I can’t recall which now as it was a while back I did this, but it is documented in the nucleo user manual.
The blue user button can also be plumbed into the boot0 pin to replace the manipulation of a boot0 link wire with a button press.
A better option still is to use the GPIO of a Pi much like updating a rfm2pi (or emonpi) as then you can connect the boot0 to another GPIO pin and upload totally “handsfree”.
It is also possible to use the Pi GPIO to simulate an STlink and use the swd/jtag method without a STLink v2 but that’s more complex to set up and uses OpenOCD rather than the much simpler stm32flash.
Although ultimately I think it would be good to look at in-application programming for installing FW updates (not to be confused with communicating with the device for configuration, calibrating and debugging).