{inputs, pkgs, ...}: { # required to autoload fonts from packages installed via Home Manager fonts.fontconfig.enable = true; # waybar requires font-awesome home.packages = [ pkgs.pavucontrol # fira code now contains ligatures and font-awesome # TODO - this only works after nixpkgs 25.05 # nerd-fonts.fira-code (pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; }) pkgs.fira-code ]; # enable waybar programs.waybar.enable = true; programs.waybar = { settings = { mainBar = { margin-top = 5; margin-bottom = 5; margin-left = 5; margin-right = 5; height = 42; layer = "top"; position = "top"; # height = 30; # output = [ # "eDP-1" # "HDMI-A-1" # ]; modules-left = [ "hyprland/workspaces" "hyprland/window" ]; modules-center = [ "clock" "custom/notification" ]; modules-right = [ # "temperature" # "group/expand" # "bluetooth" "pulseaudio" # "network" # "mpd" "battery" "backlight" "tray" ]; # module specific settings "hyprland/workspaces" = { format = "{icon}"; format-icons = { active = ""; default = ""; empty = ""; }; }; "custom/notification" = { tooltip = false; format = ""; on-click = "swaync-client -t -sw"; escape = true; }; "clock" = { format = "{:%H:%M}"; interval = 1; tooltip-format = "{calendar}"; calendar = { "format" = { "today" = "{}"; }; }; }; # "network" = { # "format-wifi" = ""; # "format-ethernet" =""; # "format-disconnected" = ""; # "tooltip-format-disconnected" = "Error"; # "tooltip-format-wifi" = "{essid} ({signalStrength}%) "; # "tooltip-format-ethernet" = "{ifname} 🖧 "; # "on-click" = "kitty nmtui"; # }; "bluetooth" = { format-on = "󰂯"; format-off = "BT-off"; format-disabled = "󰂲"; format-connected-battery = "{device_battery_percentage}% 󰂯"; format-alt = "{device_alias} 󰂯"; tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; tooltip-format-enumerate-connected = "{device_alias}\n{device_address}"; tooltip-format-enumerate-connected-battery = "{device_alias}\n{device_address}\n{device_battery_percentage}%"; on-click-right = "blueman-manager"; }; "battery" = { interval = 60; states = { good = 80; warning = 30; critical = 10; }; format = "{capacity}% {icon}"; format-charging = "{capacity}% 󰂄"; format-plugged = "{capacity}% 󰂄 "; format-icons = [ "󰁻" "󰁼" "󰁾" "󰂀" "󰂂" "󰁹" ]; }; "pulseaudio" = { reverse-scrolling = 1; format = "{volume}% {icon} {format_source}"; format-bluetooth = "{volume}% {icon} {format_source}"; format-bluetooth-muted = " {icon} {format_source}"; format-muted = "婢 {format_source}"; format-source = "{volume}% "; format-source-muted = ""; format-icons = { headphone = ""; hands-free = ""; headset = ""; phone = ""; portable = ""; car = ""; default = ["奄" "奔" "墳"]; }; on-click = "pavucontrol"; min-length = 13; }; "tray" = { spacing = 5; }; }; }; style = '' * { border: none; border-radius: 0; /* `otf-font-awesome` is required to be installed for icons */ font-family: FiraCode Nerd Font; min-height: 20px; } window#waybar { background: transparent; } window#waybar.hidden { opacity: 0.2; } #workspaces { margin-right: 8px; border-radius: 10px; transition: none; background: #383c4a; } #workspaces button { transition: none; color: #7c818c; background: transparent; padding: 5px; font-size: 18px; } #workspaces button.persistent { color: #7c818c; font-size: 12px; } /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ #workspaces button:hover { transition: none; box-shadow: inherit; text-shadow: inherit; border-radius: inherit; color: #383c4a; background: #7c818c; } #workspaces button.focused { color: white; } #language { padding-left: 16px; padding-right: 8px; border-radius: 10px 0px 0px 10px; transition: none; color: #ffffff; background: #383c4a; } #keyboard-state { margin-right: 8px; padding-right: 16px; border-radius: 0px 10px 10px 0px; transition: none; color: #ffffff; background: #383c4a; } #custom-pacman { padding-left: 16px; padding-right: 8px; border-radius: 10px 0px 0px 10px; transition: none; color: #ffffff; background: #383c4a; } #custom-mail { margin-right: 8px; padding-right: 16px; border-radius: 0px 10px 10px 0px; transition: none; color: #ffffff; background: #383c4a; } #mode { padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #clock { padding-left: 16px; padding-right: 16px; border-radius: 10px 0px 0px 10px; transition: none; color: #ffffff; background: #383c4a; } #custom-weather { padding-right: 16px; border-radius: 0px 10px 10px 0px; transition: none; color: #ffffff; background: #383c4a; } #pulseaudio { margin-right: 8px; padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #pulseaudio.muted { background-color: #90b1b1; color: #2a5c45; } #custom-mem { margin-right: 8px; padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #temperature { margin-right: 8px; padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #temperature.critical { background-color: #eb4d4b; } #backlight { margin-right: 8px; padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #battery { margin-right: 8px; padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } #battery.charging { color: #ffffff; background-color: #26A65B; } #battery.warning:not(.charging) { background-color: #ffbe61; color: black; } #battery.critical:not(.charging) { background-color: #f53c3c; color: #ffffff; animation-name: blink; animation-duration: 0.5s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } #tray { padding-left: 16px; padding-right: 16px; border-radius: 10px; transition: none; color: #ffffff; background: #383c4a; } @keyframes blink { to { background-color: #ffffff; color: #000000; } } ''; }; }