grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / virtualisation / waydroid.nix
blobae4555f3a6724fcbb73288a8699eba55582072cb
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.virtualisation.waydroid;
5   kCfg = config.lib.kernelConfig;
6   kernelPackages = config.boot.kernelPackages;
7   waydroidGbinderConf = pkgs.writeText "waydroid.conf" ''
8     [Protocol]
9     /dev/binder = aidl2
10     /dev/vndbinder = aidl2
11     /dev/hwbinder = hidl
13     [ServiceManager]
14     /dev/binder = aidl2
15     /dev/vndbinder = aidl2
16     /dev/hwbinder = hidl
17   '';
22   options.virtualisation.waydroid = {
23     enable = lib.mkEnableOption "Waydroid";
24   };
26   config = lib.mkIf cfg.enable {
27     assertions = lib.singleton {
28       assertion = lib.versionAtLeast (lib.getVersion config.boot.kernelPackages.kernel) "4.18";
29       message = "Waydroid needs user namespace support to work properly";
30     };
32     system.requiredKernelConfig = [
33       (kCfg.isEnabled "ANDROID_BINDER_IPC")
34       (kCfg.isEnabled "ANDROID_BINDERFS")
35       (kCfg.isEnabled "MEMFD_CREATE")
36     ];
38     /* NOTE: we always enable this flag even if CONFIG_PSI_DEFAULT_DISABLED is not on
39       as reading the kernel config is not always possible and on kernels where it's
40       already on it will be no-op
41     */
42     boot.kernelParams = [ "psi=1" ];
44     environment.etc."gbinder.d/waydroid.conf".source = waydroidGbinderConf;
46     environment.systemPackages = with pkgs; [ waydroid ];
48     networking.firewall.trustedInterfaces = [ "waydroid0" ];
50     virtualisation.lxc.enable = true;
52     systemd.services.waydroid-container = {
53       description = "Waydroid Container";
55       wantedBy = [ "multi-user.target" ];
57       serviceConfig = {
58         Type = "dbus";
59         UMask = "0022";
60         ExecStart = "${pkgs.waydroid}/bin/waydroid -w container start";
61         BusName = "id.waydro.Container";
62       };
63     };
65     systemd.tmpfiles.rules = [
66       "d /var/lib/misc 0755 root root -" # for dnsmasq.leases
67     ];
69     services.dbus.packages = with pkgs; [ waydroid ];
70   };