summaryrefslogtreecommitdiff
path: root/Omni/Dev/Packages.nix
blob: bb45d617bbac38240d81fc62efbf4da6fe4b4c03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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;
}