diff --git a/nixos/modules/services/networking/clatd.nix b/nixos/modules/services/networking/clatd.nix index 09f7fdfb6e9e..376f62cb888d 100644 --- a/nixos/modules/services/networking/clatd.nix +++ b/nixos/modules/services/networking/clatd.nix @@ -13,6 +13,11 @@ in package = lib.mkPackageOption pkgs "clatd" { }; + enableNetworkManagerIntegration = lib.mkEnableOption "NetworkManager integration" // { + default = config.networking.networkmanager.enable; + defaultText = "config.networking.networkmanager.enable"; + }; + settings = lib.mkOption { type = lib.types.submodule ({ name, ... }: { freeformType = settingsFormat.type; @@ -75,5 +80,17 @@ in ]; }; }; + + networking.networkmanager.dispatcherScripts = cfg.enableNetworkManagerIntegration [ + { + type = "basic"; + # https://github.com/toreanderson/clatd/blob/master/scripts/clatd.networkmanager + source = pkgs.writeShellScript "restart-clatd" '' + [ "$DEVICE_IFACE" = "clat" ] && exit 0 + [ "$2" != "up" ] && [ "$2" != "down" ] && exit 0 + ${pkgs.systemd}/bin/systemctl restart clatd.service + ''; + } + ]; }; }