2024-09-09 00:22:14 +00:00
|
|
|
{
|
2024-09-13 01:50:53 +00:00
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
with lib; let
|
|
|
|
cfg = config.custom.settings.waydroid;
|
|
|
|
in {
|
|
|
|
options.custom.settings.waydroid.enable = mkOption {default = false;};
|
2024-09-09 00:22:14 +00:00
|
|
|
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
# https://wiki.nixos.org/wiki/WayDroid
|
|
|
|
# https://wiki.archlinux.org/title/Waydroid
|
|
|
|
#!! Configuration is imperative
|
|
|
|
#* Optionally update image
|
|
|
|
#?? sudo waydroid upgrade
|
|
|
|
|
|
|
|
# Install image
|
|
|
|
#?? sudo waydroid init
|
|
|
|
|
|
|
|
# Helper script
|
|
|
|
# https://github.com/casualsnek/waydroid_script
|
|
|
|
#?? git clone https://github.com/casualsnek/waydroid_script.git
|
|
|
|
#?? cd waydroid_script
|
|
|
|
#?? python -m venv .venv
|
|
|
|
#?? source .venv/bin/activate.fish
|
|
|
|
#?? pip install -r requirements.txt
|
|
|
|
#?? sudo python main.py install microg
|
|
|
|
#?? sudo python main.py install libndk
|
|
|
|
#?? sudo python main.py hack hidestatusbar
|
|
|
|
|
|
|
|
# Start session
|
|
|
|
#?? waydroid session start &
|
|
|
|
|
|
|
|
# Enable windowed applications
|
|
|
|
#?? waydroid prop set persist.waydroid.multi_windows true
|
|
|
|
|
|
|
|
# Set window size
|
|
|
|
#?? waydroid prop set persist.waydroid.width WIDTH
|
|
|
|
#?? waydroid prop set persist.waydroid.height HEIGHT
|
|
|
|
#?? sudo waydroid shell
|
|
|
|
#?? wm size reset
|
|
|
|
|
|
|
|
# Waydroid must run on the same GPU as the compositor
|
|
|
|
# https://wiki.archlinux.org/title/Waydroid#Graphical_Corruption_on_multi-gpu_systems
|
|
|
|
# https://github.com/Quackdoc/waydroid-scripts/blob/main/waydroid-choose-gpu.sh
|
|
|
|
#!! Rerun after each waydroid_script invocation
|
|
|
|
#?? sudo sed -i 's|/dev/dri/card0|/dev/dri/card1|' /var/lib/waydroid/lxc/waydroid/config_nodes
|
|
|
|
#?? sudo sed -i 's|/dev/dri/renderD128|/dev/dri/renderD129|' /var/lib/waydroid/lxc/waydroid/config_nodes
|
|
|
|
|
|
|
|
# Some games like Arknights do not use the proper storage mechanism and need insecure permissions
|
|
|
|
# https://github.com/casualsnek/waydroid_script?tab=readme-ov-file#granting-full-permission-for-apps-data-hack
|
|
|
|
#?? sudo waydroid shell
|
|
|
|
#?? chmod 777 -R /sdcard/Android
|
|
|
|
#?? chmod 777 -R /data/media/0/Android
|
|
|
|
#?? chmod 777 -R /sdcard/Android/data
|
|
|
|
#?? chmod 777 -R /data/media/0/Android/obb
|
|
|
|
#?? chmod 777 -R /mnt/*/*/*/*/Android/data
|
|
|
|
#?? chmod 777 -R /mnt/*/*/*/*/Android/obb
|
|
|
|
|
|
|
|
# Disable unnecessary desktop files
|
|
|
|
#?? sed -i 's|(\[Desktop Entry\])|$1\nNoDisplay=true|' ~/.local/share/applications/waydroid.*.desktop
|
|
|
|
|
|
|
|
virtualisation.waydroid.enable = true;
|
|
|
|
};
|
|
|
|
}
|