summaryrefslogtreecommitdiff
path: root/modules/darwin/still-awake/default.nix
blob: 64308f2daf7a36a44f8b501bfee29247bb30a3ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
  pkgs,
  lib,
  config,
  ...
}: let
  inherit (lib) mkIf mkEnableOption;

  cfg = config.services.still-awake;
in {
  options.services.still-awake.enable = mkEnableOption "still-awake launchd job";

  config = mkIf cfg.enable {
    launchd.agents."still-awake" = let
      # https://macperformanceguide.com/blog/2022/20221125_2044-launch_daemon-launchctl-posix-spawn-permission-denied.html
      log-file = "/tmp/still-awake.log";
    in {
      serviceConfig = {
        ProgramArguments = ["${pkgs.still-awake}/bin/still-awake"];
        ProcessType = "Interactive";

        # WARNING: These times must match the ones specified in ${source}!
        StartCalendarInterval = [
          {
            Hour = 21;
            Minute = 30;
          }
          {Hour = 22;}
          {
            Hour = 22;
            Minute = 30;
          }
          {Hour = 23;}
          {
            Hour = 23;
            Minute = 30;
          }
          {Hour = 00;}
          {
            Hour = 00;
            Minute = 30;
          }
          {Hour = 01;}
          {
            Hour = 01;
            Minute = 30;
          }
          {Hour = 02;}
          {
            Hour = 02;
            Minute = 30;
          }
          {Hour = 03;}
          {
            Hour = 03;
            Minute = 30;
          }
          {Hour = 04;}
          {
            Hour = 04;
            Minute = 30;
          }
          {Hour = 05;}
        ];

        StandardOutPath = log-file;
        StandardErrorPath = log-file;
      };
    };
  };
}