All checks were successful
Build AppImage / build (push) Successful in 7m52s
- update.rs: Umstellung auf Package-Registry-Manifest mit SHA256-Verify, Basic-Auth, dev/APPIMAGE/Nix-Wrapper-Modus. Liest binary_filename im Nix-Modus (AppImage laeuft auf NixOS nicht) - Nix-Wrapper-Paket (nix/default.nix): LD_LIBRARY_PATH-korrekter Launcher + Installer-Script, User-Home-Binary (writable fuer Auto-Update) - CI laedt jetzt AppImage UND natives Binary + update.json v2 (binary_filename/binary_sha256) in die Package Registry - Svelte: Store-basierter Update-Trigger, manueller Check im Settings-Panel, "Kein Update"-Dialog-Variante, expectedSha256-Param - install.sh: One-Click-Installer fuer NixOS (curl | bash) - sha2-Dep fuer Integritaets-Check des Downloads Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
Claude Desktop — NixOS-Integration
Dauerhaftes Einbinden der App ins System und funktionierendes Auto-Update. Der Trick: das Nix-Paket liefert nur einen Wrapper + Desktop-Entry, das eigentliche Binary lebt im User-Home (~/.local/share/claude-desktop/bin/), damit der Auto-Updater es ersetzen kann — der Nix-Store ist read-only.
Einmaliger Setup
1. Binary einmal nativ bauen
cd <repo>
CARGO_TARGET_DIR=/tmp/claude-target \
nix-shell shell.nix --run 'npm ci && npm run tauri build -- --bundles appimage'
Das liefert das Binary unter /tmp/claude-target/release/claude-desktop (~13 MB). Das Bundling-Fail am Ende ignorieren — das Binary ist fertig.
2. Nix-Paket in die System-Config einbinden
Variante A — configuration.nix (system-weit):
{ pkgs, ... }:
{
environment.systemPackages = [
(import /pfad/zum/claude-desktop/nix/default.nix { inherit pkgs; })
];
}
Dann sudo nixos-rebuild switch.
Variante B — home-manager (nur eigener User):
{ pkgs, ... }:
{
home.packages = [
(import /pfad/zum/claude-desktop/nix/default.nix { inherit pkgs; })
];
}
Dann home-manager switch.
Variante C — nur testen ohne System-Config:
nix-build nix/default.nix
nix-env -i ./result
3. Binary in den User-Home kopieren
claude-desktop-install
Macht cp /tmp/claude-target/release/claude-desktop ~/.local/share/claude-desktop/bin/. Das Paket liefert diesen Helper mit.
4. Starten
- Aus dem KDE/GNOME-Menü: „Claude Desktop"
- Oder im Terminal:
claude-desktop
Wie der Auto-Update in diesem Setup funktioniert
- Der Launcher setzt
CLAUDE_DESKTOP_NIX_WRAPPER=1undCLAUDE_DESKTOP_BIN=$HOME/.local/share/claude-desktop/bin/claude-desktopals Env-Vars apply_updatein der App erkennt diesen Modus und überschreibt das User-Binary statt$APPIMAGE- Der Rename-Trick klappt, weil
~/.local/shareschreibbar ist - Nach Update-Apply macht Tauri
app.restart()— der Nix-Wrapper startet das neue Binary mit denselben LD-Libs
Bekannte Einschränkungen (v1)
- Auto-Update lädt aktuell nur das AppImage aus der Package Registry, das im Nix-Modus nicht direkt läuft. Kurzfristig wird die heruntergeladene Datei ins User-Binary-Ziel geschrieben → beim Neustart schlägt sie fehl. Workaround: bei Update-Hinweis manuell neu bauen:
git pull; npm run tauri build; claude-desktop-install. - Saubere Lösung (geplant): CI lädt zusätzlich ein natives Binary in die Package Registry (extract aus dem AppImage-squashfs),
update.rsnimmt je nach Modus AppImage oder Binary.
Deinstallation
# Aus System-Config entfernen (configuration.nix/home.nix bearbeiten, dann switch)
# User-Binary + Daten loeschen:
rm -rf ~/.local/share/claude-desktop
rm -rf ~/.local/share/de.alles-watt-laeuft.claude-desktop
Debugging
# Sehen was der Launcher macht
bash -x $(which claude-desktop)
# Pruefen ob das User-Binary existiert & ausfuehrbar ist
ls -l ~/.local/share/claude-desktop/bin/claude-desktop
# Library-Pfad der wrapped-Version inspizieren
cat $(which claude-desktop)