dotfiles/overlays/ifstate/module.nix

54 lines
1 KiB
Nix
Raw Normal View History

{
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"];
restartIfChanged = true;
serviceConfig = {
Type = "oneshot";
ExecStart = "${getExe cfg.package} -c ${format.generate "ifstate.json" cfg.settings} apply";
ExecReload = "${getExe cfg.package} -c ${format.generate "ifstate.json" cfg.settings} apply";
RemainAfterExit = true;
};
};
};
}