{
  lib,
  config,
  ...
}:

lib.mkIf (lib.elem "nvim::noice" config.machine.pkgs) {
  programs.nvim-lazy.lazyPlugins = [
    {
      dir = vPlug: vPlug.noice-nvim;
      event = [ "VeryLazy" ];
      dependencies =
        vPlug: with vPlug; [
          nui-nvim
          nvim-notify
        ];
      config = # lua
        ''
          function()
            require("noice").setup({
              lsp = {
                -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
                override = {
                  ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
                  ["vim.lsp.util.stylize_markdown"] = true,
                  ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
                },
              },
              -- you can enable a preset for easier configuration
              presets = {
                bottom_search = true, -- use a classic bottom cmdline for search
                -- command_palette = true, -- position the cmdline and popupmenu together
                -- long_message_to_split = true, -- long messages will be sent to a split
                -- inc_rename = false, -- enables an input dialog for inc-rename.nvim
                -- lsp_doc_border = false, -- add a border to hover docs and signature help
              },
            })
          end
        '';
    }
    {
      lazy = true;
      dir = vPlug: vPlug.nvim-notify;
    }
    {
      dir = vPlug: vPlug.dressing-nvim;
      opts = { };
    }
  ];
}