forked from mirrors/nixpkgs
Merge pull request #199416 from symphorien/wg-add-peer
nixos/wireguard: start new peers when they are added
This commit is contained in:
commit
67e61879c5
|
@ -391,6 +391,19 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# the target is required to start new peer units when they are added
|
||||||
|
generateInterfaceTarget = name: values:
|
||||||
|
let
|
||||||
|
mkPeerUnit = peer: (peerUnitServiceName name peer.publicKey (peer.dynamicEndpointRefreshSeconds != 0)) + ".service";
|
||||||
|
in
|
||||||
|
nameValuePair "wireguard-${name}"
|
||||||
|
rec {
|
||||||
|
description = "WireGuard Tunnel - ${name}";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
wants = [ "wireguard-${name}.service" ] ++ map mkPeerUnit values.peers;
|
||||||
|
after = wants;
|
||||||
|
};
|
||||||
|
|
||||||
generateInterfaceUnit = name: values:
|
generateInterfaceUnit = name: values:
|
||||||
# exactly one way to specify the private key must be set
|
# exactly one way to specify the private key must be set
|
||||||
#assert (values.privateKey != null) != (values.privateKeyFile != null);
|
#assert (values.privateKey != null) != (values.privateKeyFile != null);
|
||||||
|
@ -409,7 +422,6 @@ let
|
||||||
after = [ "network-pre.target" ];
|
after = [ "network-pre.target" ];
|
||||||
wants = [ "network.target" ];
|
wants = [ "network.target" ];
|
||||||
before = [ "network.target" ];
|
before = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
environment.DEVICE = name;
|
environment.DEVICE = name;
|
||||||
path = with pkgs; [ kmod iproute2 wireguard-tools ];
|
path = with pkgs; [ kmod iproute2 wireguard-tools ];
|
||||||
|
|
||||||
|
@ -540,6 +552,8 @@ in
|
||||||
// (mapAttrs' generateKeyServiceUnit
|
// (mapAttrs' generateKeyServiceUnit
|
||||||
(filterAttrs (name: value: value.generatePrivateKeyFile) cfg.interfaces));
|
(filterAttrs (name: value: value.generatePrivateKeyFile) cfg.interfaces));
|
||||||
|
|
||||||
});
|
systemd.targets = mapAttrs' generateInterfaceTarget cfg.interfaces;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue