mirror of
https://github.com/NixOS/mobile-nixos.git
synced 2024-12-12 15:24:14 +03:00
43 lines
1.0 KiB
Ruby
Executable File
43 lines
1.0 KiB
Ruby
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell -p ruby -i ruby
|
|
|
|
# Boots a given `result` symlink on a remote system.
|
|
# This is mainly used to speed-up development where
|
|
# an aarch64 host is used to build the system, but the
|
|
# target device is plugged into another system
|
|
|
|
require "shellwords"
|
|
|
|
ROOT = File.join(__dir__, "..")
|
|
|
|
# This assumes `result` is boot.img.
|
|
STORE_PATH = File.readlink("result")
|
|
|
|
unless ARGV.count == 1 then
|
|
puts "Usage: bin/remote-boot <hostname>"
|
|
exit 1
|
|
end
|
|
|
|
HOST = ARGV.shift
|
|
|
|
# Copy the result to the target host.
|
|
system("nix", "copy", STORE_PATH, "--to", "ssh://#{HOST}")
|
|
|
|
# This assumes the host system has adb and fastboot in PATH.
|
|
# This assumption is safe~ish since only using nix store paths
|
|
# wouldn't mean udev rules would be applied, and that adb and
|
|
# fastboot would work.
|
|
cmd = "
|
|
adb reboot bootloader
|
|
fastboot boot #{STORE_PATH}
|
|
"
|
|
|
|
# Spooky!
|
|
# This uses the previously defined commands.
|
|
# shelljoin makes this safe enough.
|
|
system("ssh", HOST, ["bash", "-l", "-c", cmd].shelljoin)
|
|
|
|
exit $?.exitstatus
|
|
|
|
# vim: ft=ruby
|