Systemd-networkd with namespaces

I wanna setup a mail server on my server at home. To use a non residential IP I wanna run my network through a VPS using wireguard. To route only the mail traffic through the VPS my idea was to use a separate network namespace for the mail services(dovecot and postfix). However it turns out that systemd networkd doesn’t have support for network namespaces built in. Hence my idea for this config doesn’t work(and actually gives an evaluation error saying I can’t use network namespaces with systemd-networkd like this).

{ config, pkgs, ... }:

let
  nft_wg_rules = pkgs.writeText "nftrules.conf" ''
    table ip filter {
        chain input {
            type filter hook input priority 0;
            policy drop;

            icmp type echo-request accept
            ct state established,related accept 

            ip saddr 10.100.0.0/24 tcp dport 22 accept
            ip saddr 10.100.0.0/24 tcp dport 25 accept
            ip saddr 10.100.0.0/24 tcp dport 465 accept
            ip saddr 10.100.0.0/24 tcp dport 587 accept
            ip saddr 10.100.0.0/24 tcp dport 993 accept
            ip saddr 10.100.0.0/24 tcp dport 51820 accept
        }

        chain forward {
            type filter hook forward priority 0;
            policy drop;
        }

        chain output {
            type filter hook output priority 0;
            policy accept;
        }
    }
  '';
in
{
  age.secrets.nas_wg_privkey.file = ../../../../secrets/nas_wg_privkey.age;
  networking.nat.enable = true;
  networking.firewall.allowedUDPPorts = [ 51820 ];

  networking.wireguard = {
    useNetworkd = true;
    interfaces = {
      wg0 = {
        ips = [ "10.100.0.2/32" ];
        listenPort = 51820;
        preSetup = "${pkgs.iproute2}/bin/ip netns add wgmail";
        preShutdown = "${pkgs.iproute2}/bin/ip netns del wgmail";
        postSetup = "${pkgs.iproute2}/bin/ip netns exec ${pkgs.nftables}/bin/nft -f ${nft_wg_rules}";

        interfaceNamespace = "wgmail";
        privateKeyFile = config.age.secrets.nas_wg_privkey.path;
        peers = [
          {
            publicKey = "<pubkey>";
            allowedIPs = [ "0.0.0.0/0" ];
            endpoint = "<snip>";
            persistentKeepalive = 25;
          }
        ];
      };
    };
  };
}

Is there any way to use network namespaces with systemd-networkd? Would it work to just create the namespace via a systemd service and have it move the wg0 interface to the namespace, or is there a less hacky way?