diff --git a/machines/fujin/main/default.nix b/machines/fujin/main/default.nix index 6e8cbe7..9d22272 100644 --- a/machines/fujin/main/default.nix +++ b/machines/fujin/main/default.nix @@ -117,6 +117,7 @@ version = "1.19.2"; hash = "sha256-/P3UStsRHKKWC1xET9SL23E0CUPxQ5DkmWFco+dH37A="; # nix store prefetch-file --json https://download.qoder.com/release/latest/qoder_amd64.deb | jq -r .hash }; + development.android.enable = true; virtualisation.docker.enable = true; virtualisation.incus.enable = true; diff --git a/modules/development/android/default.nix b/modules/development/android/default.nix new file mode 100644 index 0000000..ccea8b9 --- /dev/null +++ b/modules/development/android/default.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + pkgs, + username, + ... +}: + +let + cfg = config.dov.development.android; + + mtk-udev-rules = pkgs.writeTextFile { + name = "mtk-udev-rules"; + destination = "/etc/udev/rules.d/60-mtk.rules"; + text = '' + # MediaTek BROM (0003), Preloader VCOM (2000/2001), META (6000) + SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", TAG+="uaccess" + # Oppo/Realme fastboot + adb + SUBSYSTEM=="usb", ATTR{idVendor}=="22d9", MODE="0666", TAG+="uaccess" + + # keep ModemManager's hands off the preloader port + SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ENV{ID_MM_DEVICE_IGNORE}="1" + SUBSYSTEM=="tty", ATTRS{idVendor}=="0e8d", ENV{ID_MM_DEVICE_IGNORE}="1" + ''; + }; +in +{ + options.dov.development.android = { + enable = lib.mkEnableOption "Android and MediaTek flashing tools"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + android-tools + mtkclient + usbutils + ]; + + users.users.${username}.extraGroups = [ "dialout" ]; + + services.udev.packages = [ mtk-udev-rules ]; + }; +}