{ config, lib, pkgs, ... }: let cfg = config.soispha.services.water-reminder; in { options.soispha.services.water-reminder = { enable = lib.mkEnableOption "periodic reminder for water intake"; frequency = lib.mkOption { type = lib.types.str; default = "*-*-* *:00/30:00"; # Every 30 minutes description = '' How often to remind. This value is passed to the systemd timer configuration as the `OnCalendar` option. See {manpage}`systemd.time(7)` for more information about the format. ''; }; }; config = lib.mkIf cfg.enable { home-manager.users.soispha = { systemd.user.services.water-reminder = { Unit = {Description = "Water reminder";}; Service = { CPUSchedulingPolicy = "idle"; IOSchedulingClass = "idle"; ExecStart = lib.getExe ( pkgs.writeShellApplication { name = "water-reminder"; inheritPath = false; runtimeInputs = [pkgs.libnotify]; text = # bash '' notify-send 'Seek fluid intake' 'Water intake required' --wait --expire-time=0 --urgency=critical ''; } ); }; }; systemd.user.timers.water-reminder = { Unit = {Description = "periodic reminder for water intake";}; Timer = { Unit = "water-reminder.service"; OnCalendar = cfg.frequency; }; Install = {WantedBy = ["timers.target"];}; }; }; }; }