diff options
Diffstat (limited to 'Omni/Dev/Beryllium/Ava.nix')
| -rw-r--r-- | Omni/Dev/Beryllium/Ava.nix | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Omni/Dev/Beryllium/Ava.nix b/Omni/Dev/Beryllium/Ava.nix new file mode 100644 index 0000000..f0765cd --- /dev/null +++ b/Omni/Dev/Beryllium/Ava.nix @@ -0,0 +1,81 @@ +{...}: let + bild = import ../../Bild.nix {}; + avaPkg = bild.run ../../Ava.hs; + + # Python environment for Ava's python_exec tool + avaPython = bild.python.pythonWith (p: [ + p.requests # HTTP requests + p.beautifulsoup4 # HTML/XML parsing + p.lxml # Fast XML/HTML parser + p.pandas # Data analysis + p.numpy # Numerical computing + p.pyyaml # YAML parsing + p.python-dateutil # Date utilities + ]); + + # Wrap ava binary with tools in PATH + avaWithTools = bild.stdenv.mkDerivation { + name = "ava-wrapped"; + buildInputs = [bild.makeWrapper]; + phases = ["installPhase"]; + installPhase = '' + mkdir -p $out/bin + makeWrapper ${avaPkg}/bin/ava $out/bin/ava \ + --prefix PATH : ${bild.lib.makeBinPath [ + avaPython + bild.pkgs.jq + bild.pkgs.ripgrep + bild.pkgs.coreutils + bild.pkgs.git + bild.pkgs.sqlite + ]} + ''; + }; +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 = "${avaWithTools}/bin/ava"; + + StandardOutput = "journal"; + StandardError = "journal"; + + 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 -" + ]; +} |
