diff --git a/packages/qwen-code/default.nix b/packages/qwen-code/default.nix index 3e7aed1..ef6a23d 100644 --- a/packages/qwen-code/default.nix +++ b/packages/qwen-code/default.nix @@ -11,16 +11,18 @@ }: buildNpmPackage (finalAttrs: { pname = "qwen-code"; - version = "0.4.0-nightly.20251209.a6a57233"; + version = "0.16.0-preview.0"; src = fetchFromGitHub { owner = "QwenLM"; repo = "qwen-code"; tag = "v${finalAttrs.version}"; - hash = "sha256-s9m1IN6jDDbNPr/vI/UcrauYPiyQTDODarLP3EvnG3Y="; + hash = "sha256-UAJNw1RjHRoZqtgIWJ1dOTWnE9LoBpfJCAM0Jay+VPI="; }; - npmDepsHash = "sha256-ngAjCCoHLPZ+GgBRmAKbRYaF7l+RK3YGf1kEkwFbyQg="; + npmDepsHash = "sha256-uJtOeNnhbGE7EzTwkNbg2EHLonjHCbdPH5rcV2bgQUw="; + makeCacheWritable = true; + npmFlags = [ "--legacy-peer-deps" ]; nativeBuildInputs = [ jq @@ -34,8 +36,13 @@ buildNpmPackage (finalAttrs: { libsecret ]; - postPatch = '' + prePatch = '' + ${jq}/bin/jq '.dependencies."iconv-lite" = "^0.7.0"' \ + packages/core/package.json > packages/core/package.json.tmp + mv packages/core/package.json.tmp packages/core/package.json + ${jq}/bin/jq ' + .packages."packages/core".dependencies."iconv-lite" = "^0.7.0" | del(.packages."node_modules/node-pty") | del(.packages."node_modules/@lydell/node-pty") | del(.packages."node_modules/@lydell/node-pty-darwin-arm64") | @@ -62,9 +69,26 @@ buildNpmPackage (finalAttrs: { ' package-lock.json > package-lock.json.tmp && mv package-lock.json.tmp package-lock.json ''; + preBuild = '' + mkdir -p node_modules/@lydell/node-pty + printf '%s\n' \ + 'export interface IPty {' \ + ' pid: number;' \ + ' onData(callback: (data: string) => void): void;' \ + ' onExit(callback: (event: { exitCode: number; signal?: number }) => void): void;' \ + ' kill(signal?: string): void;' \ + ' write(data: string): void;' \ + ' resize(columns: number, rows: number): void;' \ + ' removeListener(event: string, listener: (...args: unknown[]) => void): void;' \ + ' exitCode?: number;' \ + '}' \ + > node_modules/@lydell/node-pty/node-pty.d.ts + ''; + buildPhase = '' runHook preBuild npm run generate + npm run build npm run bundle runHook postBuild ''; @@ -75,6 +99,14 @@ buildNpmPackage (finalAttrs: { cp -r dist/* $out/share/qwen-code/ npm prune --production cp -r node_modules $out/share/qwen-code/ + if [ -d $out/share/qwen-code/vendor/ripgrep ]; then + find $out/share/qwen-code/vendor/ripgrep -type f -name rg -exec sh -c ' + for rg; do + rm "$rg" + ln -s ${ripgrep}/bin/rg "$rg" + done + ' sh {} + + fi find $out/share/qwen-code/node_modules -type l -delete || true patchShebangs $out/share/qwen-code ln -s $out/share/qwen-code/cli.js $out/bin/qwen