{ pkgs, lib, config, ... }: with lib; let cfg = config.primary; in { options.primary = { enable = mkEnableOption "is primary host"; }; config = mkIf cfg.enable { systemd = { user = { services = { do_agenda = { description = "Send today's agenda"; unitConfig = { Type = "simple"; }; serviceConfig = { Type = "oneshot"; Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; ExecStart = "/home/don/bin/do_agenda"; }; }; do_agenda_tomorrow = { description = "Send tomorrow's agenda"; unitConfig = { Type = "simple"; }; serviceConfig = { Type = "oneshot"; Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; ExecStart = "/home/don/bin/do_agenda_tomorrow"; }; }; gosleep = { description = "Adjust tailscale MTU based on location"; unitConfig = { Type = "simple"; }; serviceConfig = { Type = "oneshot"; Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; ExecStart = "/home/don/bin/gosleep"; }; }; }; timers = { do_agenda = { wantedBy = [ "timers.target" ]; partOf = [ "do_agenda.service" ]; timerConfig = { OnCalendar = "05:00"; Unit = "do_agenda.service"; }; }; do_agenda_tomorrow = { wantedBy = [ "timers.target" ]; partOf = [ "do_agenda_tomorrow.service" ]; timerConfig = { OnCalendar = "20:00"; Unit = "do_agenda_tomorrow.service"; }; }; gosleep = { wantedBy = [ "timers.target" ]; partOf = [ "gosleep.service" ]; timerConfig = { OnCalendar = "1m"; Unit = "gosleep.service"; }; }; }; }; }; }; }