nixos-config/home-manager/modules/waybar/default.nix

245 lines
7.5 KiB
Nix
Raw Normal View History

2024-02-05 11:46:52 +01:00
{
lib,
pkgs,
config,
...
2022-03-01 22:19:03 +01:00
}:
2024-02-05 11:46:52 +01:00
with lib;
let
2022-03-01 22:19:03 +01:00
cfg = config.eboskma.programs.waybar;
in
{
options.eboskma.programs.waybar = {
enable = mkEnableOption "Enable waybar";
sway = mkEnableOption "sway";
river = mkEnableOption "river";
2024-10-23 16:24:05 +02:00
profile = mkOption {
description = "";
type = types.enum [
"home"
"work"
];
default = "home";
};
cpuTempPath = mkOption {
description = "The path to the CPU temperature sensor in sysfs";
type = types.path;
};
};
2021-11-12 17:10:17 +01:00
config = mkIf cfg.enable {
programs.waybar = {
enable = true;
2022-05-30 16:21:13 +02:00
systemd.enable = true;
2021-11-12 17:10:17 +01:00
settings = [
{
layer = "top";
position = "top";
2022-03-29 09:32:16 +02:00
height = 32;
2021-11-12 17:10:17 +01:00
modules-left =
[ ]
++ lib.optionals cfg.river [
"river/tags"
"river/mode"
]
++ lib.optionals cfg.sway [
"sway/workspaces"
"sway/mode"
]
2024-12-18 09:29:15 +01:00
++ lib.optional (cfg.profile == "home") "custom/now_playing"
++ lib.optional (cfg.profile == "work") "mpris";
2024-10-23 16:24:05 +02:00
modules-center = (lib.optional cfg.sway "sway/window") ++ (lib.optional cfg.river "river/window");
2024-10-23 16:24:05 +02:00
2021-11-12 17:10:17 +01:00
modules-right = [
"network"
"memory"
"cpu"
"temperature"
"wireplumber"
2021-11-12 17:10:17 +01:00
"clock#date"
"clock#time"
2024-04-22 17:42:31 +02:00
"tray"
2021-11-12 17:10:17 +01:00
"idle_inhibitor"
2022-06-15 11:59:11 +02:00
"custom/notifications"
2021-11-12 17:10:17 +01:00
];
"clock#time" = {
interval = 1;
format = "{:%H:%M:%S}";
tooltip = false;
};
2021-11-12 17:10:17 +01:00
"clock#date" = {
interval = 10;
format = "󰃭 {:%e %b %Y}"; # Icon: calendar
tooltip-format = "{:%e %B %Y}";
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
cpu = {
interval = 5;
format = "󰻠 {usage}% ({load})"; # Icon: cpu_64_bit
states = {
warning = 70;
critical = 90;
2021-11-12 17:10:17 +01:00
};
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
memory = {
interval = 5;
format = "󰍛 {}%"; # Icon: memory
states = {
warning = 70;
critical = 90;
2021-11-12 17:10:17 +01:00
};
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
network = {
interval = 5;
format-wifi = "󰖩 {essid} ({signalStrength}%)"; # Icon: wifi
format-ethernet = "󰈀 {ifname}: {ipaddr}/{cidr}"; # Icon: ethernet
format-disconnected = "󰲜 Disconnected"; # Icon: network_off_outline
tooltip-format = "{ifname}: {ipaddr}";
};
2021-11-12 17:10:17 +01:00
"custom/now_playing" = {
exec = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token";
exec-on-event = false;
2022-11-19 17:24:19 +01:00
escape = true;
format = "󰐹 {}"; # Icon: radio
restart-interval = 1;
return-type = "json";
on-click = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token play-pause";
on-scroll-down = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token volume-up";
on-scroll-up = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token-file /run/secrets/ha_now_playing_token volume-down";
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
mpris = {
format = "[{player}] {status_icon} {dynamic}";
status-icons = {
paused = "󰏤 "; # Icon: pause
playing = "󰐊 "; # Icon: play
stopped = "󰓛 "; # Icon: stop
};
on-click-middle = "stop";
};
2024-04-22 17:42:31 +02:00
"sway/mode" = {
format = ''<span style="italic">󰁌 {}</span>''; # Icon: arrow_expand_all
tooltip = false;
};
"sway/window" = {
format = "{}";
max-length = 120;
};
2021-11-12 17:10:17 +01:00
"sway/workspaces" = {
all-outputs = false;
disable-scroll = true;
format = "{icon} {name}";
sort-by-number = true;
format-icons = {
2024-12-18 09:29:15 +01:00
urgent = "";
focused = "";
default = "";
};
};
2024-04-22 17:42:31 +02:00
"river/mode" = {
format = ''<span style="italic">󰁌 {}</span>''; # Icon: arrow_expand_all
};
"river/tags" = { };
"river/window" = {
max-length = 120;
};
2022-10-30 22:19:50 +01:00
"wlr/workspaces" = {
all-outputs = false;
2022-10-30 22:19:50 +01:00
# disable-scroll = true;
2022-11-30 19:24:18 +01:00
on-click = "activate";
format = "{icon} {name}";
2022-10-30 22:19:50 +01:00
sort-by-number = true;
format-icons = {
2023-06-01 16:58:04 +02:00
"urgent" = ""; # Icon: fa-exclamation_circle
"focused" = ""; # Icon: fa-dot_circle_o
"default" = ""; # Icon: fa-circle
2021-11-12 17:10:17 +01:00
};
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
wireplumber = {
format = "{icon} {volume}%";
format-muted = "󰖁"; # Icon: volume_off
format-icons = {
headphones = "󰋋"; # Icon: headphones
handsfree = "󰋎"; # Icon: headset
headset = "󰋎"; # Icon: headset
phone = ""; # Icon: phone
portable = ""; # Icon: phone
car = ""; # Icon: car
2024-02-05 11:46:52 +01:00
default = [
"󰕿"
"󰖀"
"󰕾"
]; # Icons: volume_low volume_medium volume_high
2021-11-12 17:10:17 +01:00
};
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
on-click-middle = "${pkgs.helvum}/bin/helvum";
on-click-right = "${pkgs.easyeffects}/bin/easyeffects";
};
2021-11-12 17:10:17 +01:00
2024-12-18 09:29:15 +01:00
temperature = {
hwmon-path = cfg.cpuTempPath;
critical-threshold = 80;
interval = 5;
format = "{icon} {temperatureC}°C";
format-icons = [
"" # Icon = temperature-empty
"" # Icon = temperature-quarter
"" # Icon = temperature-half
"" # Icon = temperature-three-quarters
"" # Icon = temperature-full
];
tooltip = true;
};
2024-12-18 09:29:15 +01:00
tray = {
icon-size = 21;
spacing = 10;
};
2024-12-18 09:29:15 +01:00
idle_inhibitor = {
2024-02-05 11:46:52 +01:00
format = ''<span size="large">{icon}</span>'';
format-icons = {
activated = "󰛐";
deactivated = "󰛑";
2021-11-12 17:10:17 +01:00
};
};
"custom/notifications" = {
exec = "${pkgs.swaynotificationcenter}/bin/swaync-client --subscribe-waybar";
on-click = "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-panel --skip-wait";
on-click-right = "${pkgs.swaynotificationcenter}/bin/swaync-client --toggle-dnd --skip-wait";
return-type = "json";
tooltip = false;
format = "{icon}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>"; # Icon: bell_outline
none = ""; # Icon: bell_outline
dnd-notification = "<span foreground='red'><sup></sup></span>"; # Icon: bell_off_outline
dnd-none = ""; # Icon: bell_off_outline
2022-06-15 11:59:11 +02:00
};
escape = true;
2021-11-12 17:10:17 +01:00
};
}
];
2024-04-22 17:42:31 +02:00
style = ./style.css;
2021-11-12 17:10:17 +01:00
};
};
}