Plymouth
Plymouth is a project from Fedora and now listed among the freedesktop.org's official resources providing a flicker-free graphical boot process. It relies on kernel mode setting (KMS) to set the native resolution of the display as early as possible, then provides an eye-candy splash screen leading all the way up to the login manager.
Preparation
Plymouth primarily uses KMS to display graphics, but on UEFI systems it can utilize the EFI framebuffer.
If you have neither KMS nor a framebuffer, Plymouth will fall back to text-mode.[1]
Installation
Basic Config
{
boot = {
plymouth = {
enable = true;
};
# Enable "Silent boot"
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"rd.udev.log_level=3"
"rd.systemd.show_status=auto"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
loader.timeout = 0;
};
}
Configuration
Changing the theme
Plymouth comes with a selection of themes:
- BGRT: A variation of Spinner that keeps the OEM logo if available (BGRT stands for Boot Graphics Resource Table)
- Fade-in: "Simple theme that fades in and out with shimmering stars"
- Glow: "Corporate theme with pie chart boot progress followed by a glowing emerging logo"
- Script: "Script example plugin" (Despite the description seems to be a quite nice Arch logo theme)
- Solar: "Space theme with violent flaring blue star"
- Spinner: "Simple theme with a loading spinner"
- Spinfinity: "Simple theme that shows a rotating infinity sign in the center of the screen"
- Tribar: "Text mode theme with tricolor progress bar"
- Text: "Text mode theme with tricolor progress bar"
- Details: "Verbose fallback theme"
NixOS sets the default theme to bgrt[2]. You can change the theme with `boot.plymouth.theme`:
{
boot = {
plymouth = {
enable = true;
theme = "solar";
};
};
}
Install new themes
As an example, you can use a boot animation from [<tvar name="1">https://github.com/adi1090x/plymouth-themes</tvar> adi1090x's collection] like so:
{ pkgs, ... }: {
boot = {
plymouth = {
enable = true;
theme = "rings";
themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = [ "rings" ];
})
];
};
# Enable "Silent boot"
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"rd.udev.log_level=3"
"rd.systemd.show_status=auto"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
loader.timeout = 0;
};
}
HiDPI
Edit the configuration file:
{
boot = {
plymouth = {
enable = true;
extraConfig = ''
[Daemon]
DeviceScale=an-integer-scaling-factor
'';
};
};
}
Tips and tricks
Show boot messages
During the graphical boot process, it is possible to switch to text mode and back by pressing the escape key.
Troubleshooting
LUKS Encryption
If you are using LUKS encryption the password prompt may fall back to text mode. While the default bgrt theme supports graphical password entry, this may not be supported by all themes.