claude-desktop/shell.nix
Eddy f287514af5
Some checks failed
Build AppImage / build (push) Has been cancelled
Phase 2.2: Lokales Voice — whisper-cli + piper-tts, Gesprächsmodus mit VAD
OpenAI komplett entfernt. Voice läuft jetzt offline mit lokalen Binaries:
- whisper-cli (whisper-cpp 1.8.3) für Speech-to-Text
- piper-tts mit Thorsten-Stimme (Deutsch) für Text-to-Speech
- GStreamer + PipeWire in shell.nix für WebKitGTK Mikrofon-Zugriff
- VoicePanel: Echtgespräch mit VAD-Stille-Erkennung, Interrupt, Loop
- Models in .gitignore (~250MB)

[appimage]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 08:48:03 +02:00

94 lines
2.4 KiB
Nix

{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
# Rust Toolchain aus nixpkgs
rustc
cargo
rustfmt
clippy
gcc
pkg-config
openssl
# Tauri-Abhängigkeiten für Linux
webkitgtk_4_1
libappindicator-gtk3
librsvg
# GTK/GLib für Tauri
gtk3
glib
cairo
pango
gdk-pixbuf
# Zusätzliche Abhängigkeiten
libsoup_3
at-spi2-atk
# Node.js (falls nicht global)
nodejs_22
# Phase 2.2: Lokales Voice (kostenlos, offline)
whisper-cpp # Speech-to-Text (whisper-cli Binary)
piper-tts # Text-to-Speech (deutsche Stimme: Thorsten)
alsa-lib
ffmpeg
# GStreamer für WebKitGTK Mikrofon-Zugriff (getUserMedia)
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
pipewire # PipeWire-Support für Audio-Capture
# Zusätzliche Bibliotheken für Tauri CLI
bzip2
zlib
xz
zstd
];
# Umgebungsvariablen für Rust/Tauri
shellHook = ''
export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [
pkgs.webkitgtk_4_1
pkgs.libappindicator-gtk3
pkgs.gtk3
pkgs.cairo
pkgs.pango
pkgs.gdk-pixbuf
pkgs.librsvg
pkgs.libsoup_3
pkgs.bzip2
pkgs.zlib
pkgs.xz
pkgs.zstd
pkgs.openssl
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-bad
pkgs.pipewire
pkgs.alsa-lib
]}:$LD_LIBRARY_PATH"
# GStreamer Plugin-Pfade für WebKitGTK Mikrofon-Zugriff
export GST_PLUGIN_PATH="${pkgs.lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-bad
pkgs.gst_all_1.gst-plugins-ugly
]}''${GST_PLUGIN_PATH:+:$GST_PLUGIN_PATH}"
echo "🦀 Claude Desktop Entwicklungsumgebung geladen"
echo " Rust: $(rustc --version 2>/dev/null || echo 'nicht gefunden')"
echo " Cargo: $(cargo --version 2>/dev/null || echo 'nicht gefunden')"
echo " Node: $(node --version 2>/dev/null || echo 'nicht gefunden')"
echo " GStreamer: $(gst-inspect-1.0 --version 2>/dev/null | head -1 || echo 'nicht gefunden')"
'';
}