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

with lib;

{
  config = {
    home.stateVersion = "21.11";

    programs.waybar = {
      package = config.lib.test.mkStubPackage { outPath = "@waybar@"; };
      enable = true;
      settings = [
        {
          layer = "top";
          position = "top";
          height = 30;
          output = [ "DP-1" ];
          modules-left = [ "sway/workspaces" "sway/mode" "custom/my-module" ];
          modules-center = [ "sway/window" ];
          modules-right = [
            "idle_inhibitor"
            "pulseaudio"
            "network"
            "cpu"
            "memory"
            "backlight"
            "tray"
            "battery#bat1"
            "battery#bat2"
            "clock"
          ];

          modules = {
            "sway/workspaces" = {
              disable-scroll = true;
              all-outputs = true;
            };
            "sway/mode" = { tooltip = false; };
            "sway/window" = { max-length = 120; };
            "idle_inhibitor" = { format = "{icon}"; };
            "custom/my-module" = {
              format = "hello from {}";
              exec = let
                dummyScript =
                  config.lib.test.mkStubPackage { outPath = "@dummy@"; };
              in "${dummyScript}/bin/dummy";
            };
          };
        }
        {
          position = "bottom";
          output = [ "!DP-1" ];
          modules-left = [ "sway/mode" ];
          modules-center = [ "clock" ];
          modules = { "sway/mode" = { tooltip = true; }; };
        }
      ];
    };

    nmt.script = ''
      assertPathNotExists home-files/.config/waybar/style.css
      assertFileContent \
        home-files/.config/waybar/config \
        ${./settings-complex-expected.json}
    '';
  };
}