{ lib, buildNpmPackage, fetchzip, ripgrep, makeWrapper, testers, }: buildNpmPackage (finalAttrs: { pname = "amp-cli"; version = "0.0.1748865683-g71e54e"; src = fetchzip { url = "https://registry.npmjs.org/@sourcegraph/amp/-/amp-${finalAttrs.version}.tgz"; hash = "sha256-kkQKjw1SzDjV8/206i+NUyxeDhZ/35My9gyXRe/U7I8="; }; postPatch = '' cp ${./package-lock.json} package-lock.json # Create a minimal package.json with just the dependency we need (without devDependencies) cat > package.json < bin/amp-wrapper.js << EOF #!/usr/bin/env node require('@sourcegraph/amp/dist/amp.js') EOF chmod +x bin/amp-wrapper.js ''; npmDepsHash = "sha256-yeZ5UCVUCbVjpYTYYN5mI6eCkShtnCKxumjpb5GRCws="; propagatedBuildInputs = [ ripgrep ]; nativeBuildInputs = [ makeWrapper ]; npmFlags = [ "--no-audit" "--no-fund" "--ignore-scripts" ]; # Disable build and prune steps dontNpmBuild = true; postInstall = '' wrapProgram $out/bin/amp \ --prefix PATH : ${lib.makeBinPath [ ripgrep ]} ''; passthru.updateScript = ./update.sh; passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; command = "HOME=$(mktemp -d) amp --version"; }; meta = { description = "CLI for Amp, an agentic coding agent in research preview from Sourcegraph"; homepage = "https://ampcode.com/"; downloadPage = "https://www.npmjs.com/package/@sourcegraph/amp"; license = lib.licenses.unfree; maintainers = with lib.maintainers; [ keegancsmith owickstrom ]; mainProgram = "amp"; }; })