{ config, lib, pkgs, ... }: let cfg = config.soispha.programs.i3bar-river; mkScript = name: deps: lib.getExe (pkgs.writeShellApplication { inherit name; text = builtins.readFile ./scripts/${name}; inheritPath = false; runtimeInputs = deps; }); in { options.soispha.programs.i3status-rust = { enable = lib.mkEnableOption "i3status-rust"; package = lib.mkPackageOption pkgs "i3status-rust-patched" {}; }; config = lib.mkIf cfg.enable { home-manager.users.soispha = { programs.i3status-rust = { enable = true; inherit (cfg) package; bars.default = { settings = { icons = { icons = "material-nf"; overrides = { cpu = [ "󰍛" # nf-md-memory ]; memory_mem = ""; # nf-fa-bars }; }; theme = { theme = "slick"; overrides = { separator = "native"; alternating_tint_bg = "none"; alternating_tint_fg = "none"; }; }; }; blocks = [ { block = "time"; format = " $timestamp.datetime(format:'%d/%m/%y (%a) %H:%M %:z') "; interval = 60; } { # TODO(@bpeetz): Switch to “music” when mpd gets mpris support <2025-05-20> block = "custom"; interval = "once"; persistent = true; command = mkScript "mpd_song_name.sh" [pkgs.mpc pkgs.coreutils]; hide_when_empty = true; shell = "${lib.getExe pkgs.dash}"; format = " $text.str(max_width:60,rot_interval:0.5) "; } { block = "sound"; driver = "pulseaudio"; headphones_indicator = true; } # System info { block = "cpu"; } { block = "memory"; format = " $icon $mem_used_percents {($swap_used_percents.eng(range:1..)) | }"; } { block = "amd_gpu"; format = " $icon $utilization (^icon_memory_mem $vram_used_percents) "; } { block = "net"; format = " ^icon_net_down $speed_down.eng(prefix:Ki) ^icon_net_up $speed_up.eng(prefix:Ki) "; } { block = "privacy"; driver = [ {name = "v4l";} {name = "pipewire";} ]; } { block = "disk_space"; path = "/srv"; info_type = "used"; format = " $icon $used.eng(prefix:Gi) ($percentage) "; backend = "btrfs"; # warn if 80 % is used, alert after 90 % used. warning = 80; alert = 90; } { block = "backlight"; missing_format = ""; } { block = "battery"; missing_format = ""; } # { # block = "calendar"; # # source = { # calendars = ["user/calendar"]; # auth = { # type = "unauthenticated"; # }; # }; # } # { # block = "focused_window"; # driver = "wlr_toplevel_management"; # } # { # block = "maildir"; # display_type = "new"; # inboxes = ["~/.local/share/maildir/soispha/*"]; # interval = 60; # threshold_critical = 10; # threshold_warning = 1; # } ]; }; }; programs.i3bar-river.settings.command = "${lib.getExe cfg.package} config-default.toml"; }; }; }