return {
  "EdenEast/nightfox.nvim",
  lazy = false,
  priority = 1000,
  dependencies = {
    "folke/snacks.nvim",
    "nvim-tree/nvim-web-devicons",
    "nvim-lualine/lualine.nvim",
  },

  config = function()
    local nightfox = require('nightfox')
    local Shade = require('nightfox.lib.shade')
    local c = require('nightfox.lib.color')

    local matte_black_palette = {
      -- Base "Matte Black" Palette Overrides
      bg0 = "#0D0D0D", bg1 = "#121212", bg2 = "#1E1E1E", bg3 = "#2C2C2C", bg4 = "#333333",
      fg0 = "#FFFFFF", fg1 = "#BEBEBE", fg2 = "#BEBEBE", fg3 = "#8A8A8D",
      sel0 = "#2C2C2C",
      sel1 = c.from_hex("#2C2C2C"):blend(c.from_hex("#F59E0B"), 0.2):to_css(),
      comment = "#333333",
      red = Shade.new("#D35F5F", c.from_hex("#D35F5F"):lighten(8):to_css(), "#B91C1C"),
      orange = Shade.new("#F59E0B", "#FFC107", c.from_hex("#F59E0B"):lighten(-8):to_css()),
      yellow = Shade.new("#FFC107", c.from_hex("#FFC107"):lighten(10):to_css(), "#F59E0B"),
      white = Shade.new("#EAEAEA", "#FFFFFF", "#BEBEBE"),
      black = Shade.new("#333333", "#8A8A8D", "#1E1E1E"),
      green = Shade.new("#8A9A7B", "#A5B799", "#6F7C62"),
      cyan = Shade.new("#88AABB", "#A2C4D3", "#6E8A99"),
      blue = Shade.new("#8A9FBE", "#A4BBDD", "#7084A1"),
      magenta = Shade.new("#C1A1C1", "#D9B9D9", "#A989A9"),
      pink = Shade.new("#D398A7", "#EBC0CB", "#B97E8D"),

      -- Lualine Palette Extensions
      lualine_normal_bg = "#F59E0B",
      lualine_insert_bg = "#B91C1C",
      lualine_visual_bg = "#C1A1C1",
      lualine_command_bg = "#F59E0B",
      lualine_inactive_bg = c.from_hex("#121212"):lighten(5):to_css(),

      -- Treesitter Palette Extensions
      ts_parameter = "#D398A7",
      ts_property = "#EAEAEA",
    }

    local final_palettes = {
      carbonfox = require('nightfox.lib.collect').deep_extend(
        require('nightfox.palette').load('carbonfox'),
        matte_black_palette
      )
    }

    local specs = {
      carbonfox = {
        syntax = {
          keyword = "red", -- "local", "function", "if"
          conditional = "red",
          statement = "red",
          func = "orange",
          string = "orange.dim",
          number = "orange",
          operator = "yellow",
          variable = "white",
          ident = "white.dim",
          const = "white",
          type = "white",
          field = "white.dim",
          comment = "comment",
        },
        diag = {
            error = "red",
            warn = "red",
            info = "cyan",
            hint = "magenta",
        }
      }
    }

    local groups = {
      all = {
        -- Base Groups
        Whitespace = { fg = "palette.black.bright" },
        NonText = { fg = "palette.black.bright" },
        IncSearch = { bg = "palette.sel1" },

        -- Noice Cmdline Overrides
        NoiceCmdlinePopupBorder = { fg = "palette.fg3" },
        NoiceCmdlinePopupTitle = { fg = "palette.fg3", style = "bold" },
        NoiceCmdlinePopupBorderSearch = { fg = "palette.fg3" },
        NoiceCmdlinePopupTitleSearch = { fg = "palette.fg3", style = "bold" },
        NoiceCmdLineIcon = { fg = "palette.red" },

        -- Neo-tree overrides
        NeoTreeNormal = { bg = "palette.bg0" },
        NeoTreeNormalNC = { link = "NeoTreeNormal" },
        NeoTreeDirectoryName = { fg = "palette.fg3" },
        NeoTreeDirectoryIcon = { fg = "palette.fg3" },
        NeoTreeRootName = { fg = "palette.orange", style = "bold" },
        NeoTreeGitAdded = { fg = "palette.green" },
        NeoTreeGitModified = { fg = "palette.yellow" },
        NeoTreeGitDeleted = { fg = "palette.red" },
        NeoTreeGitIgnored = { fg = "palette.comment" },
        NeoTreeC = { fg = "palette.orange", bg = "palette.sel0" },

        -- Dashboard overrides
        SnacksDashboardHeader = { fg = "palette.fg3" },
        SnacksDashboardIcon = { fg = "palette.fg1" },
        SnacksDashboardDir = { fg = "palette.orange" },
        SnacksDashboardFile = { fg = "palette.fg3" },
        SnacksDashboardFooter = { fg = "palette.fg3" },
        SnacksDashboardKey = { fg = "palette.orange" },
        SnacksDashboardDesc = { fg = "palette.fg1" },
        SnacksDashboardSpecial = { fg = "palette.fg1" },

        -- Treesitter overrides
        ["@comment"] = { fg = "palette.comment", style = "italic" },
        ["@keyword"] = { fg = "palette.red", style = "bold" },
        ["@keyword.function"] = { fg = "palette.red", style = "bold" },
        ["@keyword.operator"] = { fg = "palette.red", style = "bold" },
        ["@function"] = { fg = "palette.orange", style = "bold" },
        ["@function.builtin"] = { fg = "palette.orange", style = "bold" },
        ["@function.call"] = { fg = "palette.orange" },
        ["@string"] = { fg = "palette.orange" },
        ["@number"] = { fg = "palette.orange" },
        ["@operator"] = { fg = "palette.yellow" },
        ["@variable"] = { fg = "palette.white" },
        ["@constant"] = { fg = "palette.white" },
        ["@type"] = { fg = "palette.white.dim" },
        ["@variable.parameter"] = { fg = "palette.ts_parameter", style = "italic" },
        ["@property"] = { fg = "palette.ts_property" },
        ["@field"] = { fg = "palette.ts_property" },
      }
    }

    nightfox.setup({
      options = {
        style = "carbonfox",
        terminal_colors = true,
        dim_inactive = true,
        styles = { comments = "italic", functions = "bold", keywords = "bold" },
        modules = {
          neotree = true,
          treesitter = true,
        },
      },
      palettes = final_palettes,
      specs = specs,
      groups = groups
    })

    vim.cmd("colorscheme carbonfox")

    -- Lualine overrides
    local lualine_theme = {
      normal = {
        a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_normal_bg, gui = "bold" },
        b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
        c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
      },
      insert = {
        a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_insert_bg, gui = "bold" },
        b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
        c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
      },
      visual = {
        a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_visual_bg, gui = "bold" },
        b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
        c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
      },
      command = {
        a = { fg = matte_black_palette.bg0, bg = matte_black_palette.lualine_command_bg, gui = "bold" },
        b = { fg = matte_black_palette.fg1, bg = matte_black_palette.lualine_inactive_bg },
        c = { fg = matte_black_palette.fg2, bg = matte_black_palette.lualine_inactive_bg },
      },
      inactive = {
        a = { fg = matte_black_palette.fg3, bg = matte_black_palette.lualine_inactive_bg },
        b = { fg = matte_black_palette.fg3, bg = matte_black_palette.lualine_inactive_bg },
        c = { fg = matte_black_palette.comment, bg = matte_black_palette.lualine_inactive_bg },
      },
    }

   require('lualine').setup({
      options = {
        theme = lualine_theme,
      },
    })

  end,

}