aboutsummaryrefslogtreecommitdiff
path: root/nixos/modules/openvpn.nix
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2024-04-09 13:45:50 +0200
committerKarel Kočí <cynerd@email.cz>2024-04-09 13:45:50 +0200
commitb8f5007dbcb0a9393016fec83a27b5a017327d2b (patch)
treeae59b4a7c8aa901947984f75e71e75d453182718 /nixos/modules/openvpn.nix
parentdae967fb154468e90bbbaaf8a65bf13e8e8d1531 (diff)
downloadnixos-personal-b8f5007dbcb0a9393016fec83a27b5a017327d2b.tar.gz
nixos-personal-b8f5007dbcb0a9393016fec83a27b5a017327d2b.tar.bz2
nixos-personal-b8f5007dbcb0a9393016fec83a27b5a017327d2b.zip
wireguard: drop dean as endpoint
This doesn't work correctly because dean doesn't have public IP and thus can't be discovered easilly.
Diffstat (limited to 'nixos/modules/openvpn.nix')
-rw-r--r--nixos/modules/openvpn.nix21
1 files changed, 19 insertions, 2 deletions
diff --git a/nixos/modules/openvpn.nix b/nixos/modules/openvpn.nix
index 789d430..6a21721 100644
--- a/nixos/modules/openvpn.nix
+++ b/nixos/modules/openvpn.nix
@@ -1,6 +1,7 @@
{
config,
lib,
+ pkgs,
...
}: let
inherit (lib) mkOption types mkIf;
@@ -27,9 +28,25 @@ in {
config = "config /run/secrets/old.ovpn";
};
elektroline = mkIf cnf.elektroline {
- autoStart = false;
config = "config /run/secrets/elektroline.ovpn";
- updateResolvConf = true;
+ up = ''
+ domain=""
+ dns=()
+ for optionname in ''${!foreign_option_*} ; do
+ read -r p1 p2 p3 <<<"''${!optionname}"
+ [[ "$p1" == "dhcp-option" ]] || continue
+ case "$p2" in
+ DNS)
+ dns+=("$p3")
+ ;;
+ DOMAIN)
+ domain="$p3"
+ ;;
+ esac
+ done
+ ${pkgs.systemd}/bin/resolvectl dns "$dev" "''${dns[@]}"
+ ${pkgs.systemd}/bin/resolvectl domain "$dev" "~$domain"
+ '';
};
};
};