{ pkgs, ... }: let kbd_switch = pkgs.writeShellScriptBin "kbd_switch" '' declare -A -r KBD_CYCLE_MAP=( ["English (US)"]="de" ["German"]="ba" ) LAYOUT="$(${pkgs.sway}/bin/swaymsg -t get_inputs -r | ${pkgs.jq}/bin/jq -r 'map(select(.type == "keyboard")).[0].xkb_layout_names.[]')" swaymsg input "*" xkb_layout ''${KBD_CYCLE_MAP["$LAYOUT"]:-"us"} ''; in { programs.i3status-rust = { bars.top = { icons = "awesome5"; theme = "gruvbox-dark"; settings.theme = { theme = "plain"; overrides = { separator_fg = "#3287a8"; }; }; blocks = [ { block = "keyboard_layout"; driver = "sway"; click = [ { cmd = "${kbd_switch}/bin/kbd_switch"; button = "left"; } ]; } { block = "battery"; interval = 10; format = "$icon $percentage $time"; } { block = "disk_space"; path = "/nix"; info_type = "available"; interval = 20; warning = 20.0; alert = 10.0; } { block = "disk_space"; path = "/home"; info_type = "available"; interval = 20; warning = 20.0; alert = 10.0; } { block = "net"; device = "wlan0"; if_command = "ip link show wlan0"; interval = 2; } { block = "net"; device = "enp5s0"; if_command = "ip link show enp5s0"; interval = 2; } { block = "net"; device = "enp7s0f3u1u1"; if_command = "ip link show enp7s0f3u1u1"; interval = 2; } { block = "net"; device = "enp7s0f4u1u1"; if_command = "ip link show enp7s0f4u1u1"; interval = 2; } { block = "net"; if_command = "ip link show eno1"; device = "eno1"; interval = 2; } { block = "memory"; } { block = "cpu"; interval = 1; format = "$utilization $barchart $frequency"; } { block = "temperature"; interval = 3; } { block = "sound"; } { block = "time"; interval = 60; } ]; }; }; }