From f9b403d5d350327e2003c1935aca442bbfc58a2d Mon Sep 17 00:00:00 2001 From: Aaron Jheng Date: Sat, 19 Oct 2024 07:53:23 +0000 Subject: [PATCH] mirrord: init at 3.125.0 --- pkgs/by-name/mi/mirrord/manifest.json | 13 ++++++ pkgs/by-name/mi/mirrord/package.nix | 51 +++++++++++++++++++++ pkgs/by-name/mi/mirrord/update.py | 64 +++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 pkgs/by-name/mi/mirrord/manifest.json create mode 100644 pkgs/by-name/mi/mirrord/package.nix create mode 100755 pkgs/by-name/mi/mirrord/update.py diff --git a/pkgs/by-name/mi/mirrord/manifest.json b/pkgs/by-name/mi/mirrord/manifest.json new file mode 100644 index 000000000000..682cfc8db1b7 --- /dev/null +++ b/pkgs/by-name/mi/mirrord/manifest.json @@ -0,0 +1,13 @@ +{ + "version": "3.125.0", + "assets": { + "x86_64-linux": { + "url": "https://github.com/metalbear-co/mirrord/releases/download/3.125.0/mirrord_linux_x86_64", + "hash": "sha256-xh5M/YG2W61wiNd4iB6LVUfidkHkB5OmbCzRh7yUpeU=" + }, + "aarch64-linux": { + "url": "https://github.com/metalbear-co/mirrord/releases/download/3.125.0/mirrord_linux_aarch64", + "hash": "sha256-MWGdYeJXseSAKlndUT07NNWCpywJfGJ0hGRklEMQQmw=" + } + } +} diff --git a/pkgs/by-name/mi/mirrord/package.nix b/pkgs/by-name/mi/mirrord/package.nix new file mode 100644 index 000000000000..ce8e406c3b51 --- /dev/null +++ b/pkgs/by-name/mi/mirrord/package.nix @@ -0,0 +1,51 @@ +{ + lib, + stdenv, + fetchurl, + testers, + mirrord, + autoPatchelfHook, +}: + +let + manifest = lib.importJSON ./manifest.json; +in +stdenv.mkDerivation (finalAttrs: { + pname = "mirrord"; + version = manifest.version; + + src = fetchurl (manifest.assets.${stdenv.hostPlatform.system}); + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = lib.optionals stdenv.hostPlatform.isElf [ + autoPatchelfHook + ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isElf [ + stdenv.cc.cc.lib + ]; + + installPhase = '' + install -D $src $out/bin/mirrord + ''; + + passthru = { + tests.version = testers.testVersion { + package = mirrord; + }; + updateScript = ./update.py; + }; + + meta = { + description = "Run local processes in the context of Kubernetes environment"; + homepage = "https://mirrord.dev/"; + license = lib.licenses.mit; + platforms = builtins.attrNames manifest.assets; + maintainers = with lib.maintainers; [ aaronjheng ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + mainProgram = "mirrord"; + }; +}) diff --git a/pkgs/by-name/mi/mirrord/update.py b/pkgs/by-name/mi/mirrord/update.py new file mode 100755 index 000000000000..6096b991b81a --- /dev/null +++ b/pkgs/by-name/mi/mirrord/update.py @@ -0,0 +1,64 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i python -p "python3.withPackages (ps: with ps; [ ps.httpx ps.socksio ])" + +import json +import os +import pathlib +import subprocess + +import httpx + +platforms = { + "x86_64-linux": "linux_x86_64", + "aarch64-linux": "linux_aarch64", +} + +if __name__ == "__main__": + headers = {} + token = os.getenv("GITHUB_TOKEN") + if token is not None: + headers["Authorization"] = "Bearer {}".format(token) + + resp = httpx.get( + "https://api.github.com/repos/metalbear-co/mirrord/releases/latest", + headers=headers, + ) + + latest_release = resp.json().get("tag_name") + version = latest_release.removeprefix("v") + + assets = { + "version": version, + "assets": {}, + } + + for k, v in platforms.items(): + url = "https://github.com/metalbear-co/mirrord/releases/download/{}/mirrord_{}".format( + version, v + ) + + process = subprocess.run( + ["nix-prefetch-url", "--type", "sha256", url], + capture_output=True, + text=True, + ) + + process.check_returncode() + + process = subprocess.run( + ["nix-hash", "--type", "sha256", "--to-sri", process.stdout.rstrip()], + capture_output=True, + text=True, + ) + + process.check_returncode() + + hash = process.stdout.rstrip() + assets["assets"][k] = { + "url": url, + "hash": hash, + } + + (pathlib.Path(__file__).parent / "manifest.json").write_text( + json.dumps(assets, indent=2) + "\n" + )