Files
TheaninovOS/modules/nixos/shell/waybar.nix
2025-05-04 12:57:55 +02:00

96 lines
2.7 KiB
Nix

{
config,
lib,
pkgs,
username,
...
}:
let
cfg = config.shell.components.waybar;
in
{
options.shell.components.waybar = {
enable = lib.mkEnableOption (lib.mdDoc "Enable a pre-configured waybar setup");
};
config = lib.mkIf cfg.enable {
home-manager.users.${username}.programs.waybar = {
enable = true;
settings = {
mainBar = {
height = 24;
reload_style_on_change = true;
exclusive = true;
modules-left = [
# "hyprland/workspaces"
];
modules-center = [
"clock"
"systemd-failed-units"
];
modules-right = [
"privacy"
"gamemode"
"tray"
"pulseaudio"
"custom/brightness"
"custom/theme"
];
"pulseaudio" = {
format = "{icon} {volume}%";
format-icons = {
"alsa_output.usb-Turtle_Beach_Turtle_Beach_Stealth_700_G2_MAX-01.iec958-stereo" = "󰋋";
"alsa_output.pci-0000_0a_00.4.analog-stereo" = "󰓃";
"alsa_output.pci-0000_08_00.1.hdmi-stereo-extra4" = "󰽟";
"alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_11_12_79383-00.analog-stereo" =
"󰍬";
"default" = "󰕾";
};
on-click = "pavucontrol --tab=3";
};
"hyprland/workspaces" = {
format = "{windows}";
window-rewrite = {
"class<firefox>" = "󰈹";
"class<thunderbird>" = "";
"class<neovide>" = "";
"class<kitty>" = "";
"class<OrcaSlicer>" = "󰹛";
"class<blender>" = "";
"class<steam>" = "";
};
window-rewrite-default = "";
};
"custom/theme" = {
return-type = "json";
exec-on-event = true;
exec = pkgs.writeShellScript "waybar-theme" ''
if [ $(theme mode) = "dark" ]; then
echo '{"text": "", "tooltip": "Switch to light theme"}'
elif [ $(theme mode) = "auto" ]; then
echo '{"text": "󰖛", "tooltip": "Switch to dark theme"}'
else
echo '{"text": "", "tooltip": "Switch to dark theme"}'
fi
'';
exec-if = "sleep 1";
interval = "once";
on-click = "theme toggle";
on-click-right = "theme auto";
on-click-middle = "theme wallpaper";
};
};
};
systemd = {
enable = true;
target = "graphical-session.target";
};
};
};
}