diff --git a/pkgs/codexbar-cli/default.nix b/pkgs/codexbar-cli/default.nix new file mode 100644 index 0000000..6606c63 --- /dev/null +++ b/pkgs/codexbar-cli/default.nix @@ -0,0 +1,88 @@ +{ + # keep-sorted start + autoPatchelfHook, + curl, + fetchurl, + lib, + libxml2_13, + sqlite, + stdenv, + stdenvNoCC, + # keep-sorted end +}: let + inherit (lib) getLib; + inherit + (builtins) + # keep-sorted start + fromJSON + readFile + # keep-sorted end + ; + + pname = "codexbar-cli"; + release = fromJSON (readFile ./release.json); + inherit (release) version; + + assets = { + # keep-sorted start + aarch64-linux = "CodexBarCLI-v${version}-linux-aarch64.tar.gz"; + x86_64-linux = "CodexBarCLI-v${version}-linux-x86_64.tar.gz"; + # keep-sorted end + }; + + system = stdenvNoCC.hostPlatform.system; + asset = assets.${system} or (throw "${pname} is only packaged for x86_64-linux and aarch64-linux"); +in + stdenvNoCC.mkDerivation { + inherit + # keep-sorted start + pname + version + # keep-sorted end + # keep-sorted end + ; + + src = fetchurl { + url = "https://github.com/steipete/CodexBar/releases/download/v${version}/${asset}"; + hash = release.hashes.${system}; + }; + + sourceRoot = "."; + + nativeBuildInputs = [autoPatchelfHook]; + buildInputs = + map getLib [ + # keep-sorted start + curl + libxml2_13 + sqlite + # keep-sorted end + ] + ++ [stdenv.cc.cc.lib]; + + installPhase = '' + runHook preInstall + + install -Dm755 CodexBarCLI $out/bin/CodexBarCLI + install -Dm755 codexbar $out/bin/codexbar + cp -r CodexBar_CodexBarCore.bundle $out/bin/ + + runHook postInstall + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/codexbar --help > /dev/null + ''; + + meta = with lib; { + # keep-sorted start + description = "CLI tool to track AI provider usage limits"; + homepage = "https://github.com/steipete/CodexBar"; + license = licenses.mit; + mainProgram = "codexbar"; + platforms = platforms.linux; + sourceProvenance = [sourceTypes.binaryNativeCode]; + # keep-sorted end + }; + } diff --git a/pkgs/codexbar-cli/release.json b/pkgs/codexbar-cli/release.json new file mode 100644 index 0000000..f7232c0 --- /dev/null +++ b/pkgs/codexbar-cli/release.json @@ -0,0 +1,17 @@ +{ + "version": "0.54.0", + "hashes": { + "aarch64-linux": "sha256-Y2Tqvuo04U7S8XArTQ6zP/EK8kN0WEU6sGVo12EveOA=", + "x86_64-linux": "sha256-MCqYMsutrcq90tM8FFM+JHW3GgoZlCD/riYVe3tX9Ww=" + }, + "updater": { + "type": "github-release-assets", + "owner": "steipete", + "repo": "CodexBar", + "tagPrefix": "v", + "assets": { + "aarch64-linux": "CodexBarCLI-{{tag}}-linux-aarch64.tar.gz", + "x86_64-linux": "CodexBarCLI-{{tag}}-linux-x86_64.tar.gz" + } + } +} diff --git a/updater/manifest.py b/updater/manifest.py index 7bd0917..9486a88 100644 --- a/updater/manifest.py +++ b/updater/manifest.py @@ -212,8 +212,8 @@ def render_asset_url(data: dict[str, Any], tag: str, asset: str) -> str: return ( template.replace("{{owner}}", updater.get("owner", "")) .replace("{{repo}}", updater.get("repo", "")) - .replace("{{tag}}", tag) .replace("{{asset}}", asset) + .replace("{{tag}}", tag) )