I have a wireguard tunnel setup by networkd with custom rules to only send traffic from a slice through it. It works fine. Take a look at the netdev documentation [1].
What are you trying to do exactly ?
[1] https://www.freedesktop.org/software/systemd/man/systemd.net...
You don't know how the network will be parsed or which statements that works with your version. Very difficult to debug when it doesn't behave as it should.
After a lot of fiddling with source routing on e.g. Debian Strech I was able to something working. But only half of the times I restarted networkd.
I would like some better tooling to assist with more difficult setups.
But, yes, turning on debug mode is harder than it should be, and it's usually not the right level. (I usually just go for strace first, but with netdev I guess it's using netlink to talk to the kernel, so that'll not help much :/ )
I use strace etc (and debug level in networkd), but then you realise that this should make it easier not tougher. I did learn about ifup -v though which gave me all I needed. But both tools silently ignores flags that is wrong.
I'm writing my own tool now that is more strict in that sense instead.
Sorry about the rant but it's at least three trips to get everything working flawless in systemd-networkd now..
Of course it's free and open source, so we can at least try to make it better besides complaining, but that part is harder than it should be (otherwise the whole problem would have been "solved" by now).
Systemd-networkd is fine layout wise, it's just the tooling that could be improved upon. Also here you see the problem with systemd-networkd being shipped together with systemd deb, if it were to be standalone it would be so easy to backport just that.