Removing persistent boot messages for a silent boot

Wow - thanks for the detailed response, @TLATER!

Just for context, I’m configuring a 9th Generation Lenovo X1 Carbon Thinkpad with a 14" 3840 x 2400 display.

Ooh, fun - I haven’t contributed before, but #108294 looks simple enough.

What information would be helpful here?

Here are some of the config options related to kernel & graphics:

{
  # ...
  boot = {
    initrd = {
      availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
      kernelModules = [ ];
    };
    kernelModules = [ "kvm-intel" ];
    extraModulePackages = [ ];
  };

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  # Setup the system console.
  console = {
    # Make fonts readable from the start of boot
    earlySetup = true;
    font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
    packages = with pkgs; [ terminus_font ];
    keyMap = "us";
  };

  services.xserver = {
    # Enable a windowing system.
    enable = true;
    displayManager.startx.enable = true;
    # Configure keymap
    layout = "us";
    # Enable touchpad support (enabled default in most desktopManager).
    libinput.enable = true;
    # video support
    videoDrivers = [ "modesetting" ];
    useGlamor = true;
    # HiDPI
    dpi = 323;
  };

  # Additional hardware configuration
  hardware = {
    video.hidpi.enable = lib.mkDefault true;
    # Update the Intel microcode.
    cpu.intel.updateMicrocode = true;
    # Allow connected display discovery.
    i2c.enable = true;
    # Setup graphics acceleration.
    opengl = {
      enable = true;
      driSupport = true;
      extraPackages = with pkgs; [
        intel-compute-runtime
        intel-media-driver
        vaapiIntel
        vaapiVdpau
        libvdpau-va-gl
      ];
    };
  };
  # ...
}

and

$ lsmod | grep video
uvcvideo              114688  0
videobuf2_vmalloc      20480  1 uvcvideo
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_common       61440  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
videodev              237568  3 videobuf2_v4l2,uvcvideo,videobuf2_common
mc                     53248  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
video                  53248  2 thinkpad_acpi,i915
backlight              20480  4 video,thinkpad_acpi,i915,drm
i2c_core               86016  13 i2c_designware_platform,videodev,i2c_hid,i2c_designware_core,drm_kms_helper,i2c_algo_bit,i2c_smbus,i2c_i801,i2c_hid_acpi,i915,psmouse,i2c_dev,drm
usbcore               278528  5 xhci_hcd,typec,uvcvideo,btusb,xhci_pci
usb_common             16384  3 xhci_hcd,usbcore,uvcvideo

Thanks - I re-enabled Plymouth. Here’s what I see:

  • during boot
    • I see neither spinner nor NixOS logo
    • If I don’t hit any keys, a single line prints to the screen:
      setfont: KDFONTOP: Function not implemented
      
    • If I hit Esc, then ^[ prints to the screen. It does not drop “behind” the graphical screen. Each press of Esc prints another ^[. I do not see the setfont line.
  • during shutdown
    • I see both spinner and NixOS logo
    • If I don’t hit any keys, the spinner spins smoothly for a few seconds, the screen flickers to black and then back the splash screen, and the spinner freezes, updates every 5 seconds or so, and shutdown takes an extra 15-20 seconds.
    • If I hit Esc, I see “behind” the screen and shutdown finishes in about 5 seconds.

Okay, I’ve looked through the BIOS and didn’t see anything that looked relevant, other than the amount of memory allocated to graphics. It’s currently set at 256MB but I boosted it to the maximum 512MB.

I set services.fwupd.enable = true and following Problem using fwupd ran sudo fwupdmgr update. It reported:

$ sudo fwupdmgr update
Devices with no available firmware updates:
 • KXG6AZNV1T02 TOSHIBA
 • System Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI dbx
No updatable devices

Hmm - I’m currently using systemd-boot I think (boot.loader.systemd-boot.enable = true). Would this option still apply?

I have integrated Intel Xe Graphics (TGL GT2) graphics, so nvidia thankfully isn’t the issue. If you have ideas for performing the modeset earlier for Intel Mesa, let me know!