{ pkgs, config, ... }: let colors = config.colors.defaultColorSet; inherit (config) machineVars; in { services.polybar = { enable = true; script = '' polybar top & ''; package = pkgs.polybar.override { githubSupport = true; mpdSupport = true; }; settings = { "bar/top" = { bottom = false; # monitor = tray.position = "right"; background = colors.background; foreground = colors.foreground; padding = { left = 2; right = 2; }; width = "100%"; height = 40; fixed-center = true; font = map (f: f + ":pixelsize=12:antialias=true:hinting=true") [ "Fira Code Retina" "Noto Sans CJK JP" "FiraCode Nerd Font" ]; modules = { left = "xmonad"; center = "date"; right = builtins.concatStringsSep " " [ "filesystem " (if machineVars.wlanInterface != null then "wlan " else "") (if machineVars.battery != null then "batt " else "") "vol" "mpd" ]; }; tray = { padding = 4; maxsize = 25; background = colors.background; }; }; "module/xmonad" = { type = "custom/script"; exec = "${pkgs.xmonad-log}/bin/xmonad-log"; tail = "true"; }; "module/date" = { type = "internal/date"; interval = 1.0; format-padding = 1; label = "%date% | %time%"; label-padding = 1; date = "W%W | %Y.%M.%d | %A"; time = "%R"; }; "module/wlan" = { type = "internal/network"; interval = 1.0; unknown-as-up = true; # Wireless interfaces often start with `wl` and ethernet interface with `eno` or `eth`. Check " ifconfig/iwconfig " interface = pkgs.lib.mkIf (machineVars.wlanInterface != null) machineVars.wlanInterface; format = { connected = ""; connected-padding = 1; # connected-suffix = "%{A1:networkmanager_dmenu &:}%{A}" # connected-suffix-padding = 1 # connected-suffix-foreground = ${colors.fg-alt} # connected-suffix-background = ${colors.accent} disconnected = ""; disconnected-padding = 1; # disconnected-suffix = "%{A1:networkmanager_dmenu &:}%{A}" # disconnected-suffix-padding = 1 # disconnected-suffix-foreground = ${colors.fg-alt} # disconnected-suffix-background = ${colors.accent} label = { connected = "%essid%"; connected-padding = 1; # connected-background = ${colors.fg-alt} disconnected = "OFF"; disconnected-padding = 1; # disconnected-background = ${colors.fg-alt} }; }; }; "module/batt" = { type = "internal/battery"; full-at = 99; battery = pkgs.lib.mkIf (machineVars.battery != null) machineVars.battery; adapter = "AC"; poll.interval = 5; # format-charging = "" format.charging.padding = 1; # format-charging-suffix = "%{A1:xfce4-power-manager-settings &:}%{A}" # format-charging-suffix-padding = 1 # format-charging-suffix-foreground = ${colors.fg-alt} # format-charging-suffix-background = ${colors.accent} # # format-discharging = "" # format-discharging-padding = 1 # # format-discharging-suffix = "%{A1:xfce4-power-manager-settings &:}%{A}" # format-discharging-suffix-padding = 1 # format-discharging-suffix-foreground = ${colors.fg-alt} # format-discharging-suffix-background = ${colors.accent} # label-charging = "%percentage%%"; label-discharging = "%percentage%%"; label-full = "FULL"; label = { charging = { padding = 1; foreground = colors.green; # background = ${colors.fg-alt} }; discharging = { padding = 1; foreground = colors.yellow; }; full = { padding = 1; foreground = colors.blue; }; }; }; "module/vol" = { type = "internal/alsa"; # format-volume = "}" # format-volume = "%{A1:bash -c '~/.scripts/get-volume' &:}%{A}" # format-volume = # format-volume-padding = 1 # format-muted-padding = 1 format-volume = "%{T3}%{T-} "; # label-volume =  label-volume-foreground = colors.magenta; # format-muted-foreground = "${colors.foreground-alt}"; label-muted = "mute"; bar.volume = { width = 8; foreground = [ "#55aa55" "#55aa55" "#55aa55" "#55aa55" "#55aa55" "#f5a70a" "#ff5555" ]; gradient = false; indicator = "|"; # indicator-font = 1 fill = "─"; # fill-font = 1 empty = "─"; # empty-font = 1 # empty-foreground = "${colors.foreground-alt}"; }; # # format-volume-prefix = "%{A3:pavucontrol &:}%{A}" # format-volume-prefix-padding = 1 # format-volume-prefix-background = ${colors.fg-alt} # # # format-muted-prefix = "%{A3:pavucontrol &:}%{A}" # format-muted-prefix-padding = 1 # format-muted-prefix-background = ${colors.fg-alt} # # label-muted = " " # label-muted-background = ${colors.fg-alt} # # bar-volume-width = 5 # bar-volume-indicator = "" # bar-volume-empty = "" # bar-volume-fill = "" # # bar-volume-indicator-foreground = ${colors.fg} # bar-volume-indicator-background = ${colors.fg-alt} # # bar-volume-empty-foreground = ${colors.fg-alt} # bar-volume-empty-background = ${colors.fg-alt} # # bar-volume-fill-foreground = ${colors.accent-alt} # bar-volume-fill-background = ${colors.fg-alt} }; "module/mpd" = { type = "internal/mpd"; # your port and host here host = "127.0.0.1"; port = "6600"; format-online = " "; # These are opposite, because polybar expects you to click the icon to change state, # instead of showing the current state. icon-pause = ""; icon.pause = { font = 3; padding = 1; foreground = colors.green; } ; icon-play = ""; icon.play = { font = 3; padding = 1; foreground = colors.red; } ; label-song = "%title%"; label.song = { maxlen = 15; ellipsis = true; padding = 1; }; }; "module/filesystem" = { type = "internal/fs"; # Mountpoints to display mount = [ "/" ]; # ] ++ (builtins.values machineVars.dataDrives.drives); format.mount = [ { background = "#101010"; } ]; # Seconds to sleep between updates # Default: 30 interval = 10; # Display fixed precision values # Default: false fixed-values = true; # Spacing (number of spaces, pixels, points) between entries # Default: 2 spacing = 4; # Default: 90 # New in version 3.6.0 warn-percentage = 75; }; "settings" = { screenchange-reload = true; }; }; }; }