Files
claude-desktop-debian/flake.nix
Alexis Williams caa58cae8d feat: add node-pty Nix derivation for terminal support
Build node-pty from source using buildNpmPackage so Claude Desktop's
terminal features (Claude Code) work on NixOS. The derivation handles
three issues with the upstream package:

- Strips macOS-only fsevents reference from package-lock.json so
  npm ci doesn't fail on lock/json mismatch
- Runs both tsc (TypeScript to JS) and node-gyp rebuild (native addon)
- Copies build/Release/pty.node into output since npmInstallHook
  doesn't include native addons

Also wires node-pty into claude-desktop.nix via --node-pty-dir flag
and updates the flake overlay to expose it.

Co-Authored-By: Claude <claude@anthropic.com>
2026-02-28 15:14:33 -08:00

42 lines
1.1 KiB
Nix

{
description = "Claude Desktop for Linux";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
};
outputs = inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "aarch64-linux" ];
perSystem = { pkgs, ... }: let
node-pty = pkgs.callPackage ./nix/node-pty.nix { };
claude-desktop = pkgs.callPackage ./nix/claude-desktop.nix {
inherit node-pty;
};
in {
packages = {
inherit claude-desktop;
claude-desktop-fhs = pkgs.callPackage ./nix/fhs.nix {
inherit claude-desktop;
};
default = claude-desktop;
};
};
flake = {
overlays.default = final: prev: let
node-pty = final.callPackage ./nix/node-pty.nix { };
in {
claude-desktop = final.callPackage ./nix/claude-desktop.nix {
inherit node-pty;
};
claude-desktop-fhs = final.callPackage ./nix/fhs.nix {
claude-desktop = final.claude-desktop;
};
};
};
};
}