mirror of
https://github.com/NixOS/mobile-nixos.git
synced 2024-12-15 19:23:01 +03:00
a9368b3623
While it's not as useful as the other splashes, this may help showing issues with early post-framebuffer init. E.g. network or adbd in stage-1. The hollow logo is simple to describe, compared to a black and white one, compared to a full colour one.
67 lines
1.7 KiB
Nix
67 lines
1.7 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
with import ./initrd-order.nix;
|
|
|
|
let
|
|
cfg = config.mobile.boot.stage-1.splash;
|
|
image = name: ../artwork + "/${name}.png";
|
|
mkSplash = at: name:
|
|
{
|
|
init = lib.mkOrder at ''
|
|
show_splash ${name}
|
|
'';
|
|
contents = [
|
|
{
|
|
object = (builtins.path { path = image name; });
|
|
symlink = "/${name}.png";
|
|
}
|
|
];
|
|
};
|
|
in
|
|
{
|
|
options.mobile.boot.stage-1.splash = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = ''
|
|
Enables splash screen.
|
|
'';
|
|
};
|
|
rgb-debug = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enables a special splash with RGB debug components.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config.mobile.boot.stage-1 = lib.mkIf cfg.enable (mkMerge [
|
|
{
|
|
init = lib.mkOrder BEFORE_FRAMEBUFFER_INIT ''
|
|
show_splash() {
|
|
ply-image --clear=0x000000 /$1.png > /dev/null 2>&1
|
|
}
|
|
'';
|
|
extraUtils = [
|
|
{ package = pkgs.ply-image; extraCommand = "cp -pv ${pkgs.glibc.out}/lib/libpthread.so.* $out/lib"; }
|
|
];
|
|
}
|
|
|
|
# This is as early as we can splash...
|
|
(mkSplash AFTER_FRAMEBUFFER_INIT "splash.stage-0")
|
|
# Though there's still some setting-up in stage-1,
|
|
# This is where "init is ready".
|
|
(mkSplash (READY_INIT - 1) "splash.stage-1")
|
|
(mkIf cfg.rgb-debug (mkSplash (READY_INIT) "rgb-debug"))
|
|
]);
|
|
|
|
# This happens in stage-2. This is why we're not using `mkSplash`.
|
|
# This is the earliest in stage-2 we can show, for vt-less devices, that
|
|
# stage-2 is really happening.
|
|
config.boot.postBootCommands = ''
|
|
${pkgs.ply-image}/bin/ply-image --clear=0x000000 ${image "splash.stage-2"} > /dev/null 2>&1
|
|
'';
|
|
}
|