Systemd/networkd/dispatcher: Difference between revisions

imported>Onny
mNo edit summary
imported>Onny
Update interface to latest PR state
Line 3: Line 3:
{{Note|Parts of this instruction and module are not yet stable and will be available in the upcoming NixOS 23.05 release.}}
{{Note|Parts of this instruction and module are not yet stable and will be available in the upcoming NixOS 23.05 release.}}


== Installation ==
== Usage ==


Add following line to your system configuration to install and enable Networkd-dispatcher
The following example triggers a script every time the networkd state <code>routable</code> or <code>off</code> is reached. This is the case when you connect to a new network or quit an existing connection as with [[OpenVPN]]. An additional check ensures that the affected interface corresponds to <code>wlan0</code> and that the uplink is <code>configured</code>. After that the [[Tor]] daemon gets restarted.


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
services.networkd-dispatcher.enable = true;
services.networkd-dispatcher = {
</syntaxhighlight>
  enable = true;
 
  rules."restart-tor" = {
== Configuration ==
    onState = ["routable" "off"];
 
    script = ''
In the following example we're going to create a script which will restart the [[Tor]] daemon everytime the interface <code>wlan0</code> establishes a new successfull connection to a wifi network.
      #!${pkgs.runtimeShell}
 
      if [[ $IFACE == "wlan0" && $AdministrativeState == "configured" ]]; then
{{file|/var/lib/networkd-dispatcher/routable.d/00-restart-tor.sh|bash|<nowiki>
        echo "Restarting Tor ..."
#!/usr/bin/env bash
        systemctl restart tor
if [[ $IFACE == "wlan0" && $AdministrativeState == "configured" ]]; then
      fi
    systemctl restart tor
      exit 0
fi
    '';
exit 0
  };
</nowiki>}}
};
 
Adjusting file permissions for the script to work
<syntaxhighlight lang="bash">
chmod 755 /var/lib/networkd-dispatcher/routable.d/00-restart-tor
chown root /var/lib/networkd-dispatcher/routable.d/00-restart-tor
</syntaxhighlight>
</syntaxhighlight>