{ username ? throw "username argument is required", }: { config, pkgs, ... }: let userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { nixpkgs.overlays = [ (final: prev: { android-tools = prev.android-tools.overrideAttrs (oldAttrs: { patches = oldAttrs.patches or [ ] ++ [ ./env-var-user-home.patch ]; }); }) ]; programs.adb.enable = true; 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" ]; }; }