{ package }: { lib, config, ... }: let cfg = config.services.hydration-notifier; in { options.services.hydration-notifier = { enable = lib.mkEnableOption "Hydration notifier service"; interval = lib.mkOption { type = lib.types.int; default = 60 * 30; description = "Notification interval in seconds."; }; duration = lib.mkOption { type = lib.types.int; default = 10; description = "Duration of the notification."; }; dailyTarget = lib.mkOption { type = lib.types.int; default = 2000; description = "Daily target in milliliters."; }; dayStart = lib.mkOption { type = lib.types.int; default = 6 * 60 * 60; description = "Day start in seconds."; }; dayEnd = lib.mkOption { type = lib.types.int; default = 21 * 60 * 60; description = "Day end in seconds."; }; }; config = lib.mkIf cfg.enable { systemd.user.services.hydration-notifier = { description = "Hydration Notifier Service"; wantedBy = [ "default.target" ]; after = [ "default.target" ]; restartTriggers = [ package ]; serviceConfig = { ExecStart = "${package}/bin/hydration-notifier -i ${toString cfg.interval} -d ${toString cfg.duration} --daily-target ${toString cfg.dailyTarget} --day-start ${toString cfg.dayStart} --day-end ${toString cfg.dayEnd}"; Restart = "always"; RestartSec = 5; }; }; }; }