vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / wg-netmanager.nix
blob493ff7ceba9f112cb25fabaf6ff157e5938b0960
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.wg-netmanager;
7 in
10   options = {
11     services.wg-netmanager = {
12       enable = mkEnableOption "Wireguard network manager";
13     };
14   };
16   ###### implementation
17   config = mkIf cfg.enable {
18     # NOTE: wg-netmanager runs as root
19     systemd.services.wg-netmanager = {
20       description = "Wireguard network manager";
21       wantedBy = [ "multi-user.target" ];
22       after = [ "network.target" ];
23       path = with pkgs; [ wireguard-tools iproute2 wireguard-go ];
24       serviceConfig = {
25         Type = "simple";
26         Restart = "on-failure";
27         ExecStart = "${pkgs.wg-netmanager}/bin/wg_netmanager";
28         ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
29         ExecStop = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
31         ReadWritePaths = [
32           "/tmp"  # wg-netmanager creates files in /tmp before deleting them after use
33         ];
34       };
35       unitConfig =  {
36         ConditionPathExists = ["/etc/wg_netmanager/network.yaml" "/etc/wg_netmanager/peer.yaml"];
37       };
38     };
39   };
41   meta.maintainers = with maintainers; [ gin66 ];