diff --git a/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix new file mode 100644 index 00000000..1d3ee7f5 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix @@ -0,0 +1,38 @@ +{lib, ...}: let + inherit (lib.modules) mkRemovedOptionModule; + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) submodule attrs; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + imports = [ + (mkRemovedOptionModule ["vim" "visuals" "smoothScroll"] '' + `vim.visuals.smoothScroll` has been removed. You may consider enabling the + option `vim.visuals.cinnamon-nvim` to repliace previous smooth scrolling + behaviour. + '') + ]; + + options.vim.visuals.cinnamon-nvim = { + enable = mkEnableOption "smooth scrolling for ANY command [cinnamon-nvim]"; + setupOpts = mkPluginSetupOption "cinnamon.nvim" { + options = mkOption { + type = attrs; + default = { + # Defaults provided for the sake of documentation only! + # Who would've guessed setupOpts.options would be confusing? + mode = "cursor"; + count_only = false; + }; + description = "Scroll options"; + }; + + keymaps = mkOption { + description = "Keymap options for Cinnamon. Please see documentation before enablg"; + type = submodule { + basic = mkEnableOption "basic animation keymaps"; + extra = mkEnableOption "extra animation keymaps"; + }; + }; + }; + }; +} diff --git a/modules/plugins/visuals/cinnamon-nvim/config.nix b/modules/plugins/visuals/cinnamon-nvim/config.nix new file mode 100644 index 00000000..8e420221 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/config.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; + + cfg = config.vim.visuals.cinnamon-nvim; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = ["cinnamon-nvim"]; + + pluginRC.cursorline = entryAnywhere '' + require("cinnamon").setup(${toLuaObject cfg.setupOpts}) + ''; + }; + }; +} diff --git a/modules/plugins/visuals/cinnamon-nvim/default.nix b/modules/plugins/visuals/cinnamon-nvim/default.nix new file mode 100644 index 00000000..29ced8e8 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./cinnamon-nvim.nix + ]; +} diff --git a/modules/plugins/visuals/default.nix b/modules/plugins/visuals/default.nix index 2c69947f..57eb3295 100644 --- a/modules/plugins/visuals/default.nix +++ b/modules/plugins/visuals/default.nix @@ -1,6 +1,7 @@ { imports = [ - ./fidget + ./cinnamon-nvim + ./fidget-nvim ./indent-blankline ./nvim-cursorline ./nvim-scrollbar diff --git a/modules/plugins/visuals/visuals.nix b/modules/plugins/visuals/visuals.nix index 0e7b357f..8ce416db 100644 --- a/modules/plugins/visuals/visuals.nix +++ b/modules/plugins/visuals/visuals.nix @@ -3,8 +3,8 @@ lib, ... }: let - inherit (lib.options) mkEnableOption mkOption literalExpression; - inherit (lib.types) int bool str nullOr either listOf attrsOf; + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) int bool str; inherit (lib.nvim.binds) mkMappingOption; cfg = config.vim.visuals; @@ -12,8 +12,6 @@ in { options.vim.visuals = { enable = mkEnableOption "Visual enhancements."; - smoothScroll.enable = mkEnableOption "smooth scrolling [cinnamon-nvim]"; - cellularAutomaton = { enable = mkEnableOption "cellular automaton [cellular-automaton]";