{ extraLuaPackages = { extraLuaPackages = ps: [ ps.jsregexp ]; # Make sure jsregexp is in LUA_PATH extraConfigLua = ''require("jsregexp")''; }; # Test that all extraConfigs are present in output all-configs = { config, pkgs, lib, ... }: let configs = { extraConfigLuaPre = "string.format('extraConfigLuaPre1')"; extraConfigLua = "string.format('extraConfigLua2')"; extraConfigLuaPost = "string.format('extraConfigLuaPost3')"; extraConfigVim = "let g:var = 'extraConfigVim4'"; }; mkConfigAssertions = name: value: [ { assertion = lib.hasInfix "extraConfigLuaPre1" value; message = "Configuration file ${name} should contain extraConfigLuaPre."; } { assertion = lib.hasInfix "extraConfigLua2" value; message = "Configuration file ${name} should contain extraConfigLua."; } { assertion = lib.hasInfix "extraConfigLuaPost3" value; message = "Configuration file ${name} should contain extraConfigLuaPost."; } { assertion = lib.hasInfix "extraConfigVim4" value; message = "Configuration file ${name} should contain extraConfigVim."; } ]; in configs // { files = { "test.lua" = configs; "test.vim" = configs; }; # Plugin configs # TODO: Test this makes it to the nvim configuration # NOTE: config.content currently does not contain extraPlugins config extraPlugins = [ { plugin = pkgs.emptyDirectory; config = "let g:var = 'neovimRcContent5'"; } ]; assertions = # Main init.lua mkConfigAssertions "init.lua" config.content # Extra file modules ++ mkConfigAssertions "test.lua" config.files."test.lua".content ++ mkConfigAssertions "test.vim" config.files."test.vim".content; }; files-default-empty = { config, helpers, ... }: { files = { # lua type "test.lua" = { }; # vim type "test.vim" = { }; }; assertions = [ { assertion = !helpers.hasContent config.files."test.lua".content; message = "Default content of test.lua file is expected to be empty."; } { assertion = !helpers.hasContent config.files."test.vim".content; message = "Default content of test.vim file is expected to be empty."; } ]; }; }