anchor.diff:  
     barModule = types.submodule {
       options = {
  +      id = mkOption {
  +        type = types.nullOr types.string;
  +        default = null;
  +        description = ''
  +          Specifies the bar ID for the configured bar instance.
  +          If this option is missing, the ID is set to bar-x, where x corresponds
  +          to the position of the embedding bar block in the config file.
  +        '';
  +      };
  +
         mode = mkOption {
           type = types.enum [ "dock" "hide" "invisible" ];
           default = "dock";
  
positive.code:     map (c: "assign ${criteriaStr c} ${workspace}") criteria
    );
  
    barStr = { mode, hiddenState, position, workspaceButtons, statusCommand, ... }: ''
      bar {
        mode ${mode}
        hidden_state ${hiddenState}
        position ${position}
        status_command ${statusCommand}
        workspace_buttons ${if workspaceButtons then "yes" else "no"}
      }
    '';
  
  
negative.code:         description = "Whether workspace buttons should be shown or not.";
        };
  
        workspaceNumbers = mkOption {
          type = types.bool;
          default = true;
          description = "Whether workspace numbers should be displayed within the workspace buttons.";
        };
  
        command = mkOption {
          type = types.string;
          default = "${cfg.package}/bin/i3bar";
          defaultText = "i3bar";
          description = "Command that will be used to start a bar.";
          example = "${pkgs.i3-gaps}/bin/i3bar -t";
        };
  
        statusCommand = mkOption {
          type = types.string;
          default = "${pkgs.i3status}/bin/i3status";
          description = "Command that will be used to get status lines.";
        };
  
        colors = mkOption {
          type = types.submodule {
            options = {
              background = mkOption {
                type = types.string;
                default = "#000000";
                description = "Background color of the bar.";
              };
  
              statusline = mkOption {
                type = types.string;
                default = "#ffffff";
                description = "Text color to be used for the statusline.";
              };
  
              separator = mkOption {
                type = types.string;
                default = "#666666";
                description = "Text color to be used for the separator.";
              };
  
              focusedWorkspace = mkOption {
                type = barColorSetModule;
                default = { border = "#4c7899"; background = "#285577"; text = "#ffffff"; };
                description = ''
                  Border, background and text color for a workspace button when the workspace has focus.
                '';
              };
  
              activeWorkspace = mkOption {
                type = barColorSetModule;
                default = { border = "#333333"; background = "#5f676a"; text = "#ffffff"; };
                description = ''
                  Border, background and text color for a workspace button when the workspace is active.
                '';
              };
  
              inactiveWorkspace = mkOption {
                type = barColorSetModule;
                default = { border = "#333333"; background = "#222222"; text = "#888888"; };
                description = ''
                  Border, background and text color for a workspace button when the workspace does not
                  have focus and is not active.
                '';
              };
  
              urgentWorkspace = mkOption {
                type = barColorSetModule;
                default = { border = "#2f343a"; background = "#900000"; text = "#ffffff"; };
                description = ''
                  Border, background and text color for a workspace button when the workspace contains
                  a window with the urgency hint set.
                '';
              };
  
              bindingMode = mkOption {
                type = barColorSetModule;
                default = { border = "#2f343a"; background = "#900000"; text = "#ffffff"; };
                description = "Border, background and text color for the binding mode indicator";
              };
            };
          };
          default = {};
          description = ''
            Bar color settings. All color classes can be specified using submodules
            with 'border', 'background', 'text', fields and RGB color hex-codes as values.
            See default values for the reference.
            Note that 'background', 'status', and 'separator' parameters take a single RGB value.
  
            See <link xlink:href="https://i3wm.org/docs/userguide.html#_colors"/>.
          '';
        };
      };
    };
  
  