1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-21 15:01:36 +03:00
mobile-nixos/examples/demo/android-burn-tool.nix
2020-05-31 18:54:07 -04:00

47 lines
1.6 KiB
Nix

# This is intended to be used to produce a bootable `boot.img` with adbd, and
# dropbear enabled. You would, in turn, use it to "flash" a dumb system.img file
# to a partition, like userdata.
#
# *CAUTION* : there is no protection against flashing over the wrong partition.
# Read about the usual pitfalls in the Android section of the documentation.
{ config, lib, pkgs, ... }:
let
device_info = config.mobile.device.info;
in
{
# Ensures we don't quit stage-1
mobile.boot.stage-1.shell.enable = true;
# Only enable `adb` if we know how to.
# FIXME: relies on implementation details. Poor separation of concerns.
mobile.adbd.enable = (config.mobile.system.type == "android") &&
(config.mobile.usb.mode != "gadgetfs" || config.mobile.usb.gadgetfs.functions ? ffs)
;
# Enables networking and ssh in stage-1 !
mobile.boot.stage-1.networking.enable = true;
mobile.boot.stage-1.ssh.enable = true;
mobile.boot.stage-1.fbterm.enable = true;
mobile.boot.stage-1.tasks = [
(pkgs.writeText "adjust-brightness-task.rb" ''
class Tasks::AdjustBrightness < SingletonTask
def initialize()
add_dependency(:Target, :Environment)
add_dependency(:Target, :Graphics)
end
def run()
["lcd-backlight", "wled"].each do |file|
# This can fail to write, ignore...
begin
max = File.read("/sys/class/leds/#{file}/max_brightness").to_i
System.write("/sys/class/leds/#{file}/brightness", (max * 0.1).to_i)
rescue
end
end
end
end
'')
];
}