No description
  • Nix 50.7%
  • Python 36.9%
  • Shell 12.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-01 17:53:48 +09:00
.gitignore Initial commit 2026-10-01 17:53:48 +09:00
flake.lock Initial commit 2026-10-01 17:53:48 +09:00
flake.nix Initial commit 2026-10-01 17:53:48 +09:00
package.nix Initial commit 2026-10-01 17:53:48 +09:00
patch-asar.py Initial commit 2026-10-01 17:53:48 +09:00
README.md Initial commit 2026-10-01 17:53:48 +09:00
sources.json Initial commit 2026-10-01 17:53:48 +09:00
update.sh Initial commit 2026-10-01 17:53:48 +09:00

Claude Desktop for NixOS

Nix flake packaging Anthropic's official Linux build of Claude Desktop (the .deb from downloads.claude.ai) for x86_64-linux and aarch64-linux.

Usage

Try it without installing:

nix run .

In a NixOS flake configuration:

inputs.claude-desktop = {
  url = "path:/home/user/Workspace/Projects/ClaudeDesktop";
  inputs.nixpkgs.follows = "nixpkgs";
};

# In a module:
nixpkgs.overlays = [inputs.claude-desktop.overlays.default];
environment.systemPackages = [pkgs.claude-desktop];

The overlay respects the host's allowUnfree. The packages output only allows this one unfree package.

Options

pkgs.claude-desktop.override { ... } accepts:

  • withCowork (default true): ships QEMU, OVMF and virtiofsd for the Cowork tab. Cowork also needs /dev/kvm and /dev/vhost-vsock to be accessible, usually by being in the kvm group.
  • passwordStore (default "gnome-libsecret"): Chromium keyring backend. Use "kwallet6" on Plasma, or null to let Chromium decide.

Updating

The app does not update itself on Linux. Run ./update.sh to point sources.json at the newest release in Anthropic's apt repository, then rebuild.

Packaging notes

  • Cowork looks for its firmware and virtiofsd at fixed Debian paths. patch-asar.py rewrites those to store paths inside app.asar, and the build fails if the strings disappear in a future release.
  • The Claude Code tab downloads its own CLI binary at runtime, which needs programs.nix-ld.enable = true if that binary is dynamically linked.