Nada garante que seu firstboot.service seja executado antes de systemd-networkd ser iniciado. Você tem que usar
Wants=network-pre.target
Before=network-pre.target
em vez de Before=network.target para conseguir isso. Como man systemd.special explica:
network-pre.target: This passive target unit may be pulled in by services that want to run before any network is set up, for example for the purpose of setting up a firewall. All network management software orders itself after this target, but does not pull it in.
Você também precisará de DefaultDependencies=false para evitar a dependência implícita em basic.target (consulte man systemd.service ).