diff --git a/hosts/hardware/FredOS-Macbook.nix b/hosts/hardware/FredOS-Macbook.nix index 39af88d..36f7cdd 100644 --- a/hosts/hardware/FredOS-Macbook.nix +++ b/hosts/hardware/FredOS-Macbook.nix @@ -6,7 +6,8 @@ ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; + # i915 in initrd = early KMS, so plymouth can draw from the first second + boot.initrd.kernelModules = [ "i915" ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ]; boot.blacklistedKernelModules = [ "b43" "bcma" "ssb" ]; diff --git a/settings/desktop.nix b/settings/desktop.nix index df3e9d5..3fa542c 100644 --- a/settings/desktop.nix +++ b/settings/desktop.nix @@ -7,11 +7,24 @@ # immediately (see Lock.qml), so the lock *is* the login prompt. services.greetd = { enable = true; + # We handle the plymouth handoff ourselves below — don't wait for + # plymouth-quit-wait (that wait is what dropped boot to a console + # flash between splash and Hyprland). + greeterManagesPlymouth = true; settings.default_session = { - command = lib.getExe config.programs.hyprland.package; + command = "${config.programs.hyprland.package}/bin/start-hyprland"; user = "fred"; }; }; + + # GDM-style splash→session handoff: nothing else quits plymouth at boot; + # greetd freezes the last splash frame (--retain-splash) right before it + # spawns Hyprland, which then flips straight to the lockscreen. + systemd.services.plymouth-quit.wantedBy = lib.mkForce [ ]; + systemd.services.greetd = { + after = [ "plymouth-start.service" ]; + serviceConfig.ExecStartPre = "-${pkgs.plymouth}/bin/plymouth quit --retain-splash"; + }; boot.plymouth.enable = true; boot.initrd.verbose = false; boot.consoleLogLevel = 3;