modules: avoid setting empty strings to extraConfig* options

Problem:  Some modules are setting empty strings to extraConfig* options
          with the intention to not generate any config. But empty
          strings are also values, so they are still concatenated in the
          final value of extraConfig* options. This results in a
          multiple empty strings in extraConfigs.

Solution: Avoid using optionalString when setting values to extraConfig*
          options. Use mkIf instead.

          This commit also fixes mkIf condition in autocmd module.

          `mkNeovimPlugin` is a special case. To avoid evaluating
          caller's arguments mkMerge/optionalAttrs pattern is used
          instead.
This commit is contained in:
Stanislav Asunkin 2024-07-21 20:59:16 +03:00 committed by Gaétan Lepage
parent 299d0406bb
commit 9317537848
7 changed files with 80 additions and 73 deletions

View file

@ -110,11 +110,12 @@ with lib;
{
extraPlugins = (optional installPackage cfg.package) ++ extraPlugins;
inherit extraPackages;
${extraConfigNamespace} = optionalString callSetup ''
}
(optionalAttrs callSetup {
${extraConfigNamespace} = ''
require('${luaName}')${setup}(${optionalString (cfg ? settings) (toLuaObject cfg.settings)})
'';
}
})
(optionalAttrs (isColorscheme && (colorscheme != null)) { colorscheme = mkDefault colorscheme; })
(extraConfig cfg)
]);