{ pkgs, lib, config, ... }: let inherit (lib) mkEnableOption mkOption types mkIf getExe ; cfg = config.services.ifstate; format = pkgs.formats.json {}; in { options.services.ifstate = { enable = mkEnableOption "Enable ifstate service"; package = mkOption { type = types.package; default = pkgs.ifstate; description = '' ''; }; settings = mkOption { type = format.type; default = {}; description = '' ''; }; }; config = mkIf cfg.enable { systemd.services.ifstate = { description = "ifstate service"; wantedBy = ["network.target"]; before = ["network-pre.target" "dhcpcd.service"]; reloadIfChanged = true; serviceConfig = { Type = "oneshot"; ExecStart = "${getExe cfg.package} -vc ${format.generate "ifstate.json" cfg.settings} apply"; ExecReload = "${getExe cfg.package} -vc ${format.generate "ifstate.json" cfg.settings} apply"; RemainAfterExit = true; }; }; }; }