# NOTE: Use the following command to update the package # ```sh # nix-shell maintainers/scripts/update.nix --argstr commit true --arg predicate '(path: pkg: builtins.elem path [["claude-code"] ["claude-code-bin"] ["vscode-extensions" "anthropic" "claude-code"]])' # ``` { lib, stdenv, buildNpmPackage, fetchzip, versionCheckHook, writableTmpDirAsHomeHook, bubblewrap, procps, socat, }: buildNpmPackage (finalAttrs: { pname = "claude-code"; version = "2.1.34"; src = fetchzip { url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${finalAttrs.version}.tgz"; hash = "sha256-J3kltFY5nR3PsRWbW310VqD/6hhfMbVSvynv0eaIi3M="; }; npmDepsHash = "sha256-n762einDxLUUXWMsfdPVhA/kn0ywlJgFQ2ZGoEk3E68="; strictDeps = true; postPatch = '' cp ${./package-lock.json} package-lock.json # https://github.com/anthropics/claude-code/issues/15195 substituteInPlace cli.js \ --replace-fail '#!/bin/sh' '#!/usr/bin/env sh' ''; dontNpmBuild = true; env.AUTHORIZED = "1"; # `claude-code` tries to auto-update by default, this disables that functionality. # https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#environment-variables # The DEV=true env var causes claude to crash with `TypeError: window.WebSocket is not a constructor` postInstall = '' wrapProgram $out/bin/claude \ --set DISABLE_AUTOUPDATER 1 \ --set DISABLE_INSTALLATION_CHECKS 1 \ --unset DEV \ --prefix PATH : ${ lib.makeBinPath ( [ # claude-code uses [node-tree-kill](https://github.com/pkrumins/node-tree-kill) which requires procps's pgrep(darwin) or ps(linux) procps ] # the following packages are required for the sandbox to work (Linux only) ++ lib.optionals stdenv.hostPlatform.isLinux [ bubblewrap socat ] ) } ''; doInstallCheck = true; nativeInstallCheckInputs = [ writableTmpDirAsHomeHook versionCheckHook ]; versionCheckKeepEnvironment = [ "HOME" ]; passthru.updateScript = ./update.sh; meta = { description = "Agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster"; homepage = "https://github.com/anthropics/claude-code"; downloadPage = "https://www.npmjs.com/package/@anthropic-ai/claude-code"; license = lib.licenses.unfree; maintainers = with lib.maintainers; [ adeci malo markus1189 omarjatoi xiaoxiangmoe ]; mainProgram = "claude"; }; })