diff --git a/modules/filetype.nix b/modules/filetype.nix index c9c715c2..f1653552 100644 --- a/modules/filetype.nix +++ b/modules/filetype.nix @@ -6,6 +6,8 @@ }: with lib; let + cfg = config.filetype; + filetypeDefinition = helpers.mkNullOrOption ( with types; attrsOf (oneOf [ @@ -52,7 +54,9 @@ in pattern = filetypeDefinition "set filetypes matching the specified pattern"; }; - config.extraConfigLua = helpers.mkIfNonNull' config.filetype '' - vim.filetype.add(${helpers.toLuaObject config.filetype}) - ''; + config.extraConfigLua = + lib.mkIf (cfg != null && (builtins.any (v: v != null) (builtins.attrValues cfg))) + '' + vim.filetype.add(${helpers.toLuaObject cfg}) + ''; } diff --git a/tests/test-sources/modules/filetypes.nix b/tests/test-sources/modules/filetypes.nix index dd774234..34e3b81f 100644 --- a/tests/test-sources/modules/filetypes.nix +++ b/tests/test-sources/modules/filetypes.nix @@ -38,4 +38,21 @@ }; }; }; + + default-empty.module = + { config, ... }: + { + files.test = { }; + + assertions = [ + { + assertion = builtins.match ".*vim\.filetype\..*" config.content == null; + message = "No vim.filetype definitions should be present in init.lua by default."; + } + { + assertion = builtins.match ".*vim\.filetype\..*" config.files.test.content == null; + message = "No vim.filetype definitions should be present in files submodules by default."; + } + ]; + }; }