feat: add nix flake

This commit is contained in:
0xmrtt 2024-02-25 00:53:46 +01:00
parent ae761f6e7b
commit 1587918ff5
3 changed files with 210 additions and 0 deletions

View 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
View 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
View 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;
};
}
);
}