{ config, pkgs, ... }: let inherit (pkgs.liminix.services) oneshot; inherit (pkgs.pseudofile) dir symlink; inherit (pkgs) serviceFns; in { # TODO: support dynamic reconfiguration once we are in the target VLAN? services.resolvconf = oneshot rec { name = "resolvconf"; # TODO: imho, DNS should be static and provided by the router? up = '' . ${serviceFns} ( in_outputs ${name} for i in $(output ${config.services.init-dhcpv4} dns); do echo "nameserver $i" >> resolv.conf done ) ''; dependencies = [ config.services.init-dhcpv4 ]; }; filesystem = dir { etc = dir { "resolv.conf" = symlink "${config.services.resolvconf}/.outputs/resolv.conf"; }; }; }