summaryrefslogtreecommitdiff
path: root/Omni/Dev/Beryllium/Ava.nix
blob: 6957352402a42e066b7c323026e04818677fecf8 (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
{...}: let
  bild = import ../../Bild.nix {};
  avaPkg = bild.run ../../Ava.hs;
in {
  systemd.services.ava = {
    description = "Ava Telegram assistant";
    after = ["network-online.target" "ollama.service"];
    wants = ["network-online.target" "ollama.service"];
    wantedBy = ["multi-user.target"];

    serviceConfig = {
      Type = "simple";
      User = "ava";
      Group = "users";
      WorkingDirectory = "/home/ava/omni";

      Environment = [
        "AVA_DATA_ROOT=/home/ava"
        "HOME=/home/ava"
        "OLLAMA_URL=http://localhost:11434"
      ];

      EnvironmentFile = "/run/secrets/ava.env";

      ExecStart = "${avaPkg}/bin/ava";

      Restart = "on-failure";
      RestartSec = 5;

      TimeoutStopSec = 90;
      KillMode = "mixed";
      KillSignal = "SIGTERM";
    };
  };

  systemd.tmpfiles.rules = [
    "d /home/ava 0755 ava users -"
    "d /home/ava/omni 0755 ava users -"
    "d /home/ava/skills 0755 ava users -"
    "d /home/ava/outreach 0755 ava users -"
    "d /home/ava/outreach/pending 0755 ava users -"
    "d /home/ava/outreach/approved 0755 ava users -"
    "d /home/ava/outreach/rejected 0755 ava users -"
    "d /home/ava/outreach/sent 0755 ava users -"
    "d /home/ava/users 0755 ava users -"
    "d /home/ava/.local/share/omni 0755 ava users -"
  ];
}