{ config, pkgs, lib, ... }: with lib; let package = pkgs.writeScriptBin "dummy-waybar" "" // { outPath = "@waybar@"; }; in { config = { programs.waybar = { inherit package; enable = true; settings = [{ modules-left = [ "custom/my-module" ]; modules-center = [ "this_module_is_not_a_valid_default_module_nor_custom_module" ]; modules-right = [ "battery#bat1" # CSS identifier is allowed "custom/this_custom_module_doesn't_have_a_definition_in_modules" ]; modules = { "custom/this_module_is_not_referenced" = { }; "battery#bat1" = { }; "custom/my-module" = { }; }; }]; }; test.asserts.warnings.expected = [ "The module 'this_module_is_not_a_valid_default_module_nor_custom_module' defined in 'programs.waybar.settings.[].modules-center' is neither a default module or a custom module declared in 'programs.waybar.settings.[].modules'" "The module 'custom/this_custom_module_doesn't_have_a_definition_in_modules' defined in 'programs.waybar.settings.[].modules-right' is neither a default module or a custom module declared in 'programs.waybar.settings.[].modules'" "The module 'custom/this_module_is_not_referenced' defined in 'programs.waybar.settings.[].modules' is not referenced in either `modules-left`, `modules-center` or `modules-right` of Waybar's options" ]; nmt.script = '' assertPathNotExists home-files/.config/waybar/style.css assertFileContent \ home-files/.config/waybar/config \ ${ pkgs.writeText "expected-json" '' [ { "battery#bat1": {}, "custom/my-module": {}, "custom/this_module_is_not_referenced": {}, "modules-center": [ "this_module_is_not_a_valid_default_module_nor_custom_module" ], "modules-left": [ "custom/my-module" ], "modules-right": [ "battery#bat1", "custom/this_custom_module_doesn't_have_a_definition_in_modules" ] } ] '' } ''; }; }