This is based off of the what Ross Schlaikjer did for CPP but this for C. Also, some of the library calls didn't work and have been updated.
libopencm3 is used as a submodule. After cloning, run:
sudo apt install {gcc,libnewlib,binutils}-arm-none-eabi
git submodule init
git submodule update
pushd libopencm3
make
popd
You can easily used an ST-LINK programmer. I haven't been able to get the USB bootloader to work yet but you can also use a USB-to-serial dongle using stm32loader.