summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Omni/Dev/Beryllium/Ava.nix32
1 files changed, 31 insertions, 1 deletions
diff --git a/Omni/Dev/Beryllium/Ava.nix b/Omni/Dev/Beryllium/Ava.nix
index e6254ea..f0765cd 100644
--- a/Omni/Dev/Beryllium/Ava.nix
+++ b/Omni/Dev/Beryllium/Ava.nix
@@ -1,6 +1,36 @@
{...}: 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";
@@ -22,7 +52,7 @@ in {
EnvironmentFile = "/run/secrets/ava.env";
- ExecStart = "${avaPkg}/bin/ava";
+ ExecStart = "${avaWithTools}/bin/ava";
StandardOutput = "journal";
StandardError = "journal";