about summary refs log tree commit diff
path: root/pkgs/tools/networking
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2019-03-12 18:19:10 +0100
committerRobert Hensing <robert@roberthensing.nl>2019-03-12 20:35:50 +0100
commit794750fce26c78225b47b990c3e0dd6ccced5b05 (patch)
treee5d1cc0948e19a108e420671f48eca5b695cc505 /pkgs/tools/networking
parent348a2bc3a5ca7f17a418ad86779cbdd0a65447d7 (diff)
downloadnixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar.gz
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar.bz2
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar.lz
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar.xz
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.tar.zst
nixlib-794750fce26c78225b47b990c3e0dd6ccced5b05.zip
ngrok-2: Fix URLs and automate
Diffstat (limited to 'pkgs/tools/networking')
-rw-r--r--pkgs/tools/networking/ngrok-2/default.nix39
-rwxr-xr-xpkgs/tools/networking/ngrok-2/update39
-rw-r--r--pkgs/tools/networking/ngrok-2/versions.json32
3 files changed, 94 insertions, 16 deletions
diff --git a/pkgs/tools/networking/ngrok-2/default.nix b/pkgs/tools/networking/ngrok-2/default.nix
index fdf9067dfee9..da598c6fbd5e 100644
--- a/pkgs/tools/networking/ngrok-2/default.nix
+++ b/pkgs/tools/networking/ngrok-2/default.nix
@@ -1,25 +1,32 @@
-{ stdenv, fetchurl, unzip }:
+{ stdenv, fetchurl }:
 
 with stdenv.lib;
 
-stdenv.mkDerivation rec {
+let versions = builtins.fromJSON (builtins.readFile ./versions.json);
+    arch = if stdenv.isi686 then "386"
+           else if stdenv.isx86_64 then "amd64"
+           else if stdenv.isAarch64 then "arm64"
+           else if stdenv.isArm then "arm"
+           else throw "Unsupported architecture";
+    os = if stdenv.isLinux then "linux"
+         else if stdenv.isDarwin then "darwin"
+         else throw "Unsupported os";
+    versionInfo = versions."${os}-${arch}";
+    inherit (versionInfo) version sha256 url;
+
+in
+stdenv.mkDerivation {
   name = "ngrok-${version}";
-  version = "2.2.8";
-
-  src = if stdenv.isLinux && stdenv.isi686 then fetchurl {
-    url = "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-i386.tgz";
-    sha256 = "0s5ymlaxrvm13q3mlvfirh74sx60qh56c5sgdma2r7q5qlsq41xg";
-  } else if stdenv.isLinux && stdenv.isx86_64 then fetchurl {
-    url = "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.tgz";
-    sha256 = "1mn9iwgy6xzrjihikwc2k2j59igqmph0cwx17qp0ziap9lp5xxad";
-  } else if stdenv.isDarwin then fetchurl {
-    url = "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-darwin-386.zip";
-    sha256 = "0yfd250b55wcpgqd00rqfaa7a82f35fmybb31q5xwdbgc2i47pbh";
-  } else throw "platform ${stdenv.hostPlatform.system} not supported!";
+  version = "${version}";
+
+  # run ./update
+  src = fetchurl { inherit sha256 url; };
 
   sourceRoot = ".";
 
-  nativeBuildInputs = optional stdenv.isDarwin unzip;
+  unpackPhase = "cp $src ngrok";
+
+  buildPhase = "chmod a+x ngrok";
 
   installPhase = ''
     install -D ngrok $out/bin/ngrok
@@ -32,7 +39,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = https://ngrok.com/;
     license = licenses.unfree;
-    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+    platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
     maintainers = [ maintainers.bobvanderlinden ];
   };
 }
diff --git a/pkgs/tools/networking/ngrok-2/update b/pkgs/tools/networking/ngrok-2/update
new file mode 100755
index 000000000000..f5d7779a87ce
--- /dev/null
+++ b/pkgs/tools/networking/ngrok-2/update
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -p httpie
+#!nix-shell -p jq
+#!nix-shell -i bash
+
+set -eu -o pipefail
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+get_download_info() {
+    echo '{ "sys": "'"$1-$2"'", "response": '
+    http --body \
+         https://update.equinox.io/check \
+         'Accept:application/json; q=1; version=1; charset=utf-8' \
+         'Content-Type:application/json; charset=utf-8' \
+         app_id=app_goVRodbMVm \
+         channel=stable \
+         os=$1 \
+         goarm= \
+         target_version=2.2.8 \
+         arch=$2
+
+    echo "}"
+}
+
+(
+    echo "["
+    get_download_info linux 386
+    echo ","
+    get_download_info linux amd64
+    echo ","
+    get_download_info linux arm
+    echo ","
+    get_download_info linux arm64
+    # echo ","
+    # get_download_info darwin 386
+    echo ","
+    get_download_info darwin amd64
+    echo "]"
+) | jq 'map ({ (.sys): { "sys": .sys, "url": .response.download_url, "sha256": .response.checksum, "version": .response.release.version } }) | add' >versions.json
diff --git a/pkgs/tools/networking/ngrok-2/versions.json b/pkgs/tools/networking/ngrok-2/versions.json
new file mode 100644
index 000000000000..c1b9617fda74
--- /dev/null
+++ b/pkgs/tools/networking/ngrok-2/versions.json
@@ -0,0 +1,32 @@
+{
+  "linux-386": {
+    "sys": "linux-386",
+    "url": "https://bin.equinox.io/a/2yoqc96ESxb/ngrok-2.2.8-linux-386",
+    "sha256": "bfa30baf1a6e31cc152a39d0db9849dbae0bc9e75b3405d92b60b66d1e6e6a32",
+    "version": "2.2.8"
+  },
+  "linux-amd64": {
+    "sys": "linux-amd64",
+    "url": "https://bin.equinox.io/a/67p452rfRWJ/ngrok-2.2.8-linux-amd64",
+    "sha256": "a5d0e85f370d66c77c7e850c43e3cc5a09ef24e677ba64c38207c6b00aae4647",
+    "version": "2.2.8"
+  },
+  "linux-arm": {
+    "sys": "linux-arm",
+    "url": "https://bin.equinox.io/a/cxXSbVrW7ue/ngrok-2.2.8-linux-arm",
+    "sha256": "c34a074bd9c33c7179cdd9e58735c1fdea4e472405608a8b2cb098ad4ca5da69",
+    "version": "2.2.8"
+  },
+  "linux-arm64": {
+    "sys": "linux-arm64",
+    "url": "https://bin.equinox.io/a/dS5TkJ3xTyi/ngrok-2.2.8-linux-arm64",
+    "sha256": "9d42324a3e9dbddfe3cfd62f5e3334b9e2b4a3650ed6ace8d18e21a026a2acc3",
+    "version": "2.2.8"
+  },
+  "darwin-amd64": {
+    "sys": "darwin-amd64",
+    "url": "https://bin.equinox.io/a/a7g7TTeof5/ngrok-2.2.8-darwin-amd64",
+    "sha256": "0b16d445db681b0c85c24992c45488ad859b73a5be982863dcd0467eca4459dd",
+    "version": "2.2.8"
+  }
+}