summaryrefslogtreecommitdiff
path: root/Omni/Dev/Packages.nix
diff options
context:
space:
mode:
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;
+}