feat: add nix flake
This commit is contained in:
parent
ae761f6e7b
commit
1587918ff5
76
0001-remove-gpt4all-support.patch
Normal file
76
0001-remove-gpt4all-support.patch
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
diff --git a/src/main.py b/src/main.py
|
||||||
|
index 79f5401..f82cd0f 100644
|
||||||
|
--- a/src/main.py
|
||||||
|
+++ b/src/main.py
|
||||||
|
@@ -35,7 +35,6 @@ from .constants import app_id
|
||||||
|
from .providers import PROVIDERS
|
||||||
|
|
||||||
|
import json
|
||||||
|
-from gpt4all import GPT4All
|
||||||
|
import os
|
||||||
|
|
||||||
|
user_config_dir = os.environ.get(
|
||||||
|
@@ -306,15 +305,7 @@ class BavarderApplication(Adw.Application):
|
||||||
|
def setup_chat(self):
|
||||||
|
if not self.models:
|
||||||
|
self.list_models()
|
||||||
|
-
|
||||||
|
- if not self.models:
|
||||||
|
- return False
|
||||||
|
- else:
|
||||||
|
- if self.model is None:
|
||||||
|
- if self.model_name not in self.models:
|
||||||
|
- self.download_model(self.model_name)
|
||||||
|
- self.model = GPT4All(self.model_name, model_path=model_path)
|
||||||
|
- return True
|
||||||
|
+ return bool(self.models)
|
||||||
|
|
||||||
|
def download_model(self, model=None):
|
||||||
|
if model:
|
||||||
|
diff --git a/src/views/preferences_window.py b/src/views/preferences_window.py
|
||||||
|
index e057aff..73e4ea3 100644
|
||||||
|
--- a/src/views/preferences_window.py
|
||||||
|
+++ b/src/views/preferences_window.py
|
||||||
|
@@ -5,8 +5,6 @@ from bavarder.providers.provider_item import Provider
|
||||||
|
from bavarder.widgets.model_item import Model
|
||||||
|
from bavarder.widgets.download_row import DownloadRow
|
||||||
|
|
||||||
|
-from gpt4all import GPT4All
|
||||||
|
-
|
||||||
|
@Gtk.Template(resource_path=f"{rootdir}/ui/preferences_window.ui")
|
||||||
|
class PreferencesWindow(Adw.PreferencesWindow):
|
||||||
|
__gtype_name__ = "Preferences"
|
||||||
|
@@ -34,7 +32,6 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||||
|
def setup(self):
|
||||||
|
self.setup_signals()
|
||||||
|
self.load_providers()
|
||||||
|
- self.load_models()
|
||||||
|
|
||||||
|
self.bot_name.set_text(self.app.bot_name)
|
||||||
|
self.user_name.set_text(self.app.user_name)
|
||||||
|
@@ -47,25 +44,6 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||||
|
p = Provider(self.app, self, provider)
|
||||||
|
self.provider_group.add(p)
|
||||||
|
|
||||||
|
- def load_models(self):
|
||||||
|
- self.general_page.remove(self.model_group)
|
||||||
|
- self.model_group = Adw.PreferencesGroup()
|
||||||
|
- self.model_group.set_title(_("Models"))
|
||||||
|
-
|
||||||
|
- for model in self.app.models:
|
||||||
|
- p = Model(self.app, self, model)
|
||||||
|
- self.model_group.add(p)
|
||||||
|
- else:
|
||||||
|
- self.no_models_available = Adw.ExpanderRow()
|
||||||
|
- self.no_models_available.set_title(_("List of available models"))
|
||||||
|
-
|
||||||
|
- for model in GPT4All.list_models():
|
||||||
|
- self.no_models_available.add_row(DownloadRow(self.app, self, model))
|
||||||
|
-
|
||||||
|
- self.model_group.add(self.no_models_available)
|
||||||
|
-
|
||||||
|
- self.general_page.add(self.model_group)
|
||||||
|
-
|
||||||
|
@Gtk.Template.Callback()
|
||||||
|
def clear_all_chats_clicked(self, widget, *args):
|
||||||
|
dialog = Adw.MessageDialog(
|
61
flake.lock
Normal file
61
flake.lock
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708751719,
|
||||||
|
"narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
73
flake.nix
Normal file
73
flake.nix
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
description = "Bavarder";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
systems = ["aarch64-linux" "x86_64-linux"];
|
||||||
|
in
|
||||||
|
flake-utils.lib.eachSystem systems (
|
||||||
|
system: let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
bavarder = pkgs.python3Packages.buildPythonApplication rec {
|
||||||
|
pname = "bavarder";
|
||||||
|
version = self.rev or "dirty";
|
||||||
|
pyproject = false;
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Removes gpt4all support. It would be lots of work to package it properly
|
||||||
|
# and we already have ollama with working ROCm + CUDA in nixpkgs.
|
||||||
|
./0001-remove-gpt4all-support.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
appstream-glib
|
||||||
|
blueprint-compiler
|
||||||
|
desktop-file-utils
|
||||||
|
gettext
|
||||||
|
gtk4
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
wrapGAppsHook4
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
gtksourceview5
|
||||||
|
libadwaita
|
||||||
|
libportal
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||||
|
babel
|
||||||
|
gst-python
|
||||||
|
lxml
|
||||||
|
openai
|
||||||
|
pygobject3
|
||||||
|
requests
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
formatter = pkgs.alejandra;
|
||||||
|
|
||||||
|
checks.bavarder = bavarder;
|
||||||
|
packages.default = bavarder;
|
||||||
|
|
||||||
|
devShells.default = pkgs.mkShell.override {stdenv = pkgs.python3Packages.stdenv;} {
|
||||||
|
inherit (bavarder) nativeBuildInputs buildInputs propagatedBuildInputs;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in a new issue