{ lib, pkgs, config, ... }: { home-manager.users.agatha = { systemd.user.services.polybar = { Service = { Environment = lib.mkForce (lib.concatStringsSep ":" [ "PATH=${config.home-manager.users.agatha.services.polybar.package}/bin" "/run/wrappers/bin" "${pkgs.dbus}/bin" "${pkgs.dunst}/bin" "${pkgs.systemd}/bin" "${pkgs.util-linux}/bin" "${pkgs.gnused}/bin" "${pkgs.kitty}/bin" ]); }; Install = { WantedBy = [ "graphical-session.target" ]; }; }; xdg.configFile."polybar/config.ini".onChange = "${pkgs.systemd}/bin/systemctl --user restart polybar.service"; services.polybar = { enable = true; package = pkgs.polybarFull; settings = let color = n: config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString n}"; in { "colors" = { background = color 0; foreground = color 7; foreground-alt = color 7; primary = color 1; secondary = color 2; alert = color 3; red = color 4; }; "bar/left" = { width = "100%:-30"; height = 30; offset-x = 15; offset-y = 12; radius = 0; fixed-center = true; background = "\${colors.background}"; foreground = "\${colors.foreground}"; line = { size = 0; color = color 3; }; border = { size = 3; color = color 1; }; padding = { left = 2; right = 2; }; module.margin = { left = 1; right = 1; }; font = { "0" = "Iosevka Gothic:pixelsize=10;3"; "1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2"; "2" = "Siji:pixelsize=11;2"; "3" = "Symbols Nerd Font:pixelsize=10;2"; "4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1"; }; modules = { left = "bspwm"; center = "date"; right = "spotify wireguard notification-status"; }; wm-restack = "bspwm"; cursor-click = "pointer"; locale = "de_DE.UTF-8"; }; "bar/right" = { width = "100%:-30"; height = 30; offset-x = 15; offset-y = 12; radius = 0; fixed-center = true; background = "\${colors.background}"; foreground = "\${colors.foreground}"; line = { size = 0; color = color 3; }; border = { size = 3; color = color 1; }; padding = { left = 2; right = 2; }; module.margin = { left = 1; right = 1; }; font = { "0" = "Iosevka Gothic:pixelsize=10;3"; "1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2"; "2" = "Siji:pixelsize=11;2"; "3" = "Symbols Nerd Font:pixelsize=10;2"; "4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1"; }; modules = { left = "bspwm"; center = "date"; right = lib.mkDefault "filesystem battery pulseaudio xkeyboard memory cpu notification-status powermenu"; }; wm-restack = "bspwm"; cursor-click = "pointer"; locale = "de_DE.UTF-8"; }; "module/xkeyboard" = { type = "internal/xkeyboard"; blacklist-0 = "num lock"; format-prefix = " "; format-prefix-foreground = "\${colors.foreground-alt}"; label = { layout = "%layout%"; indicator = { padding = 2; margin = 1; background = "\${colors.secondary}"; underline = "\${colors.secondary}"; }; }; }; "module/bspwm" = { type = "internal/bspwm"; label = { focused = "%name%"; focused-foreground = "\${colors.primary}"; focused-padding = 1; occupied = "%name%"; occupied-padding = 1; urgent = "%name%!"; urgent-background = "\${xrdb:color1:#222}"; urgent-padding = 1; empty = "%name%"; empty-foreground = "\${colors.foreground-alt}"; empty-padding = 1; }; }; "module/date" = { type = "internal/date"; interval = 5; date = ""; date-alt = " %a, %d %b %Y"; time = "%H:%M"; time-alt = "%H:%M:%S"; format-prefix = ""; format-prefix-foreground = "\${colors.foreground-alt}"; label = '' %{A3:${pkgs.dunst}/bin/dunstify ' Calendar' "$(${pkgs.util-linux}/bin/cal --color=always | ${pkgs.sd}/bin/sd '\\x1b\[7m' '' | ${pkgs.sd}/bin/sd '\\x1b\[0m' '')":}%date%%{A} %time% ''; }; "module/filesystem" = { type = "internal/fs"; interval = 25; mount-0 = "/"; label-mounted = "%mountpoint%: %percentage_used%%"; label-unmounted = "%mountpoint% not mounted"; label-unmounted-foreground = "\${colors.foreground-alt}"; }; "module/cpu" = { type = "internal/cpu"; interval = 2; format-prefix = " "; format-prefix-foreground = "\${colors.foreground-alt}"; label = "%{A1:kitty btop:}%percentage:2%%%{A}"; }; "module/memory" = { type = "internal/memory"; interval = 2; format-prefix = " "; format-prefix-foreground = "\${colors.foreground-alt}"; label = "%{A1:kitty btop:}%percentage_used%%%{A}"; }; "module/pulseaudio" = { type = "internal/pulseaudio"; format-volume = "%{A3:pavucontrol:} %{A}"; label-volume = " %percentage%%"; label-volume-foreground = "\${root.foreground}"; label-muted = " muted"; label-muted-foreground = "\${colors.primary}"; bar.volume = { width = 14; foreground-0 = "\${colors.secondary}"; foreground-1 = "\${colors.secondary}"; foreground-2 = "\${colors.primary}"; foreground-3 = "\${colors.primary}"; foreground-4 = "\${colors.primary}"; foreground-5 = "\${colors.alert}"; foreground-6 = "\${colors.red}"; gradient = false; indicator = "|"; indicator-font = 5; fill = "─"; fill-font = 2; empty = "─"; empty-font = 2; empty-foreground = "\${colors.foreground-alt}"; }; }; "module/powermenu" = { type = "custom/menu"; expand-right = true; format-spacing = 1; label = { open = ""; open-foreground = "\${colors.secondary}"; close = " cancel"; close-foreground = "\${colors.secondary}"; separator = "|"; separator-foreground = "\${colors.foreground-alt}"; }; menu = { "0-0" = "reboot"; "0-0-exec" = "${pkgs.systemd}/bin/reboot"; "0-1" = "power off"; "0-1-exec" = "${pkgs.systemd}/bin/shutdown now"; }; }; "module/battery" = { type = "internal/battery"; full-at = 99; low-at = 10; battery = "BAT0"; adapter = "AC"; poll-interval = 3; content-font = 3; format-charging = " "; format-discharging = " "; label = { charging = "%percentage_raw%%"; discharging = "%percentage_raw%%"; full = ""; }; ramp = { capacity-0 = ""; capacity-1 = ""; capacity-2 = ""; capacity-3 = ""; capacity-4 = ""; }; animation = { charging-0 = ""; charging-1 = ""; charging-2 = ""; charging-3 = ""; charging-4 = ""; charging-framerate = 750; }; }; "module/notification-status" = { type = "custom/script"; exec = '' if $(dunstctl is-paused); then echo "Notifications paused"; else echo ""; fi''; interval = 2; format-prefix = " "; }; "module/wireguard" = { type = "custom/script"; exec = '' ${pkgs.networkmanager}/bin/nmcli conn show --active | ${pkgs.ripgrep}/bin/rg -q wireguard && echo "VPN Connected" || echo ""''; click-left = "kitty nmtui"; interval = 5; format-prefix = " "; }; "module/spotify" = { type = "custom/script"; interval = 1; exec = "${pkgs.polybar-spotify}/bin/polybar-spotify -f '{artist}: {song}'"; format-prefix = " "; format = "