diff --git a/default.nix b/default.nix index 9ab2954..23423af 100644 --- a/default.nix +++ b/default.nix @@ -1,22 +1,4 @@ -with (import {}); - -stdenv.mkDerivation { - name = "waydroid_script"; - - buildInputs = [ - (python3.withPackages(ps: with ps; [ tqdm requests inquirerpy ])) - ]; - - src = ./.; - - postPatch = '' - patchShebangs main.py - ''; - - installPhase = '' - mkdir -p $out/libexec - cp -r . $out/libexec/waydroid_script - mkdir -p $out/bin - ln -s $out/libexec/waydroid_script/main.py $out/bin/waydroid_script - ''; -} +let + pkgs = import {}; +in + pkgs.callPackage ./package.nix { } diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..fb6d247 --- /dev/null +++ b/flake.lock @@ -0,0 +1,41 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1707650010, + "narHash": "sha256-dOhphIA4MGrH4ElNCy/OlwmN24MsnEqFjRR6+RY7jZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "809cca784b9f72a5ad4b991e0e7bcf8890f9c3a6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a0a7172 --- /dev/null +++ b/flake.nix @@ -0,0 +1,21 @@ +{ + description = "Waydroid Extras Script"; + inputs = { + systems.url = "github:nix-systems/default"; + }; + outputs = { self, nixpkgs, systems }: + let + inherit (nixpkgs) lib; + eachSystem = lib.genAttrs (import systems); + mkApp = program: { type = "app"; inherit program; }; + in { + packages = eachSystem (system: rec { + waydroid_script = nixpkgs.legacyPackages."${system}".callPackage ./package.nix { }; + default = waydroid_script; + }); + apps = eachSystem (system: rec { + waydroid_script = mkApp "${self.outputs.packages.${system}.waydroid_script}/bin/waydroid_script"; + default = waydroid_script; + }); + }; +} diff --git a/main.py b/main.py index d76f415..35bc1fc 100755 --- a/main.py +++ b/main.py @@ -210,7 +210,7 @@ def interact(): Choice(name="Android 13", value="13"), Choice(name="Exit", value=None) ], - default="11", + default="13", ).execute() if not android_version: exit() @@ -229,10 +229,9 @@ def interact(): if not action: exit() - install_choices = ["gapps", "microg", "libndk", "libhoudini", "magisk", "smartdock", "fdroidpriv",] + install_choices = ["gapps", "microg", "libndk", "libhoudini", "magisk", "smartdock", "fdroidpriv", "widevine",] hack_choices = [] if android_version=="11": - install_choices.extend(["widevine"]) hack_choices.extend(["nodataperm", "hidestatusbar"]) if action == "Install": @@ -288,7 +287,7 @@ def main(): parser.add_argument('-a', '--android-version', dest='android_version', help='Specify the Android version', - default="11", + default="13", choices=["11", "13"]) # android command diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..07c5519 --- /dev/null +++ b/package.nix @@ -0,0 +1,32 @@ +{ lib, + stdenvNoCC, + lzip, + python3, + makeWrapper }: +let + wrappedPath = lib.makeBinPath [ lzip ]; +in stdenvNoCC.mkDerivation { + name = "waydroid_script"; + + buildInputs = [ + (python3.withPackages(ps: with ps; [ tqdm requests inquirerpy ])) + ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + src = ./.; + + postPatch = '' + patchShebangs main.py + ''; + + installPhase = '' + mkdir -p $out/libexec + cp -r . $out/libexec/waydroid_script + mkdir -p $out/bin + makeShellWrapper $out/libexec/waydroid_script/main.py $out/bin/waydroid_script \ + --prefix PATH : "${wrappedPath}" + ''; +} diff --git a/stuff/houdini.py b/stuff/houdini.py index 829fdae..1de035d 100644 --- a/stuff/houdini.py +++ b/stuff/houdini.py @@ -10,7 +10,7 @@ class Houdini(General): partition = "system" dl_links = { "11": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/81f2a51ef539a35aead396ab7fce2adf89f46e88.zip", "fbff756612b4144797fbc99eadcb6653"], - "13": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/7e21ea3f63bd89e9e8af54e32da41bd8b65c93a1.zip", "f8cf5db10e5fdb9b77e98e515a9b08c9"] + "13": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/9e77896350caccd228b36b2e1b4a994aa4bd48da.zip", "3807fe029559db3037efe245d9e74270"] } act_md5 = ... dl_link = ... diff --git a/stuff/nodataperm.py b/stuff/nodataperm.py index 4f140db..7570076 100644 --- a/stuff/nodataperm.py +++ b/stuff/nodataperm.py @@ -10,19 +10,23 @@ from tools import container class Nodataperm(General): id = "nodataperm" dl_links = { - "11": - { + "11": { + "x86_64": [ + "https://github.com/ayasa520/hack_full_data_permission/archive/d4beab7780eb792059d33e77d865579c9ee41546.zip", + "b0e3908ffcf5df8ea62f4929aa680f1a" + ], + }, + "13": { "x86_64": [ "https://github.com/ayasa520/hack_full_data_permission/archive/d4beab7780eb792059d33e77d865579c9ee41546.zip", "b0e3908ffcf5df8ea62f4929aa680f1a" ], }, - "13": {} } dl_file_name = "nodataperm.zip" extract_to = "/tmp/nodataperm" - dl_link = ... - act_md5 = ... + dl_link = None + act_md5 = None partition = "system" files = [ "etc/nodataperm.sh", @@ -36,11 +40,15 @@ class Nodataperm(General): super().__init__() print("ok") arch = self.arch[0] + if android_version not in self.dl_links: + raise KeyError(f"No download links for Android version '{android_version}'") + if arch not in self.dl_links[android_version]: + raise KeyError(f"No download links for architecture '{arch}' in Android version '{android_version}'") self.dl_link = self.dl_links[android_version][arch][0] self.act_md5 = self.dl_links[android_version][arch][1] def copy(self): - name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0] + name = re.findall(r"([a-zA-Z0-9]+)\.zip", self.dl_link)[0] extract_path = os.path.join( self.extract_to, f"hack_full_data_permission-{name}") if not container.use_overlayfs(): diff --git a/stuff/widevine.py b/stuff/widevine.py index 316a4a5..ca6d557 100644 --- a/stuff/widevine.py +++ b/stuff/widevine.py @@ -13,8 +13,8 @@ class Widevine(General): "x86_64": { "11": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/48d1076a570837be6cdce8252d5d143363e37cc1.zip", "f587b8859f9071da4bca6cea1b9bed6a"], - "13": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a8524d608431573ef1c9313822d271f78728f9a6.zip", - "5c55df61da5c012b4e43746547ab730f"] + "13": ["https://github.com/WayDroid-ATV/vendor_google_proprietary_widevine-prebuilt/archive/679552343d8b2e8d7a19b6df61c7a03963d0c75b.zip", + "80ab79ea85c7b2556baedb371a54e01c"] }, # "armeabi-v7a": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip", "fed6898b5cfd2a908cb134df97802554"], "arm64-v8a": { @@ -30,7 +30,10 @@ class Widevine(General): "etc/init/*widevine.rc", "etc/vintf/manifest/*widevine.xml", "lib/libwvhidl.so", + "lib/libwvaidl.so", "lib/mediadrm", + "lib64/libwvhidl.so", + "lib64/libwvaidl.so", "lib64/mediadrm" ] @@ -38,9 +41,17 @@ class Widevine(General): super().__init__() self.dl_link = self.dl_links[self.arch[0]][android_version][0] self.act_md5 = self.dl_links[self.arch[0]][android_version][1] + self.android_version = android_version + self.libdir = "lib64" if self.arch[1] == 64 else "lib" def copy(self): name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0] Logger.info("Copying widevine library files ...") shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-"+name, "prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True) + if self.android_version == "13": + try: + os.symlink("libprotobuf-cpp-lite-3.9.1.so", + os.path.join(self.copy_dir, self.partition, self.libdir, "libprotobuf-cpp-lite.so")) + except FileExistsError: + pass