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 = "";
+        };
       };
     };
   };