aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix51
1 files changed, 51 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix b/infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix
new file mode 100644
index 000000000000..8d7d2392dfb7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/tools/networking/gnirehtet/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, rustPlatform, fetchFromGitHub, fetchzip, androidenv, makeWrapper }:
+let
+version = "2.5";
+apk = stdenv.mkDerivation {
+ pname = "gnirehtet.apk";
+ inherit version;
+ src = fetchzip {
+ url = "https://github.com/Genymobile/gnirehtet/releases/download/v${version}/gnirehtet-rust-linux64-v${version}.zip";
+ sha256 = "1db0gkg5z8lighhkyqfsr9jiacrck89zmfnmp74vj865hhxgjzgq";
+ };
+ installPhase = ''
+ mkdir $out
+ mv gnirehtet.apk $out
+ '';
+};
+in
+rustPlatform.buildRustPackage {
+ pname = "gnirehtet";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "Genymobile";
+ repo = "gnirehtet";
+ rev = "v${version}";
+ sha256 = "0wk6n082gnj9xk46n542h1012h8gyhldca23bs7vl73g0534g878";
+ };
+ sourceRoot = "source/relay-rust";
+ cargoSha256 = "0i7f52r697gjw30m8k60hd3y6wsn5lpz419r083a1rhpbinzd26q";
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ postInstall = ''
+ wrapProgram $out/bin/gnirehtet \
+ --set GNIREHTET_APK ${apk}/gnirehtet.apk \
+ --set ADB ${androidenv.androidPkgs_9_0.platform-tools}/bin/adb
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Reverse tethering over adb for Android";
+ longDescription = ''
+ This project provides reverse tethering over adb for Android: it allows devices to use the internet connection of the computer they are plugged on. It does not require any root access (neither on the device nor on the computer).
+
+ This relies on adb, make sure you have the required permissions/udev rules.
+ '';
+ homepage = "https://github.com/Genymobile/gnirehtet";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ symphorien ];
+ platforms = platforms.unix;
+ };
+}
+