diff --git a/modules/nixvim/default.nix b/modules/nixvim/default.nix index ec643933..73f90821 100644 --- a/modules/nixvim/default.nix +++ b/modules/nixvim/default.nix @@ -2,5 +2,6 @@ imports = [ ./keyunmaps.nix ./plugins/firenvim.nix + ./plugins/nvim-config-local.nix ]; } diff --git a/modules/nixvim/plugins/nvim-config-local.nix b/modules/nixvim/plugins/nvim-config-local.nix new file mode 100644 index 00000000..d46e6d92 --- /dev/null +++ b/modules/nixvim/plugins/nvim-config-local.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, helpers, ... }: + +let + cfg = config.plugins.nvim-config-local; +in +{ + options.plugins.nvim-config-local = + helpers.neovim-plugin.extraOptionsOptions // { + enable = lib.mkEnableOption "nvim-config-local"; + + package = helpers.mkPackageOption "nvim-config-local" pkgs.vimPlugins.nvim-config-local; + + configFiles = lib.mkOption { + type = with lib.types; listOf str; + default = [ ".nvim.lua" ".nvimrc" ".exrc" ]; + example = [ "config/nvim.lua" ]; + description = '' + A list of patterns to load (includes Lua configurations). + ''; + }; + + autocommandsCreate = helpers.defaultNullOpts.mkBool true "Create autocommands for sourcing local files."; + commandsCreate = helpers.defaultNullOpts.mkBool true "Create user commands for nvim-config-local."; + lookupParents = helpers.defaultNullOpts.mkBool false "Enable lookup in parent directories when sourcing local configs."; + }; + + config = + let + setupOptions = { + config_files = cfg.configFiles; + autocommands_create = cfg.autocommandsCreate; + commands_create = cfg.commandsCreate; + lookup_parents = cfg.lookupParents; + } // cfg.extraOptions; + in + lib.mkIf cfg.enable { + extraPlugins = [ cfg.package ]; + + extraConfigLua = '' + require("config-local").setup(${helpers.toLuaConfig setupOptions}) + ''; + }; +}