diff --git a/fedac/native/src/ac-native.c b/fedac/native/src/ac-native.c index cf09f9f30e..a02a9b3ef2 100644 --- a/fedac/native/src/ac-native.c +++ b/fedac/native/src/ac-native.c @@ -3389,6 +3389,11 @@ int main(int argc, char *argv[]) { ac_display_present(display, screen, pixel_scale); clock_gettime(CLOCK_MONOTONIC, &_pf_pres1); + // Late input poll: grab any pointer events that arrived during + // rendering. Under Wayland, the compositor flushes motion events + // after our surface commit — polling here halves input latency. + input_poll(input); + // HDMI: render waveform at ~7.5Hz (every 8 frames) — 4K dumb-buf is slow if (hdmi && audio && main_frame % 8 == 0) { drm_secondary_present_waveform(hdmi, &graph, diff --git a/fedac/nixos/configuration.nix b/fedac/nixos/configuration.nix index fa3dde1215..077fa1e3bd 100644 --- a/fedac/nixos/configuration.nix +++ b/fedac/nixos/configuration.nix @@ -48,8 +48,8 @@ in home = "/tmp/ac-home"; }; - # Autologin — no greeter, no display manager - services.getty.autologinUser = "ac"; + # No getty — kiosk service takes over tty1 directly + services.getty.autologinUser = lib.mkForce null; # System packages — only what ac-native needs at runtime environment.systemPackages = with pkgs; [ @@ -83,8 +83,8 @@ in serviceConfig = { Type = "oneshot"; RemainAfterExit = true; - StandardOutput = "journal+console"; - StandardError = "journal+console"; + StandardOutput = "journal"; + StandardError = "journal"; ExecStart = pkgs.writeShellScript "mount-usb-config" '' set -u diff --git a/fedac/nixos/modules/hardware.nix b/fedac/nixos/modules/hardware.nix index c55a9801e9..64ecf82940 100644 --- a/fedac/nixos/modules/hardware.nix +++ b/fedac/nixos/modules/hardware.nix @@ -1,8 +1,8 @@ { config, pkgs, lib, ... }: { - # Broad hardware support — load ALL firmware - hardware.firmware = [ pkgs.linux-firmware ]; + # Broad hardware support — load ALL firmware + WiFi regulatory DB + hardware.firmware = [ pkgs.linux-firmware pkgs.wireless-regdb ]; # GPU: Intel + AMD + Nvidia (nouveau) hardware.graphics = { diff --git a/fedac/nixos/modules/image.nix b/fedac/nixos/modules/image.nix index 2c2bb605bd..5d1297b30a 100644 --- a/fedac/nixos/modules/image.nix +++ b/fedac/nixos/modules/image.nix @@ -10,16 +10,18 @@ # Quiet boot — suppress kernel/systemd text, go straight to ac-native. # Suppress NixOS initrd "stage 1" / "stage 2" banners - boot.initrd.verbose = false; + boot.initrd.verbose = lib.mkForce false; - # Silent boot: send all kernel/initrd/systemd output to tty2 (invisible). + # Silent boot: redirect ALL output to tty2 (invisible). # tty1 stays black until cage takes over with ac-native. - boot.kernelParams = lib.mkAfter [ + boot.kernelParams = lib.mkForce [ + "consoleblank=0" "console=tty2" "quiet" "loglevel=0" "rd.systemd.show_status=false" "systemd.show_status=false" + "systemd.log_level=crit" "vt.global_cursor_default=0" "splash" ]; diff --git a/fedac/nixos/modules/kiosk.nix b/fedac/nixos/modules/kiosk.nix index aa3b88fe16..a60c891ac2 100644 --- a/fedac/nixos/modules/kiosk.nix +++ b/fedac/nixos/modules/kiosk.nix @@ -142,8 +142,8 @@ in TTYVHangup = true; TTYVTDisallocate = true; StandardInput = "tty"; - StandardOutput = "journal+console"; - StandardError = "journal+console"; + StandardOutput = "journal"; + StandardError = "journal"; # cage -s for single-app mode, wrapped so child logs land in journal. ExecStart = "${ac-native-kiosk}";