{ config, lib, pkgs, ... }: { boot = { kernelModules = lib.mkForce [ "cec" ]; kernelParams = lib.mkForce [ "ipv6e=1" "quiet" "splash" ]; plymouth = { enable = true; themePackages = [ pkgs.adi1090x-plymouth-themes ]; theme = "abstract_ring_alt"; }; }; # ── HDMI-CEC: Turn on TV when Steam specialisation starts ───────────────────── services.udev.packages = [ pkgs.libcec ]; # ensures cec-utils is in PATH services.blueman.enable = true; services.seatd.enable = true; # A user service that runs once the graphical session (Steam/GameScope) is ready systemd.services.cec-tv-control = { description = "Control TV via HDMI-CEC (turn on early, turn off on shutdown)"; wantedBy = [ "multi-user.target" ]; # Run very early: after modules load and local filesystems are available, # but before Plymouth boot splash quits and before the display manager after = [ "systemd-modules-load.service" "local-fs.target" "systemd-udev-settle.service" ]; before = [ "plymouth-quit-wait.service" "greetd.service" ]; # Ensure the /dev/cec* device exists (udev settles early) requires = [ "systemd-udev-settle.service" ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; # Turn TV on during boot ExecStart = toString ( pkgs.writeShellScript "cec-tv-on.sh" '' sleep 3 # Give CEC time to initialize ${pkgs.libcec}/bin/cec-client -s -d 1 <