From 80fee9dae724cc695d00c8937996eeb7dae893e9 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Sun, 10 Mar 2024 20:41:33 +0000 Subject: [PATCH] feat(nvim-notify): custom setup opts --- .../ui/notifications/nvim-notify/config.nix | 16 +--- .../notifications/nvim-notify/nvim-notify.nix | 86 ++++++++++++------- 2 files changed, 57 insertions(+), 45 deletions(-) diff --git a/modules/ui/notifications/nvim-notify/config.nix b/modules/ui/notifications/nvim-notify/config.nix index 852b94d3..7a11b6bb 100644 --- a/modules/ui/notifications/nvim-notify/config.nix +++ b/modules/ui/notifications/nvim-notify/config.nix @@ -5,26 +5,16 @@ }: let inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; + inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.notify.nvim-notify; in { config = mkIf cfg.enable { vim = { startPlugins = ["nvim-notify"]; + luaConfigRC.nvim-notify = entryAnywhere '' - require('notify').setup { - stages = "${cfg.stages}", - timeout = ${toString cfg.timeout}, - background_colour = "${cfg.background_colour}", - position = "${cfg.position}", - icons = { - ERROR = "${cfg.icons.ERROR}", - WARN = "${cfg.icons.WARN}", - INFO = "${cfg.icons.INFO}", - DEBUG = "${cfg.icons.DEBUG}", - TRACE = "${cfg.icons.TRACE}", - }, - } + require('notify').setup(${toLuaObject cfg.setupOpts}) -- required to fix offset_encoding errors local notify = vim.notify diff --git a/modules/ui/notifications/nvim-notify/nvim-notify.nix b/modules/ui/notifications/nvim-notify/nvim-notify.nix index 57683a41..86d15cdf 100644 --- a/modules/ui/notifications/nvim-notify/nvim-notify.nix +++ b/modules/ui/notifications/nvim-notify/nvim-notify.nix @@ -1,42 +1,64 @@ -{lib, ...}: let - inherit (lib) mkOption mkEnableOption; - inherit (lib.types) enum int str attrsOf; +{ + config, + lib, + ... +}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.modules) mkRenamedOptionModule; + inherit (lib.types) int str enum attrsOf; + inherit (lib.nvim.types) mkPluginSetupOption; in { + imports = let + renamedSetupOpt = name: + mkRenamedOptionModule + ["vim" "notify" "nvim-notify" name] + ["vim" "notify" "nvim-notify" "setupOpts" name]; + in [ + (renamedSetupOpt "stages") + (renamedSetupOpt "timeout") + (renamedSetupOpt "background_colour") + (renamedSetupOpt "position") + (renamedSetupOpt "icons") + ]; + options.vim.notify.nvim-notify = { enable = mkEnableOption "nvim-notify notifications"; - stages = mkOption { - type = enum ["fade_in_slide_out" "fade_in" "slide_out" "none"]; - default = "fade_in_slide_out"; - description = "The stages of the notification"; - }; - timeout = mkOption { - type = int; - default = 1000; - description = "The timeout of the notification"; - }; + setupOpts = mkPluginSetupOption "nvim-notify" { + stages = mkOption { + type = enum ["fade_in_slide_out" "fade_in" "slide_out" "none"]; + default = "fade_in_slide_out"; + description = "The stages of the notification"; + }; - background_colour = mkOption { - type = str; - default = "#000000"; - description = "The background colour of the notification"; - }; + timeout = mkOption { + type = int; + default = 1000; + description = "The timeout of the notification"; + }; - position = mkOption { - type = enum ["top_left" "top_right" "bottom_left" "bottom_right"]; - default = "top_right"; - description = "The position of the notification"; - }; + background_colour = mkOption { + type = str; + default = "#000000"; + description = "The background colour of the notification"; + }; - icons = mkOption { - type = attrsOf str; - description = "The icons of the notification"; - default = { - ERROR = ""; - WARN = ""; - INFO = ""; - DEBUG = ""; - TRACE = ""; + position = mkOption { + type = enum ["top_left" "top_right" "bottom_left" "bottom_right"]; + default = "top_right"; + description = "The position of the notification"; + }; + + icons = mkOption { + type = attrsOf str; + description = "The icons of the notification"; + default = { + ERROR = ""; + WARN = ""; + INFO = ""; + DEBUG = ""; + TRACE = ""; + }; }; }; };