{ pkgs, ... }: {
  xdg.configFile."nvim/lua/plugins.lua".text = ''
    -- 1. Bootstrap lazy.nvim
    local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
    if not (vim.uv or vim.loop).fs_stat(lazypath) then
      vim.fn.system({
        "git",
        "clone",
        "--filter=blob:none",
        "https://github.com/folke/lazy.nvim.git",
        "--branch=stable",
        lazypath,
      })
    end
    vim.opt.rtp:prepend(lazypath)

    -- 2. Setup Plugins
    require("lazy").setup({
      spec = {
        -- Colorschemes
        { "RomanAverin/charleston.nvim", priority = 1000 },

        -- Status line
        {
          'nvim-lualine/lualine.nvim',
          dependencies = { 'nvim-tree/nvim-web-devicons' },
          config = function()
            require('lualine').setup({
              options = {
                theme = 'charleston', -- It should pick up your theme automatically
                component_separators = { left = '', right = ''},
                section_separators = { left = '', right = ''},
                globalstatus = true, -- Nice modern single bar at the bottom
              },
              sections = {
                lualine_a = {'mode'},
                lualine_b = {'branch', 'diff', 'diagnostics'},
                lualine_c = {'filename'},
                lualine_x = {'encoding', 'fileformat', 'filetype'},
                lualine_y = {'progress'},
                lualine_z = {'location'}
              },
            })
          end
        },

        -- Completion & UI
        { 
          'saghen/blink.cmp', 
          dependencies = 'rafamadriz/friendly-snippets',
          version = '*',
          opts = {
            keymap = { preset = 'default' },
            appearance = {
              use_nvim_cmp_as_default = true,
              nerd_font_variant = 'mono'
            },
            sources = {
              default = { 'lsp', 'path', 'snippets', 'buffer' },
            },
          }
        },
        -- LSP Configuration (Updated for Neovim 0.11+)
        {
          "neovim/nvim-lspconfig",
          dependencies = { 'saghen/blink.cmp' },
          config = function()
            -- In Neovim 0.11, we use the native vim.lsp.config API
            local capabilities = require('blink.cmp').get_lsp_capabilities()
            
            -- List the servers you want to enable
            local servers = { "lua_ls", "nil_ls" }

            for _, server in ipairs(servers) do
              vim.lsp.config(server, {
                install = {
                  -- This prevents lspconfig from trying to install things
                  -- since Nix is handling the binaries
                  enabled = false,
                },
                capabilities = capabilities,
              })
              -- Enable the server
              vim.lsp.enable(server)
            end
          end
        },

        -- Navigation & Files
        { "stevearc/oil.nvim", opts = { default_file_explorer = true } },
        { 
          "nvim-telescope/telescope.nvim", 
          dependencies = { "nvim-lua/plenary.nvim" } 
        },

        -- Dashboard Configuration
        {
          "nvimdev/dashboard-nvim",
          event = "VimEnter",
          config = function()
            local dashboard = require("dashboard")
            dashboard.setup({
              theme = "doom",
              config = {
                header = {
                  "                                                       ",
                  " ███╗   ██╗ ███████╗ ██████╗  ██╗   ██╗ ██╗ ███╗   ███╗",
                  " ████╗  ██║ ██╔════╝██╔═══██╗ ██║   ██║ ██║ ████╗ ████║",
                  " ██╔██╗ ██║ █████╗  ██║   ██║ ██║   ██║ ██║ ██╔████╔██║",
                  " ██║╚██╗██║ ██╔══╝  ██║   ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║",
                  " ██║ ╚████║ ███████╗╚██████╔╝  ╚████╔╝  ██║ ██║ ╚═╝ ██║",
                  " ╚═╝  ╚═══╝ ╚══════╝ ╚═════╝    ╚═══╝   ╚═╝ ╚═╝     ╚═╝",
                  "                                                       ",
                },
                center = {
                  { icon = " ", icon_hl = "@variable", desc = "New File", key = "n", action = "enew" },
                  { icon = " ", icon_hl = "@variable", desc = "File Explorer", key = "e", action = "Oil --float" },
                  { icon = "󰮗 ", icon_hl = "@variable", desc = "Find File", key = "f", action = "Telescope find_files" },
                  { icon = " ", icon_hl = "@variable", desc = "Find Text", key = "t", action = "Telescope live_grep" },
                  { icon = "󰗼 ", icon_hl = "@variable", desc = "Quit", key = "q", action = "qa" },
                },
                footer = { "v" .. vim.version().major .. "." .. vim.version().minor },
              },
            })
          end
        },
      },
      install = { colorscheme = { "charleston" } },
      checker = { enabled = true }, -- automatically check for plugin updates
    })

    -- Final Theme Load
    vim.cmd("colorscheme charleston")
  '';
}
