Add adb persistence

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-07-24 16:29:00 +01:00
parent 8bdb905994
commit b704882129
4 changed files with 41 additions and 7 deletions

View File

@@ -1,7 +1,26 @@
{
username ? throw "username argument is required",
}:
{ ... }:
{ config, pkgs, ... }:
let
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
android-tools = pkgs.android-tools.overrideAttrs (oldAttrs: {
patches = oldAttrs.patches or [ ] ++ [ ./env-var-user-home.patch ];
});
in
{
services.udev.packages = with pkgs; [ android-udev-rules ];
environment.systemPackages = [ android-tools ];
services.gvfs.enable = true;
users.users.${username}.extraGroups = [ "adbusers" ];
home-manager.users.${username}.home = {
sessionVariables.ANDROID_USER_HOME = "${hmConfig.xdg.dataHome}/android";
persistence."/persist${userConfig.home}".files = [
"${hmConfig.xdg.dataHome}/android/adbkey"
"${hmConfig.xdg.dataHome}/android/adbkey.pub"
];
};
}

View File

@@ -0,0 +1,21 @@
--- a/vendor/adb/adb_utils.cpp
+++ b/vendor/adb/adb_utils.cpp
@@ -308,8 +308,16 @@
}
std::string adb_get_android_dir_path() {
- std::string user_dir = adb_get_homedir_path();
- std::string android_dir = user_dir + OS_PATH_SEPARATOR + ".android";
+ const char* android_user_home = getenv("ANDROID_USER_HOME");
+ std::string android_dir;
+
+ if (android_user_home) {
+ android_dir = std::string(android_user_home);
+ } else {
+ std::string user_dir = adb_get_homedir_path();
+ android_dir = user_dir + OS_PATH_SEPARATOR + ".android";
+ }
+
struct stat buf;
if (stat(android_dir.c_str(), &buf) == -1) {
if (adb_mkdir(android_dir, 0750) == -1) {