53 lines
1.6 KiB
Nix
53 lines
1.6 KiB
Nix
{ lib, config, pkgs, flakeRoot, home-manager, ... }:
|
|
|
|
let
|
|
# Path to Waybar assets
|
|
assetPath = "${flakeRoot}/assets/system/conf/waybar";
|
|
|
|
# Determine the username safely
|
|
username =
|
|
builtins.head (builtins.filter (u: config.users.users.${u}.isNormalUser != false)
|
|
(builtins.attrNames config.users.users));
|
|
|
|
# Compute the Home Manager user map safely
|
|
hmUser = config.home-manager.users.${username} or {};
|
|
in
|
|
{
|
|
##############################
|
|
# System-wide Waybar package
|
|
##############################
|
|
environment.systemPackages = [ pkgs.waybar ];
|
|
|
|
##############################
|
|
# Home Manager Waybar config
|
|
##############################
|
|
home-manager.users = lib.recursiveUpdate config.home-manager.users {
|
|
${username} = lib.recursiveUpdate hmUser {
|
|
home.file = lib.recursiveUpdate (hmUser.home.file or {}) {
|
|
".config/waybar/config" = { source = "${assetPath}/config"; };
|
|
".config/waybar/style.css" = { source = "${assetPath}/style.css"; };
|
|
};
|
|
};
|
|
};
|
|
|
|
##############################
|
|
# Optional: Systemd --user service for Waybar
|
|
##############################
|
|
systemd.user.services.waybar = {
|
|
description = "Waybar for Hyprland";
|
|
after = [ "graphical-session.target" ];
|
|
|
|
serviceConfig = {
|
|
ExecStart = "${pkgs.waybar}/bin/waybar";
|
|
Restart = "always";
|
|
# Use the runtime dir provided by systemd, avoids null/UID issues
|
|
Environment = ''
|
|
WAYLAND_DISPLAY=${config.environment.sessionVariables.WAYLAND_DISPLAY or "wayland-0"}
|
|
XDG_CURRENT_DESKTOP=Hyprland
|
|
'';
|
|
};
|
|
|
|
wantedBy = [ "default.target" ];
|
|
};
|
|
}
|