Programs.i3status-rust.enable has no effect in Home Manager

Hi all,

I have the following in my configuration.nix file (I use home-manager as a NixOS module):

home-manager.users.refaelsh = { pkgs, ... }: {
    .
    .
    .
    programs.i3status-rust.enable = true;
    .
    .
    .
}

But I still see that i3 uses i3status and not i3status-rust .

Please help :slight_smile:

Did you also edit your i3 config to launch i3status-rs instead of i3status? programs.i3status-rust only lets you install it and configure it, but you need to also configure i3 to launch it AFAIK. See the i3status-rust docs

If you’re still having issues, you’ll need to post the the rest of your config.

Cross-linking with your github issue: programs.i3status-rust.enable has no effect · Issue #3016 · nix-community/home-manager · GitHub

1 Like

Oh! I get it now. Thank you for your answer :slight_smile:

A follow up question please. What is the name of the correct option in Home Manager? The closest thing I could find is this: https://nix-community.github.io/home-manager/options.html#opt-xsession.windowManager.i3.config.bars._.statusCommand.
But I dont understand how to use it:

  1. The asterisk part of the option give out errors when doing sudo nixos-rebuild switch.
  2. I also dont understand the example given there.

I need something in Home Manager that will write the following line into ~/.config/i3/config:

status_command path/to/i3status-rs path/to/your/config.toml

The * is showing that it is part of a list. The xsession.windowManager.i3.config.bars option is a list of submodules that configure the i3 bars. Each entry in the list is a separate bar.

You’d write something like this:

xsession.windowManager.i3.config.bars = [
{
command = "${pkgs.i3status-rust}/bin/i3status-rs";
# other config options

}
];

I don’t know if i3status-rs is fully compatible with i3status, which would mean you could configure it with those options as well, but it’s probably worth testing.

1 Like

Yep. This was it. Thank you very much :slight_smile:

For sway it looks like this:

{ pkgs, config, ... }:
{
  wayland.windowManager.sway = {
    enable = true;
    config = {
      ...
      bars = [{
        statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs";
      }];
    };
  };
  xdg.configFile."i3status-rust/config.toml".source = ../../../common/i3status-rust/config.toml;
  programs.i3status-rust.enable = true;
}