{ config, pkgs, ... }: let waybarPath = "${pkgs.waybar}/bin/waybar"; # Pick the first normal (non-system) user automatically normalUsers = builtins.filter (u: config.users.users.${u}.isNormalUser != false) (builtins.attrNames config.users.users); myUser = if normalUsers == [] then builtins.head (builtins.attrNames config.users.users) else builtins.head normalUsers; in { # Install Waybar in the system environment.systemPackages = [ pkgs.waybar ]; # User systemd service for Waybar systemd.user.services.waybar = { description = "Waybar for Hyprland"; after = [ "graphical-session.target" ]; serviceConfig = { ExecStart = "${waybarPath}"; Restart = "always"; Environment = '' WAYLAND_DISPLAY=${config.environment.sessionVariables.WAYLAND_DISPLAY or "wayland-0"} XDG_CURRENT_DESKTOP=Hyprland XDG_RUNTIME_DIR=/run/user/${config.users.users.${myUser}.uid} ''; }; wantedBy = [ "default.target" ]; }; }