complete-computing-environment/waydroid.org

115 lines
2.7 KiB
Org Mode

:PROPERTIES:
:ID: 20230526T152316.126977
:ROAM_ALIASES: Waydroid
:ROAM_REFS: https://nixos.wiki/wiki/WayDroid
:END:
#+TITLE: Waydroid on NixOS is pretty simple
#+ARROYO_NIXOS_MODULE: nixos/waydroid.nix
#+ARROYO_SYSTEM_ROLE: endpoint
#+begin_src nix :tangle ~/arroyo-nix/nixos/waydroid.nix
{ pkgs, ... }:
{
imports = [ ./waydroid-passthroughbrowser.nix ];
virtualisation = {
waydroid.enable = true;
lxd.enable = true;
};
environment.systemPackages = [ pkgs.wl-clipboard ];
}
#+end_src
Then in an shell:
#+begin_src shell
sudo waydroid init -s GAPPS
sudo systemctl start waydroid-container
waydroid session start
#+end_src
Download latest F-droid from https://f-droid.org/ and install it
#+begin_src shell
waydroid app install ~/Downloads/F-Droid.apk
#+end_src
#+begin_src shell
waydroid prop set persist.waydroid.multi_windows false
#+end_src
#+results:
* Waydroid Passthrough Browser
:PROPERTIES:
:ID: 20230607T162645.250968
:END:
[[https://git.kj7rrv.com/kj7rrv/passthroughbrowser][passthroughbrowser]] is a simple solution to opening links from Android apps in the system browser by setting up a small HTTP server. I'll use it in waydroid configurations in a custom derivation:
#+AUTO_TANGLE: t
#+begin_src nix :tangle ~/arroyo-nix/pkgs/passthroughbrowser.nix
# https://git.kj7rrv.com/kj7rrv/passthroughbrowser.git
{ lib, stdenv,
makeDesktopItem,
fetchFromGitea,
buildPythonPackage,
flask,
... }:
let
desktopItem = makeDesktopItem {
name = "passthroughbrowser";
desktopName = "Waydroid Passthrough Browser";
categories = ["Utility"];
exec = "passthrough_browser";
};
in buildPythonPackage {
name = "passthroughbrowser";
version = "0.0.1";
format = "simple";
src = fetchFromGitea {
domain = "git.kj7rrv.com";
owner = "kj7rrv";
repo = "passthroughbrowser";
rev = "11ab0f695b6dae4ebee06fa75d6e2796713add98";
sha256 = "sha256-JSbGsWL3kEYw4uUIUgXi7XuXYFQ0Nxkz+fZbvxfpn1o=";
};
propagatedBuildInputs = [
flask
];
installPhase = ''
mkdir -p $out/bin $out/share/passthroughbrowser
cp $src/server.py $out/bin/passthrough_browser
cp $src/PassThroughBrowser.apk $out/share/passthroughbrowser
cp --recursive "${desktopItem}/share" "$out/"
substituteInPlace $out/bin/passthrough_browser \
--replace "app.run(host='192.168.250.1', port=8888)" \
"import os; app.run(host=os.environ.get('PASSTHROUGH_HOST', '192.168.240.1'), port=8888)"
'';
}
#+end_src
#+begin_src nix :tangle ~/arroyo-nix/nixos/waydroid-passthroughbrowser.nix
{ pkgs, ... }:
{
home-manager.users.rrix = {
home.packages = [
pkgs.passthroughbrowser
];
home.sessionVariables = {
PASSTHROUGH_HOST = "192.168.240.1";
};
};
}
#+end_src