{ config, pkgs, ... }: let privateKeyFile = ifName: "/run/wireguard-keys/${ifName}.key"; ifName = "vpn"; in { systemd.services = { "wireguard-key-${ifName}" = { description = "Create key file for wireguard interface '${ifName}'"; requiredBy = [ "systemd-networkd.service" ]; before = [ "systemd-networkd.service" ]; serviceConfig.Type = "oneshot"; script = '' #! ${pkgs.runtimeShell} -e F=${privateKeyFile ifName} mkdir -p -m 0700 $(dirname $F) chown systemd-network:systemd-network $(dirname $F) rm -f $F cat >$F <