1{
2 lib,
3 fetchFromGitHub,
4 buildPythonPackage,
5 pythonOlder,
6 poetry-core,
7
8 setuptools,
9 astor,
10 inquirer,
11 pyyaml,
12 rich,
13 six,
14 tokentrim,
15 wget,
16 psutil,
17 html2image,
18 send2trash,
19 ipykernel,
20 jupyter-client,
21 matplotlib,
22 toml,
23 tiktoken,
24 platformdirs,
25 pydantic,
26 google-generativeai,
27 pynput,
28 pyperclip,
29 yaspin,
30 shortuuid,
31 litellm,
32
33 nltk,
34}:
35
36buildPythonPackage rec {
37 pname = "open-interpreter";
38 version = "0.3.6";
39 pyproject = true;
40
41 disabled = pythonOlder "3.9";
42
43 src = fetchFromGitHub {
44 owner = "KillianLucas";
45 repo = "open-interpreter";
46 rev = "v${version}";
47 hash = "sha256-TeBiRylrq5CrAG9XS47Z9GlruAv7V7Nsl4QbSV55isM=";
48 };
49
50 pythonRemoveDeps = [ "git-python" ];
51
52 pythonRelaxDeps = [
53 "google-generativeai"
54 "psutil"
55 "pynput"
56 "yaspin"
57 ];
58
59 build-system = [ poetry-core ];
60
61 dependencies = [
62 setuptools
63 astor
64 inquirer
65 pyyaml
66 rich
67 six
68 tokentrim
69 wget
70 psutil
71 html2image
72 send2trash
73 ipykernel
74 jupyter-client
75 matplotlib
76 toml
77 tiktoken
78 platformdirs
79 pydantic
80 google-generativeai
81 pynput
82 pyperclip
83 yaspin
84 shortuuid
85 litellm
86
87 # marked optional in pyproject.toml but still required?
88 nltk
89 ];
90
91 pythonImportsCheck = [ "interpreter" ];
92
93 # Most tests required network access
94 doCheck = false;
95
96 meta = with lib; {
97 description = "OpenAI's Code Interpreter in your terminal, running locally";
98 homepage = "https://github.com/KillianLucas/open-interpreter";
99 license = licenses.mit;
100 changelog = "https://github.com/KillianLucas/open-interpreter/releases/tag/v${version}";
101 maintainers = with maintainers; [ happysalada ];
102 mainProgram = "interpreter";
103 };
104}