summaryrefslogtreecommitdiff
path: root/flake.nix
blob: 843f9c5ddda8ca3f1a5ddeaaca4fb70dedc1b524 (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
{
  description = "slopbot - Zulip bot with stock price lookups and LLM replies";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    agentd = {
      url = "git+file:///home/ben/src/bsima/agentd";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, agentd }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};

      pythonEnv = pkgs.python3.withPackages (ps: [
        ps.zulip
        ps.yfinance
        ps.openai
        ps.requests
      ]);

      agent = pkgs.rustPlatform.buildRustPackage {
        pname = "agent";
        version = "0.1.0";
        src = agentd;
        cargoLock.lockFile = "${agentd}/Cargo.lock";
        cargoBuildFlags = [ "-p" "agent" ];
        doCheck = false;
      };
    in
    {
      devShells.${system}.default = pkgs.mkShell {
        buildInputs = [ pythonEnv agent ];
        shellHook = ''
          echo "slopbot dev shell ready"
          echo "Run: python main.py"
        '';
      };

      packages.${system} = rec {
        default = slopbot;
        slopbot = pkgs.writeShellScriptBin "slopbot" ''
          cd /home/ben/src/bsima/slopbot
          export PATH=${agent}/bin:$PATH
          export SLOPBOT_AGENT=${agent}/bin/agent
          exec ${pythonEnv}/bin/python ${./main.py}
        '';
        inherit agent;
      };
    };
}