# `claude-code` without the `--prefix LD_LIBRARY_PATH` alsa-lib entry # nixpkgs adds to its wrapper. The wrapper exports the variable into # claude's own environment, so every shell claude spawns inherits an # alsa-lib `lib` dir that shadows the libraries newer nixpkgs binaries # (headless chromium) were built against. Agents have no audio device, # so alsa-lib is not needed. Every other wrapper flag stays. # # nixpkgs gives no switch for it (`alsa-lib` only feeds that one # `makeLibraryPath`), so the line is dropped from `installPhase`. A # package whose `installPhase` has no such line comes back unchanged. lib: claudeCode: let marker = "--prefix LD_LIBRARY_PATH"; dropMarker = phase: lib.concatStringsSep "\n" ( builtins.filter (l: !(lib.hasInfix marker l)) (lib.splitString "\n" phase) ); in if lib.hasInfix marker (claudeCode.installPhase or "") then claudeCode.overrideAttrs (old: { installPhase = dropMarker old.installPhase; }) else claudeCode