Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 python3Packages,
4 fetchFromGitHub,
5 meson,
6 ninja,
7 pkg-config,
8 wrapGAppsHook4,
9 gobject-introspection,
10 desktop-file-utils,
11 libadwaita,
12 vte-gtk4,
13 gsettings-desktop-schemas,
14 gtksourceview5,
15 webkitgtk_6_0,
16 lsb-release,
17 bash,
18 ffmpeg,
19 nix-update-script,
20}:
21
22let
23 version = "1.0.0";
24in
25python3Packages.buildPythonApplication {
26 pname = "newelle";
27 inherit version;
28 pyproject = false; # uses meson
29
30 src = fetchFromGitHub {
31 owner = "qwersyk";
32 repo = "Newelle";
33 tag = version;
34 hash = "sha256-9Tjp1RZMEdJWLjcy2AjOy3Rw7Q1ulFeZU4y+rMXSmFA=";
35 };
36
37 postPatch = ''
38 substituteInPlace src/utility/pip.py \
39 --replace-fail "# Manage pip path locking" "return None"
40 '';
41
42 nativeBuildInputs = [
43 meson
44 ninja
45 gobject-introspection
46 wrapGAppsHook4
47 desktop-file-utils
48 pkg-config
49 ];
50
51 buildInputs = [
52 libadwaita
53 vte-gtk4
54 gsettings-desktop-schemas
55 gtksourceview5
56 webkitgtk_6_0
57 ];
58
59 dependencies = with python3Packages; [
60 pygobject3
61 libxml2
62 pydub
63 gtts
64 speechrecognition
65 numpy
66 matplotlib
67 pylatexenc
68 pyaudio
69 pip-install-test
70 newspaper3k
71 tiktoken
72 openai
73 ollama
74 llama-index-core
75 llama-index-readers-file
76 google-genai
77 anthropic
78 ];
79
80 strictDeps = true;
81
82 postInstallCheck = ''
83 mesonCheckPhase
84 '';
85
86 dontWrapGApps = true;
87
88 makeWrapperArgs = [
89 "\${gappsWrapperArgs[@]}"
90 "--prefix PATH : ${
91 lib.makeBinPath [
92 lsb-release
93 bash
94 ffmpeg
95 ]
96 }"
97 ];
98
99 passthru.updateScript = nix-update-script { };
100
101 meta = {
102 homepage = "https://github.com/qwersyk/Newelle";
103 description = "Ultimate Virtual Assistant";
104 mainProgram = "newelle";
105 license = lib.licenses.gpl3Plus;
106 platforms = lib.platforms.linux;
107 maintainers = with lib.maintainers; [ ];
108 };
109}