aboutsummaryrefslogtreecommitdiff
path: root/modules/homeModules/waybar.nix
diff options
context:
space:
mode:
authorspl3g <notspl3g@duck.com>2026-03-18 18:01:41 +0300
committerspl3g <notspl3g@duck.com>2026-03-18 18:01:59 +0300
commit03648b3d9f177227df40129bed22558f6924b91c (patch)
tree8a22eda142beeafd9002a8d5901ba9428a77ad52 /modules/homeModules/waybar.nix
parentdc19a2b583b3ab50d8e36ff0a90ca633495f675f (diff)
so.. v2 i guess
Diffstat (limited to 'modules/homeModules/waybar.nix')
-rw-r--r--modules/homeModules/waybar.nix131
1 files changed, 131 insertions, 0 deletions
diff --git a/modules/homeModules/waybar.nix b/modules/homeModules/waybar.nix
new file mode 100644
index 0000000..b1f6dce
--- /dev/null
+++ b/modules/homeModules/waybar.nix
@@ -0,0 +1,131 @@
+{inputs, ...}: {
+ flake.homeModules.waybar = {
+ pkgs,
+ lib,
+ config,
+ ...
+ }:
+ with lib; let
+ cfg = config.customs.waybar;
+ in {
+ options.customs = {
+ waybar = {
+ enable = mkEnableOption "enable waybar";
+ windowManager = mkOption {
+ description = "WM string to use with /workspaces and /language";
+ default = "hyprland";
+ type = types.str;
+ };
+ workspaceIcons = mkOption {
+ default = {
+ "1" = "α";
+ "2" = "β";
+ "3" = "γ";
+ "4" = "δ";
+ "5" = "ε";
+ urgent = "λ";
+ default = "ω";
+ };
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ programs.waybar = {
+ enable = true;
+ systemd.enable = true;
+ style = with config.lib.stylix.colors.withHashtag;
+ ''
+ @define-color base00 ${base00}; @define-color base01 ${base01}; @define-color base02 ${base02}; @define-color base03 ${base03};
+ @define-color base04 ${base04}; @define-color base05 ${base05}; @define-color base06 ${base06}; @define-color base07 ${base07};
+
+ @define-color base08 ${base08}; @define-color base09 ${base09}; @define-color base0A ${base0A}; @define-color base0B ${base0B};
+ @define-color base0C ${base0C}; @define-color base0D ${base0D}; @define-color base0E ${base0E}; @define-color base0F ${base0F};
+ ''
+ + builtins.readFile ./attachments/waybar-style.css;
+ settings = {
+ bar = {
+ layer = "top";
+ height = 30;
+ spacing = 8;
+ margin-down = 5;
+ modules-left = ["${cfg.windowManager}/workspaces"];
+ modules-center = ["clock"];
+ modules-right = ["network" "custom/vpn" "memory" "temperature" "backlight" "pulseaudio" "${cfg.windowManager}/language" "tray" "battery"];
+ "${cfg.windowManager}/workspaces" = {
+ format = "{icon}";
+ "format-icons" = cfg.workspaceIcons;
+ };
+ "${cfg.windowManager}/language" = {
+ format = "{} <span font-family='Material Design Icons' rise='-1000' size='medium'>󰌌</span>";
+ format-ru = "ru";
+ format-en = "en";
+ };
+ "tray" = {
+ spacing = 10;
+ };
+ "clock" = {
+ format = "{:%H:%M 󰅐}";
+ tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
+ format-alt = "{:%d %h %Y 󰃮}";
+ };
+ "memory" = {
+ format = "{}% ";
+ };
+ "temperature" = {
+ format = "{temperatureC}°C󰔏";
+ };
+ "backlight" = {
+ format = "{percent}% {icon}";
+ format-icons = ["󰃞" "󰃟" "󰃠"];
+ };
+ "battery" = {
+ "states" = {
+ good = 95;
+ warning = 30;
+ critical = 15;
+ };
+ format = "{capacity}% {icon}";
+ format-charging = "{capacity}% 󰂄";
+ format-plugged = "{capacity}% ";
+ format-alt = "{icon}";
+ format-icons = ["󱃍" "󰁼" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
+ };
+ "network" = {
+ interface = "wlp*";
+ format-wifi = "{essid} ({signalStrength}%) 󰤨";
+ format-ethernet = "{ipaddr}/{cidr} 󰈀";
+ tooltip-format = "{ifname} via {gwaddr} 󰩟";
+ format-linked = "{ifname} (No IP) 󰩟";
+ format-disconnected = "󰤫";
+ };
+ "custom/vpn" = {
+ format = "{text}";
+ exec = "${./attachments/hypr-scripts/toggle-vpn.sh} waybar";
+ return-type = "json";
+ };
+ "pulseaudio" = {
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% <span font-family='Material Design Icons' rise='-2000' font-size='x-large'>󰥰</span> {format_source}";
+ format-bluetooth-muted = "󰟎 {format_source}";
+ format-muted = "󰝟 {format_source}";
+ format-source = "{volume}%󰍬";
+ format-source-muted = "󰍭";
+
+ "format-icons" = {
+ headphone = "󰋋";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ muted-icon = "󰝟";
+ default = ["󰕿" "󰖀" "󰕾"];
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+}