require('dep') {
  -- dep manages dep ----------------------------------------------------------
  { 'squibid/dep',
    url = 'https://git.squi.bid/dep',
    pin = true,
    -- branch = 'dev'
  },

  -- colorschemes -------------------------------------------------------------
  { 'mellow-theme/mellow.nvim',
    requires = 'nvim-treesitter/nvim-treesitter'
  },

  -- ui -----------------------------------------------------------------------
  { 'lukas-reineke/indent-blankline.nvim' }, -- indentation indicators
  { 'folke/which-key.nvim' }, -- key map help
  { 'rcarriga/nvim-notify' }, -- notifications
  { 'tjdevries/express_line.nvim', -- status bar
    requires = 'nvim-lua/plenary.nvim'
  },
  { 'goolord/alpha-nvim' }, -- start page
  { 'dinhhuy258/sfm.nvim', -- tree view
    deps = 'dinhhuy258/sfm-git.nvim'
  },
  { 'matbme/JABS.nvim' }, -- buffer switcher
  { 'stevearc/dressing.nvim', -- nice ui selectors
    requires = 'nvim-telescope/telescope.nvim'
  },
  { 'lukas-reineke/headlines.nvim',
    requires = 'nvim-neorg/neorg'
  },
  { 'squibid/tar', -- tab bar
    url = 'https://git.squi.bid/tar'
  },

  -- functional plugins -------------------------------------------------------
  { 'lewis6991/gitsigns.nvim' }, -- very helpful git things
  { 'chentoast/marks.nvim' }, -- marks in gutter
  { 'vidocqh/auto-indent.nvim' }, -- better tabbing into indents
  { 'mbbill/undotree' }, -- careful this one is written in vimscript
  { 'dhruvasagar/vim-table-mode' }, -- same with this one
  { 'altermo/ultimate-autopair.nvim', -- autopairs
    branch = 'v0.6'
  },
  { 'numToStr/Comment.nvim' },
  { 'ahmedkhalf/project.nvim' }, -- cd into root of project
  { 'mrjones2014/smart-splits.nvim'}, -- buffer resizing
  { 'ThePrimeagen/harpoon', -- super duper fast navigation through files
    branch = 'harpoon2',
    requires = 'nvim-lua/plenary.nvim'
  },

  -- note taking --------------------------------------------------------------
  { 'nvim-neorg/neorg',
    branch = '*',
    requires = {
      'nvim-lua/plenary.nvim',
      'nvim-treesitter/nvim-treesitter',
      'folke/zen-mode.nvim',
      { 'vhyrro/luarocks.nvim',
        config = function()
          -- NOTE: you need the lua.h header file for lua version 5.1 and
          -- luarocks on void linux run: xbps-install luarocks lua51-devel

          local output = ""
          local function cbstd(_, data, _)
            data = table.concat(data)
            data = data:gsub("\r", "\n")
            output = output..data
          end
          -- actually start the build here
          vim.fn.jobstart({ "nvim", "-l", "build.lua" }, {
            on_stdout = cbstd,
            on_stderr = cbstd,
            on_exit = function()
              -- return build status as a notification
              vim.notify(output, vim.log.levels.INFO, { title = misc.appid })
            end
          })
        end
      }
    },
    deps = { 'nvim-neorg/neorg-telescope',
      requires = 'nvim-telescope/telescope.nvim'
    }
  },

  { 'jbyuki/venn.nvim' },

  -- fzf ----------------------------------------------------------------------
  { 'nvim-telescope/telescope.nvim',
    requires = 'nvim-lua/plenary.nvim',
    deps = {
      'nvim-telescope/telescope-file-browser.nvim',
      'nvim-telescope/telescope-symbols.nvim',
      'axieax/urlview.nvim'
    }
  },
  { 'nvim-telescope/telescope-fzf-native.nvim',
    config = function()
      vim.cmd('make')
    end,
    requires = 'nvim-telescope/telescope.nvim'
  },

  -- treesitter + colorizing --------------------------------------------------
  { 'nvim-treesitter/nvim-treesitter',
    deps = {
      'Wansmer/treesj',
      'nvim-treesitter/nvim-treesitter-context'
    }
  },
  { 'NvChad/nvim-colorizer.lua' },
  { 'folke/todo-comments.nvim',
    requires = 'nvim-lua/plenary.nvim'
  },

  -- cmp ----------------------------------------------------------------------
  { 'hrsh7th/nvim-cmp',
    deps = {
      'lukas-reineke/cmp-under-comparator', -- better results
      'hrsh7th/cmp-buffer', -- buffers
      'FelipeLema/cmp-async-path', -- path
      'hrsh7th/cmp-nvim-lsp', -- lsp
      'hrsh7th/cmp-nvim-lua', -- nvim lua api
      'hrsh7th/cmp-nvim-lsp-signature-help', -- completion information
      { 'L3MON4D3/cmp-luasnip-choice', -- luasnip
        requires = 'L3MON4D3/LuaSnip'
      }
    },
  },

  -- snippets -----------------------------------------------------------------
  { 'L3MON4D3/LuaSnip',
    deps = 'rafamadriz/friendly-snippets',
    config = function()
      vim.cmd('make install_jsregexp')
    end
  },

  -- lsp ----------------------------------------------------------------------
  { 'neovim/nvim-lspconfig' }, -- setup lsp
  { 'j-hui/fidget.nvim', -- shows lsp progress
    branch = 'legacy'
  },

  { 'dnlhc/glance.nvim' }, -- diagnostic info at a glance
  { 'aznhe21/actions-preview.nvim', -- codeactions
    requires = 'nvim-telescope/telescope.nvim'
  },

  { 'danymat/neogen', -- generate lsp annotations
    requires = 'nvim-treesitter/nvim-treesitter'
  },

  { 'whynothugo/lsp_lines.nvim',
    url = 'https://git.sr.ht/~whynothugo/lsp_lines.nvim'
  },

  -- mason --------------------------------------------------------------------
  { 'williamboman/mason.nvim',
    deps = {
      'WhoIsSethDaniel/mason-tool-installer.nvim',
      'williamboman/mason-lspconfig.nvim'
    }
  }
}