parent
eb88cf6eed
commit
7e76b12d57
@ -0,0 +1,66 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
|
||||
cfg = config.virtualisation.waydroid; |
||||
kernelPackages = config.boot.kernelPackages; |
||||
waydroidGbinderConf = pkgs.writeText "waydroid.conf" '' |
||||
[Protocol] |
||||
/dev/binder = aidl2 |
||||
/dev/vndbinder = aidl2 |
||||
/dev/hwbinder = hidl |
||||
|
||||
[ServiceManager] |
||||
/dev/binder = aidl2 |
||||
/dev/vndbinder = aidl2 |
||||
/dev/hwbinder = hidl |
||||
''; |
||||
|
||||
in { |
||||
|
||||
options.virtualisation.waydroid = { |
||||
enable = mkEnableOption "Waydroid"; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
assertions = singleton { |
||||
assertion = versionAtLeast (getVersion config.boot.kernelPackages.kernel) "4.18"; |
||||
message = "Waydroid needs user namespace support to work properly"; |
||||
}; |
||||
|
||||
system.requiredKernelConfig = with config.lib.kernelConfig; [ |
||||
(isEnabled "ANDROID_BINDER_IPC") |
||||
(isEnabled "ANDROID_BINDERFS") |
||||
(isEnabled "ASHMEM") |
||||
]; |
||||
|
||||
environment.etc."gbinder.d/waydroid.conf".source = waydroidGbinderConf; |
||||
|
||||
environment.systemPackages = with pkgs; [ waydroid ]; |
||||
|
||||
networking.firewall.trustedInterfaces = [ "waydroid0" ]; |
||||
|
||||
virtualisation.lxc.enable = true; |
||||
|
||||
systemd.services.waydroid-container = { |
||||
description = "Waydroid Container"; |
||||
|
||||
wantedBy = [ "multi-user.target" ]; |
||||
|
||||
path = with pkgs; [ getent iptables iproute kmod nftables util-linux which ]; |
||||
|
||||
unitConfig = { |
||||
ConditionPathExists = "/var/lib/waydroid/lxc/waydroid"; |
||||
}; |
||||
|
||||
serviceConfig = { |
||||
ExecStart = "${pkgs.waydroid}/bin/waydroid container start"; |
||||
ExecStop = "${pkgs.waydroid}/bin/waydroid container stop"; |
||||
ExecStopPost = "${pkgs.waydroid}/bin/waydroid session stop"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
} |
Loading…
Reference in new issue