claude-code-router: init at 1.0.59
This commit is contained in:
115
pkgs/by-name/cl/claude-code-router/package.nix
Normal file
115
pkgs/by-name/cl/claude-code-router/package.nix
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
buildNpmPackage,
|
||||
esbuild,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
makeBinaryWrapper,
|
||||
nodejs_24,
|
||||
pnpm_9,
|
||||
versionCheckHook,
|
||||
}:
|
||||
let
|
||||
buildNpmPackage' = buildNpmPackage.override { nodejs = nodejs_24; };
|
||||
in
|
||||
buildNpmPackage' (finalAttrs: {
|
||||
pname = "claude-code-router";
|
||||
version = "1.0.59";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "musistudio";
|
||||
repo = "claude-code-router";
|
||||
rev = "4617d66492cf37539d9567044f6ffec7844af2ee";
|
||||
hash = "sha256-LC1JIOLaNLYNIIDofgFj+is4mwLjRjD3aAOt/nHRUmo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# pnpm install --fix-lockfile --lockfile-only
|
||||
./pnpm-lock.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/cli.ts \
|
||||
--replace-fail '"node"' '"${lib.getExe nodejs_24}"'
|
||||
'';
|
||||
|
||||
npmDeps = null;
|
||||
pnpmDeps = pnpm_9.fetchDeps {
|
||||
inherit (finalAttrs) pname src patches;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-aPAY7JhzzYQero8f0/w3jtf5IwpDnoZCXGQKzRbj9aU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
esbuild
|
||||
makeBinaryWrapper
|
||||
pnpm_9.configHook
|
||||
];
|
||||
|
||||
npmConfigHook = pnpm_9.configHook;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
esbuild src/cli.ts --bundle --platform=node --outfile=dist/cli.js
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/claude-code-router/dist
|
||||
cp dist/cli.js $out/lib/claude-code-router/dist/
|
||||
cp node_modules/tiktoken/tiktoken_bg.wasm $out/lib/claude-code-router/dist/
|
||||
cp ${finalAttrs.passthru.ui}/index.html $out/lib/claude-code-router/dist/
|
||||
|
||||
mkdir -p $out/bin
|
||||
makeBinaryWrapper ${lib.getExe nodejs_24} $out/bin/ccr \
|
||||
--add-flags "$out/lib/claude-code-router/dist/cli.js"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "-v";
|
||||
|
||||
passthru.ui = buildNpmPackage' (finalAttrs': {
|
||||
pname = finalAttrs.pname + "-ui";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs'.src.name}/ui";
|
||||
|
||||
npmDeps = null;
|
||||
pnpmDeps = pnpm_9.fetchDeps {
|
||||
inherit (finalAttrs') pname src sourceRoot;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-ZjYLUec9EADQmKfju8hMbq0y4f1TDVwjbe3yw8Gh4Ac=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pnpm_9.configHook
|
||||
];
|
||||
|
||||
npmConfigHook = pnpm_9.configHook;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp dist/index.html $out/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
});
|
||||
|
||||
meta = {
|
||||
description = "Tool to route Claude Code requests to different models and customize any request";
|
||||
homepage = "https://github.com/musistudio/claude-code-router";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
prince213
|
||||
];
|
||||
mainProgram = "ccr";
|
||||
};
|
||||
})
|
||||
90
pkgs/by-name/cl/claude-code-router/pnpm-lock.patch
Normal file
90
pkgs/by-name/cl/claude-code-router/pnpm-lock.patch
Normal file
@@ -0,0 +1,90 @@
|
||||
--- a/pnpm-lock.yaml
|
||||
+++ b/pnpm-lock.yaml
|
||||
@@ -356,6 +356,12 @@
|
||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
+ '@types/mute-stream@0.0.4':
|
||||
+ resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==}
|
||||
+
|
||||
+ '@types/node@22.18.9':
|
||||
+ resolution: {integrity: sha512-5yBtK0k/q8PjkMXbTfeIEP/XVYnz1R9qZJ3yUicdEW7ppdDJfe+MqXEhpqDL3mtn4Wvs1u0KLEG0RXzCgNpsSg==}
|
||||
+
|
||||
'@types/node@24.7.0':
|
||||
resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==}
|
||||
|
||||
@@ -904,6 +910,9 @@
|
||||
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
+ safer-buffer@2.1.2:
|
||||
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||
+
|
||||
secure-json-parse@4.1.0:
|
||||
resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
|
||||
|
||||
@@ -1026,11 +1035,18 @@
|
||||
tr46@0.0.3:
|
||||
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
||||
|
||||
+ type-fest@0.21.3:
|
||||
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
||||
+ engines: {node: '>=10'}
|
||||
+
|
||||
typescript@5.9.3:
|
||||
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
+ undici-types@6.21.0:
|
||||
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
||||
+
|
||||
undici-types@7.14.0:
|
||||
resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==}
|
||||
|
||||
@@ -1253,7 +1269,7 @@
|
||||
'@inquirer/figures': 1.0.13
|
||||
'@inquirer/type': 2.0.0
|
||||
'@types/mute-stream': 0.0.4
|
||||
- '@types/node': 22.18.8
|
||||
+ '@types/node': 22.18.9
|
||||
'@types/wrap-ansi': 3.0.0
|
||||
ansi-escapes: 4.3.2
|
||||
cli-width: 4.1.0
|
||||
@@ -1386,6 +1402,14 @@
|
||||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.19.1
|
||||
|
||||
+ '@types/mute-stream@0.0.4':
|
||||
+ dependencies:
|
||||
+ '@types/node': 24.7.0
|
||||
+
|
||||
+ '@types/node@22.18.9':
|
||||
+ dependencies:
|
||||
+ undici-types: 6.21.0
|
||||
+
|
||||
'@types/node@24.7.0':
|
||||
dependencies:
|
||||
undici-types: 7.14.0
|
||||
@@ -1956,6 +1980,8 @@
|
||||
|
||||
safe-stable-stringify@2.5.0: {}
|
||||
|
||||
+ safer-buffer@2.1.2: {}
|
||||
+
|
||||
secure-json-parse@4.1.0: {}
|
||||
|
||||
semver@5.7.2: {}
|
||||
@@ -2054,8 +2080,12 @@
|
||||
|
||||
tr46@0.0.3: {}
|
||||
|
||||
+ type-fest@0.21.3: {}
|
||||
+
|
||||
typescript@5.9.3: {}
|
||||
|
||||
+ undici-types@6.21.0: {}
|
||||
+
|
||||
undici-types@7.14.0: {}
|
||||
|
||||
undici@7.16.0: {}
|
||||
Reference in New Issue
Block a user