{...}: 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 -" ]; }