IfState: Difference between revisions

m diagram: fix format again
add dhcpv4
Line 164: Line 164:
</syntaxhighlight>
</syntaxhighlight>


==== DHCPv4 ====
<syntaxhighlight lang="nixos">
{ lib, pkgs, ... }:
let
  script = pkgs.writeScript "ifstate-udhcp-script.sh" ''
    #! /bin/sh
    if [ "$1" = bound ]; then
      ${lib.getExe' pkgs.iproute2 "ip"} address add "$ip/$mask" dev "$interface"
      if [ -n "$mtu" ]; then
        ${lib.getExe' pkgs.iproute2 "ip"} link set mtu "$mtu" dev "$interface"
      fi
      if [ -n "$router" ]; then
        ${lib.getExe' pkgs.iproute2 "ip"} route add default via "$router" dev "$interface"
      fi
    fi
  '';
in
{
  networking.ifstate = {
    enable = true;
    settings = {
      parameters.hooks.dhcp.script = pkgs.writeScript "ifstate-udhcp-wrapper-script.sh" ''
        ${lib.getExe' pkgs.busybox "udhcpc"} --quit --now -i $IFS_IFNAME -b --script ${script}
      '';
      interfaces.eth1 = {
        addresses = [ ];
        hooks = [
          {
            name = "dhcp";
          }
        ];
        link = {
          state = "up";
          kind = "physical";
        };
      };
    };
  };
}
</syntaxhighlight>


=== Known Issues ===
=== Known Issues ===