{ config, lib, pkgs, ... }:

with lib;

{
  config = {
    programs.i3status-rust = {
      enable = true;

      bars = {

        top = {
          blocks = [
            {
              block = "disk_space";
              path = "/";
              alias = "/";
              info_type = "available";
              unit = "GB";
              interval = 60;
              warning = 20.0;
              alert = 10.0;
            }
            {
              block = "memory";
              display_type = "memory";
              format_mem = "{Mug}GB ({Mup}%)";
              format_swap = "{SUp}%";
            }
          ];
        };

        bottom = {
          blocks = [
            {
              block = "cpu";
              interval = 1;
              format = "{barchart}";
            }
            {
              block = "load";
              interval = 1;
              format = "{1m} {5m}";
            }
          ];
          icons = "awesome5";

          theme = "gruvbox-dark";
        };

      };

    };

    test.stubs.i3status-rust = { };

    nmt.script = ''
      assertFileExists home-files/.config/i3status-rust/config-top.toml
      assertFileContent home-files/.config/i3status-rust/config-top.toml \
        ${
          pkgs.writeText "i3status-rust-expected-config" ''
            icons = "none"
            theme = "plain"
            [[block]]
            alert = 10
            alias = "/"
            block = "disk_space"
            info_type = "available"
            interval = 60
            path = "/"
            unit = "GB"
            warning = 20

            [[block]]
            block = "memory"
            display_type = "memory"
            format_mem = "{Mug}GB ({Mup}%)"
            format_swap = "{SUp}%"
          ''
        }

      assertFileExists home-files/.config/i3status-rust/config-bottom.toml
      assertFileContent \
        home-files/.config/i3status-rust/config-bottom.toml \
        ${
          pkgs.writeText "i3status-rust-expected-config" ''
            icons = "awesome5"
            theme = "gruvbox-dark"
            [[block]]
            block = "cpu"
            format = "{barchart}"
            interval = 1

            [[block]]
            block = "load"
            format = "{1m} {5m}"
            interval = 1
          ''
        }
    '';
  };
}