summaryrefslogtreecommitdiff
path: root/Omni/Dev/Packages.nix
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-25 17:46:45 -0500
committerBen Sima <ben@bensima.com>2025-12-25 17:46:45 -0500
commitc73442d776b3b4889b1f7985f776d8310c6c4b7c (patch)
treebf0de5f641a4020546d6f19c9686ecf343ea55b1 /Omni/Dev/Packages.nix
parent7c9e32f4dee52433911b7e82a72566dc8b5b5708 (diff)
Omni/Dev: convert Ava to dynamic deployment
- Create Omni/Dev/Packages.nix with ava, deployer, deploy-manifest packages - Add biz-deployer service to Beryllium.nix - Remove static systemd service from Ava.nix (keep user/dirs setup) Ava is now deployed via the mini-PaaS system rather than being a static NixOS service. This enables fast Ava updates without full NixOS rebuilds - just build, push closure, update manifest. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'Omni/Dev/Packages.nix')
-rw-r--r--Omni/Dev/Packages.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/Omni/Dev/Packages.nix b/Omni/Dev/Packages.nix
new file mode 100644
index 0000000..bb45d61
--- /dev/null
+++ b/Omni/Dev/Packages.nix
@@ -0,0 +1,60 @@
+# Build Dev packages independently, outside NixOS context.
+#
+# This file builds packages for Beryllium and returns them as an attribute set.
+# The NixOS config (Beryllium.nix) will accept these as inputs rather than
+# building them during OS evaluation.
+#
+# Usage:
+# nix-build Omni/Dev/Packages.nix # builds all packages
+# nix-build Omni/Dev/Packages.nix -A ava # builds one package
+{bild ? import ../Bild.nix {}}: let
+ nixpkgs = import ../Bild/Nixpkgs.nix;
+ pkgs = nixpkgs.nixos-24_11;
+
+ # Python environment for Ava's python_exec tool
+ avaPython = bild.python.pythonWith (p: [
+ p.requests # HTTP requests
+ p.httpx # Async HTTP
+ p.beautifulsoup4 # HTML/XML parsing
+ p.lxml # Fast XML/HTML parser
+ p.pandas # Data analysis
+ p.numpy # Numerical computing
+ p.pillow # Image processing
+ p.pyyaml # YAML parsing
+ p.python-dateutil # Date utilities
+ ]);
+
+ avaPkg = bild.run ../Ava.hs;
+
+ # Wrapped ava with tools in PATH
+ ava = 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
+ bild.pkgs.ffmpeg
+ bild.pkgs.bash
+ pkgs.curl
+ pkgs.pandoc
+ pkgs.imagemagick
+ pkgs.csvkit
+ pkgs.openai-whisper-cpp
+ pkgs.direnv
+ pkgs.nix
+ ]}
+ '';
+ };
+in {
+ inherit ava;
+ deployer = bild.run ../Deploy/Deployer.hs;
+ deploy-manifest = bild.run ../Deploy/Manifest.hs;
+}