{ lib, config, pkgs, ... }: with lib; let cfg = config.local.polybar; inherit (config.services.polybar) package; # TODO: create a theme colors = { orange = "#ee9a00"; red = "#ff5555"; green = "#50fa7b"; }; in { options.local.polybar = with lib; { wifiDevice = mkOption { type = types.str; example = "wlp11s0f3u2"; description = "Set your wifi device"; }; }; config = { systemd.user.services.polybar = { # Add additional /usr/bin to run custom scripts Service.Environment = mkForce "PATH=${package}/bin:/run/current-system/sw/bin"; }; services.polybar = { enable = true; script = "MONITOR=$(xrandr | grep \"connected primary\" | awk '{print $1;}') polybar &"; settings = let padding = 1; in { "bar/main" = { monitor = "\${env:MONITOR:DisplayPort-1}"; width = "100%"; height = "20px"; font = [ "Fira Code:size=9:antialias=true" "Fira Code:bold:size=9:antialias=true" "FiraCode Nerd Font Mono:size=9:antialias=true" "FiraCode Nerd Font Mono:size=14:antialias=true" ]; radius = 0; modules = { left = "xmonad"; center = "date wifi"; right = "exchangerate volume battery lang time"; }; }; "module/date" = { type = "internal/date"; interval = 10; date = "%a %d %b %Y"; label = "%date%"; format = { inherit padding; }; }; "module/time" = { type = "internal/date"; time = "%H:%M:%S"; label = { text = "%time%"; font = 2; foreground = colors.orange; }; }; "module/lang" = { type = "internal/xkeyboard"; format = { inherit padding; text = ""; }; label.layout.font = 2; }; "module/volume" = { type = "custom/script"; exec = "~/scripts/get_volume.sh"; interval = 1; format = { inherit padding; prefix = "%{T4}%{T-} "; }; }; "module/battery" = { type = "internal/battery"; full-at = 99; low-at = 10; battery = "BAT0"; adapter = "AC0"; format.charging = { inherit padding; text = "%{T3}%{T-} "; foreground = colors.green; }; format.discharging = { inherit padding; text = "%{T3}%{T-} "; foreground = colors.orange; }; format.full = { inherit padding; text = "%{T3}%{T-} "; foreground = colors.green; }; format.low = { inherit padding; text = "%{T3}%{T-} "; foreground = colors.red; }; # Only applies if is used ramp.capacity = [ "" "" "" "" "" ]; }; "module/wifi" = { type = "internal/network"; interval = 3; interface = { type = "wireless"; text = cfg.wifiDevice; }; label.connected = "%essid% %signal%"; format.connected = { prefix = "| %{T4}%{T-} "; suffix = "%"; }; }; "module/xmonad" = mkIf config.xsession.windowManager.xmonad.enable { type = "custom/script"; exec = "${pkgs.xmonad-log}/bin/xmonad-log"; tail = true; }; "module/exchangerate" = { type = "custom/script"; exec = "~/scripts/exchangerate.sh"; interval = 60; format = { inherit padding; prefix = "USD: "; }; }; "global/wm" = { margin = { bottom = 0; top = 0; }; }; } ; }; }; }