{ config, osConfig, pkgs, inputs, lib, ... }: with lib; let cfg = osConfig.custom.graphical.hyprland; in { config = let # styles from https://github.com/khaneliman/khanelinix/blob/8375f8cfbe5bfd87565b4dc34c9d30630c17336d/modules/home/desktop/addons/waybar/default.nix theme = builtins.readFile ./styles/catppuccin.css; style = builtins.readFile ./styles/style.css; notificationsStyle = builtins.readFile ./styles/notifications.css; powerStyle = builtins.readFile ./styles/power.css; statsStyle = builtins.readFile ./styles/stats.css; workspacesStyle = builtins.readFile ./styles/workspaces.css; in lib.mkIf cfg.enable { home.file.".config/waybar" = { recursive = true; source = ../../.config/waybar; }; programs.waybar = { enable = true; #systemd.enable = true; #systemd.target = "sway-session.target"; settings.main = { layer = "top"; position = "bottom"; #output = lib.mapAttrsToList (n: v: v.monitor) outputs; height = 25; spacing = 4; modules-left = [ "hyprland/workspaces" #"hyprland/window" ]; modules-center = [ ]; modules-right = [ "group/stats" "group/other" ]; "group/stats" = { "orientation" = "horizontal"; "modules" = [ "network" "cpu" "memory" "disk" "temperature" ] ++ lib.optionals osConfig.custom.hardware.nvidia.enable [ "custom/nvidia" ] ++ lib.optionals osConfig.custom.hardware.amd-gpu.enable [ "custom/amd-gpu" ]; }; "group/other" = { "orientation" = "horizontal"; "modules" = [ "tray" "backlight" "pulseaudio" "mpris" "battery" "clock" ]; }; "cpu" = { "format" = " {usage}%"; "tooltip" = true; }; "disk" = { "format" = " {percentage_used}%"; }; "memory" = { "format" = "󰍛 {}%"; }; "idle_inhibitor" = { "format" = "{icon} "; "format-icons" = { "activated" = ""; "deactivated" = ""; }; }; "keyboard-state" = { "numlock" = true; "capslock" = true; "format" = "{icon} {name}"; "format-icons" = { "locked" = ""; "unlocked" = ""; }; }; "network" = { "interval" = 2; "format-wifi" = " 󰜮 {bandwidthDownBytes} 󰜷 {bandwidthUpBytes}"; "format-ethernet" = "󰈀 󰜮 {bandwidthDownBytes} 󰜷 {bandwidthUpBytes}"; "tooltip-format" = " {ifname} via {gwaddr}"; "format-linked" = "󰈁 {ifname} (No IP)"; "format-disconnected" = " Disconnected"; "format-alt" = "{ifname}: {ipaddr}/{cidr}"; }; "pulseaudio" = { "format" = "{volume}% {icon}"; "format-bluetooth" = "{volume}% {icon}"; "format-muted" = ""; "format-icons" = { "headphone" = " "; "hands-free" = " "; "headset" = " "; "phone" = ""; "portable" = ""; "car" = ""; "default" = [ "" "" ]; }; "scroll-step" = 1; "on-click" = "${pkgs.pavucontrol}/bin/pavucontrol"; "ignored-sinks" = [ "Easy Effects Sink" ]; }; "pulseaudio/slider" = { "min" = 0; "max" = 100; "orientation" = "horizontal"; }; "temperature".critical-threshold = 80; "temperature".format = "{temperatureC}°C "; "temperature".interval = 5; "temperature".hwmon-path = lib.mkIf (osConfig.networking.hostName == "nix-laptop") "/sys/class/hwmon/hwmon6/temp1_input"; "backlight".format = "{percent}% {icon}"; "backlight".states = [ 0 50 ]; "backlight".format-icons = [ "" "" ]; "battery".states.good = 95; "battery".interval = 5; "battery".states.warning = 30; "battery".states.critical = 15; "battery".format = "{capacity}% / {power:.2}W {icon}"; "battery".format-icons = [ "" "" "" "" "" ]; "clock" = { format = "{:%F %H:%M}"; tooltip-format = "{calendar}"; "calendar" = { "mode" = "year"; "mode-mon-col" = 3; "weeks-pos" = "right"; "on-scroll" = 1; "format" = { "months" = "{}"; "days" = "{}"; "weeks" = "W{}"; "weekdays" = "{}"; "today" = "{}"; }; }; }; "mpris" = { "format" = "{player_icon} {dynamic}"; "format-paused" = "{status_icon} {dynamic}"; "title-len" = 35; "dynamic-len" = 35; "player-icons" = { "default" = "▶"; "mpv" = "🎵"; }; "status-icons" = { "paused" = "⏸"; }; }; "custom/nvidia" = { "format" = "{}"; "interval" = 5; "exec" = "~/.config/waybar/nvidia.sh"; "exec-if" = "nvidia-smi"; }; "custom/amd-gpu" = { "format" = "{}"; "interval" = 5; "exec" = "~/.config/waybar/amd-gpu.sh"; }; "tray".icon-size = 21; "tray".spacing = 10; "hyprland/window" = { "format" = "{}"; "separate-outputs" = true; }; "hyprland/workspaces" = { "disable-scroll" = true; "all-outputs" = false; "active-only" = false; "on-click" = "activate"; "format" = "{icon} {windows}"; "format-icons" = { "1" = "󰎤"; "2" = "󰎧"; "3" = "󰎪"; "4" = "󰎭"; "5" = "󰎱"; "6" = "󰎳"; "7" = "󰎶"; "8" = "󰎹"; "9" = "󰎼"; "10" = "󰽽"; "urgent" = "󱨇"; "default" = ""; "empty" = "󱓼"; }; # "format-window-separator" = "->"; "window-rewrite-default" = ""; "window-rewrite" = { "class" = "󰢁"; "class" = "󰈎"; "class" = "󰊤"; "class" = ""; "class" = ""; "class" = "󰒱"; "class" = "󰨞"; "code-url-handler" = "󰨞"; "class" = "󰙯"; "class" = ""; "class" = ""; "class" = ""; "class title<.*github.*>" = ""; "class title<.*twitch|youtube|plex|tntdrama|bally sports.*>" = ""; "class" = ""; "class" = ""; "class" = "󱂷"; "class" = "󰄄"; "class" = ""; "class<.pitivi-wrapped>" = "󱄢"; "class" = ""; "class" = ""; "class" = "󰢹"; "class" = "󰕼"; "class" = "󰉋"; "class" = "󰉋"; "class" = ""; "title" = ""; "class" = "󰽉"; "class" = ""; "class" = "󱎏"; "class" = "󱎐"; "class" = "󰊻"; "class" = "󰍳"; "class" = "󰍳"; "class" = "󰛮"; }; }; }; style = "${theme}${style}${notificationsStyle}${powerStyle}${statsStyle}${workspacesStyle}"; }; }; }