From c01ce48abe7355cbf1f909cdfb83d12cf28d49dc Mon Sep 17 00:00:00 2001
From: Matei Adriel <rafaeladriel11@gmail.com>
Date: Tue, 19 Jul 2022 21:19:36 +0300
Subject: [PATCH] A shit ton of stuff

---
 dotfiles/neovim/README.md                     |  25 ++-
 dotfiles/neovim/ftplugin/nix.lua              |  12 ++
 dotfiles/neovim/ftplugin/purescript.lua       |   6 +-
 dotfiles/neovim/lua/my/keymaps.lua            |  44 ++--
 dotfiles/neovim/lua/my/paq.lua                |  90 ++++----
 dotfiles/neovim/lua/my/plugins/comment.lua    |  26 +--
 dotfiles/neovim/lua/my/plugins/dashboard.lua  |  32 +++
 dotfiles/neovim/lua/my/plugins/init.lua       |  45 ++--
 dotfiles/neovim/lua/my/plugins/lspconfig.lua  | 204 +++++++++---------
 dotfiles/neovim/lua/my/plugins/null-ls.lua    |   2 +-
 dotfiles/neovim/lua/my/plugins/treesitter.lua |  32 +--
 flake.lock                                    |  24 +--
 modules/applications/default.nix              |   2 +-
 modules/applications/misc.nix                 |   5 +-
 modules/applications/neovim.nix               |  14 +-
 .../applications/shells/sessionVariables.nix  |   2 +-
 modules/themes/catppuccin/default.nix         |   6 +-
 modules/themes/catppuccin/foreign.nix         |  32 +--
 modules/themes/catppuccin/nvim.lua            |  17 +-
 modules/themes/themes.nix                     |   6 +-
 20 files changed, 338 insertions(+), 288 deletions(-)
 create mode 100644 dotfiles/neovim/ftplugin/nix.lua
 create mode 100644 dotfiles/neovim/lua/my/plugins/dashboard.lua

diff --git a/dotfiles/neovim/README.md b/dotfiles/neovim/README.md
index b602fe7..d660d69 100644
--- a/dotfiles/neovim/README.md
+++ b/dotfiles/neovim/README.md
@@ -19,6 +19,7 @@ Table of my own keybinds. Here as documentation for myself. I am yet to include
 | _cp_         | Use system clipboard                |                    |
 | _jl_         | Save                                |                    |
 | _jk_         | Exit insert mode                    |                    |
+| _rw_         | Rename word under cursor            |                    |
 | _\<leader>k_ | Insert digraph                      |                    |
 | _\<leader>a_ | Swap last 2 used buffers            |                    |
 | C-n          | Open tree                           | nvim-tree          |
@@ -35,10 +36,6 @@ Table of my own keybinds. Here as documentation for myself. I am yet to include
 | \<leader>rn  | Rename                              | lspconfig          |
 | \<leader>f   | format                              | lspconfig          |
 
-### Lh-brackets
-
-The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Different brackets are added in different filetypes.
-
 ### Telescope
 
 | Keybind     | Description                    | Plugins                |
@@ -60,13 +57,13 @@ The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Diff
 
 | Keybind | Description         |
 | ------- | ------------------- |
-| _sc_    | Case split          |
-| _mc_    | Make case           |
-| _ml_    | Make lemma          |
-| _es_    | Expression search   |
-| _gd_    | Generate definition |
-| _rh_    | Refine hole         |
-| _ac_    | Add clause          |
+| _isc_   | Case split          |
+| _imc_   | Make case           |
+| _iml_   | Make lemma          |
+| _ies_   | Expression search   |
+| _igd_   | Generate definition |
+| _irh_   | Refine hole         |
+| _iac_   | Add clause          |
 
 ### Purescript
 
@@ -75,6 +72,12 @@ The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Diff
 | _vb_    | Make tmux run spago build in sepearate pane |
 | _vt_    | Make tmux run spago test in separate pane   |
 
+### Nix
+
+| Keybind | Description                                 |
+| ------- | ------------------------------------------- |
+| _ug_    | Run nix-fetchgit on the current file |
+
 ### Lean
 
 - Extra brackets: ⟨⟩
diff --git a/dotfiles/neovim/ftplugin/nix.lua b/dotfiles/neovim/ftplugin/nix.lua
new file mode 100644
index 0000000..5b3a950
--- /dev/null
+++ b/dotfiles/neovim/ftplugin/nix.lua
@@ -0,0 +1,12 @@
+local A = require("my.plugins.arpeggio")
+local C = require("my.plugins.comment")
+
+print("Initializing nix keybinds...")
+
+-- Use _ug_ to fetchgit stuff
+A.chordSilent("n", "ug",
+  ":lua require('my.helpers.update-nix-fetchgit').update()<CR>",
+  { settings = "b" })
+
+-- Idk why this isn't here by default
+C.setCommentString("nix", "# %s")
diff --git a/dotfiles/neovim/ftplugin/purescript.lua b/dotfiles/neovim/ftplugin/purescript.lua
index b83e13e..4c891ed 100644
--- a/dotfiles/neovim/ftplugin/purescript.lua
+++ b/dotfiles/neovim/ftplugin/purescript.lua
@@ -1,11 +1,13 @@
 local arpeggio = require("my.plugins.arpeggio")
 
+print("Initializing nix keybinds...")
+
 -- Use vt to test
 arpeggio.chordSilent("n", "vt", ":VimuxRunCommand \"clear && spago test\"<CR>",
-                     {settings = "b"})
+  { settings = "b" })
 
 -- Use vb to build
 arpeggio.chordSilent("n", "vb", ":VimuxRunCommand \"clear && spago build\"<CR>",
-                     {settings = "b"})
+  { settings = "b" })
 
 vim.opt.expandtab = true -- Use spaces for the tab char
diff --git a/dotfiles/neovim/lua/my/keymaps.lua b/dotfiles/neovim/lua/my/keymaps.lua
index c050c9b..62ce997 100644
--- a/dotfiles/neovim/lua/my/keymaps.lua
+++ b/dotfiles/neovim/lua/my/keymaps.lua
@@ -5,36 +5,38 @@ local au = require("my.helpers.augroup")
 local M = {}
 
 function M.map(mode, lhs, rhs, opts)
-    if string.len(mode) > 1 then
-        for i = 1, #mode do
-            local c = mode:sub(i, i)
-            M.map(c, lhs, rhs, opts)
-        end
-    else
-        local options = helpers.mergeTables(opts, {noremap = true})
-        vim.api.nvim_set_keymap(mode, lhs, rhs, options)
+  if string.len(mode) > 1 then
+    for i = 1, #mode do
+      local c = mode:sub(i, i)
+      M.map(c, lhs, rhs, opts)
     end
+  else
+    local options = helpers.mergeTables(opts, { noremap = true })
+    vim.api.nvim_set_keymap(mode, lhs, rhs, options)
+  end
 end
 
 function M.mapSilent(mode, lhs, rhs, opts)
-    local options = helpers.mergeTables(opts, {silent = true})
-    M.map(mode, lhs, rhs, options)
+  local options = helpers.mergeTables(opts, { silent = true })
+  M.map(mode, lhs, rhs, options)
 end
 
 function M.setup()
-    M.map("n", "qq", ":wq<cr>") -- Create vertical split
+  M.map("n", "qq", ":wq<cr>") -- Create vertical split
 
-    -- Create chords
-    if arpeggio ~= nil then
-        arpeggio.chord("n", "vs", "<C-w>v") -- Create vertical split
-        arpeggio.chord("n", "ji", ":w<cr>") -- Saving
-        arpeggio.chord("i", "jk", "<Esc>") -- Remap Esc to jk
-        arpeggio.chord("i", "<Leader>k", "<C-k><cr>") -- Rebind digraph insertion to leader+k
-        arpeggio.chord("inv", "<Leader>a", "<C-6><cr>") -- Rebind switching to the last pane using leader+a
-        arpeggio.chord("nv", "cp", "\"+") -- Press cp to use the global clipboard
-    end
+  -- Create chords
+  if arpeggio ~= nil then
+    arpeggio.chord("n", "vs", "<C-w>v") -- Create vertical split
+    arpeggio.chord("n", "ji", ":w<cr>") -- Saving
+    arpeggio.chord("i", "jk", "<Esc>") -- Remap Esc to jk
+    arpeggio.chord("i", "<Leader>k", "<C-k><cr>") -- Rebind digraph insertion to leader+k
+    arpeggio.chord("inv", "<Leader>a", "<C-6><cr>") -- Rebind switching to the last pane using leader+a
+    arpeggio.chord("inv", "<Leader>a", "<C-6><cr>") -- Rebind switching to the last pane using leader+a
+    arpeggio.chord("nv", "cp", "\"+") -- Press cp to use the global clipboard
+    arpeggio.chord("n", "rw", ":%s/<C-r><C-w>/") -- Press rt to rename word under cursor
+  end
 
-    return M
+  return M
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/paq.lua b/dotfiles/neovim/lua/my/paq.lua
index ef3a3e4..e5f816e 100644
--- a/dotfiles/neovim/lua/my/paq.lua
+++ b/dotfiles/neovim/lua/my/paq.lua
@@ -1,52 +1,54 @@
 local M = {}
 
 function M.setup()
-    local paq = require("paq")
-    local themePackages = require("my.theme").deps
-    local base = {
-        "neovim/nvim-lspconfig", -- configures lsps for me
-        "windwp/nvim-autopairs", -- closes pairs for me (should look for a better one)
-        "nvim-lua/plenary.nvim", -- async utility lib it seems?
-        "nvim-telescope/telescope.nvim", -- fuzzy search for say opening files
-        "purescript-contrib/purescript-vim", -- purescript support
-        "terrortylor/nvim-comment", -- allows toggling line comments
-        {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"}, -- use treesitter for syntax highlighting
-        {"nvim-treesitter/nvim-treesitter-textobjects", run = ":TSUpdate"}, -- the lean plugin wants me to install this, lol
-        "startup-nvim/startup.nvim", -- splash screen
-        "kyazdani42/nvim-web-devicons", -- nice looking icons
-        "nvim-lualine/lualine.nvim", -- customizable status line
-        "kyazdani42/nvim-tree.lua", -- file tree
-        "lervag/vimtex", -- latex support
-        "jose-elias-alvarez/null-ls.nvim", -- generic language server
-        "nvim-telescope/telescope-file-browser.nvim", -- file creation/deletion menu
-        "onsails/lspkind.nvim", -- show icons in lsp completion menus
-        "preservim/vimux", -- interact with tmux from within vim
-        "christoomey/vim-tmux-navigator", -- easly switch between tmux and vim panes
-        "kana/vim-arpeggio", -- chord support, let"s fucking goooo
-        {"andweeb/presence.nvim", run = ":DownloadUnicode"}, -- discord rich presence
-        "Julian/lean.nvim", -- lean support
-        "kmonad/kmonad-vim", -- kmonad config support
-        -- "LucHermitte/lh-vim-lib", -- dependency for lh-brackets
-        -- "LucHermitte/lh-brackets", -- kinda useless bruh, should find something better
-        -- Cmp related stuff
-        "hrsh7th/cmp-nvim-lsp", -- lsp completion
-        "hrsh7th/cmp-buffer", -- idr what this is
-        "hrsh7th/cmp-path", -- path completion ig?
-        "hrsh7th/cmp-cmdline", -- cmdline completion perhaps?
-        "hrsh7th/nvim-cmp", -- completion engine
-        "L3MON4D3/LuaSnip", -- snippeting engine
-        "saadparwaiz1/cmp_luasnip", -- snippet support for cmp
-        "wakatime/vim-wakatime", -- track time usage
-        "vmchale/dhall-vim", -- dhall syntax highlighting
-        "folke/which-key.nvim"
-    }
+  local paq = require("paq")
+  local themePackages = require("my.theme").deps
+  local base = {
+    "neovim/nvim-lspconfig", -- configures lsps for me
+    "windwp/nvim-autopairs", -- closes pairs for me (should look for a better one)
+    "nvim-lua/plenary.nvim", -- async utility lib it seems?
+    "nvim-telescope/telescope.nvim", -- fuzzy search for say opening files
+    "purescript-contrib/purescript-vim", -- purescript support
+    "terrortylor/nvim-comment", -- allows toggling line comments
+    -- This gets installed by nix now!
+    -- {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"}, -- use treesitter for syntax highlighting
+    "nvim-treesitter/nvim-treesitter-textobjects", -- the lean plugin wants me to install this, lol
+    -- "startup-nvim/startup.nvim", -- splash screen
+    "glepnir/dashboard-nvim", -- similar to startup.nvim
+    "kyazdani42/nvim-web-devicons", -- nice looking icons
+    "nvim-lualine/lualine.nvim", -- customizable status line
+    "kyazdani42/nvim-tree.lua", -- file tree
+    "lervag/vimtex", -- latex support
+    "jose-elias-alvarez/null-ls.nvim", -- generic language server
+    "nvim-telescope/telescope-file-browser.nvim", -- file creation/deletion menu
+    "onsails/lspkind.nvim", -- show icons in lsp completion menus
+    "preservim/vimux", -- interact with tmux from within vim
+    "christoomey/vim-tmux-navigator", -- easly switch between tmux and vim panes
+    "kana/vim-arpeggio", -- chord support, let"s fucking goooo
+    { "andweeb/presence.nvim", run = ":DownloadUnicode" }, -- discord rich presence
+    "Julian/lean.nvim", -- lean support
+    "kmonad/kmonad-vim", -- kmonad config support
+    -- "LucHermitte/lh-vim-lib", -- dependency for lh-brackets
+    -- "LucHermitte/lh-brackets", -- kinda useless bruh, should find something better
+    -- Cmp related stuff
+    "hrsh7th/cmp-nvim-lsp", -- lsp completion
+    "hrsh7th/cmp-buffer", -- idr what this is
+    "hrsh7th/cmp-path", -- path completion ig?
+    "hrsh7th/cmp-cmdline", -- cmdline completion perhaps?
+    "hrsh7th/nvim-cmp", -- completion engine
+    "L3MON4D3/LuaSnip", -- snippeting engine
+    "saadparwaiz1/cmp_luasnip", -- snippet support for cmp
+    "wakatime/vim-wakatime", -- track time usage
+    "vmchale/dhall-vim", -- dhall syntax highlighting
+    "folke/which-key.nvim"
+  }
 
-    for _, v in ipairs(themePackages) do
-        -- append package in the base list
-        table.insert(base, v)
-    end
+  for _, v in ipairs(themePackages) do
+    -- append package in the base list
+    table.insert(base, v)
+  end
 
-    paq(base)
+  paq(base)
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/comment.lua b/dotfiles/neovim/lua/my/plugins/comment.lua
index 354eb7c..229d835 100644
--- a/dotfiles/neovim/lua/my/plugins/comment.lua
+++ b/dotfiles/neovim/lua/my/plugins/comment.lua
@@ -1,26 +1,26 @@
 local A = require("my.helpers.augroup")
 local M = {}
 
-local extraCommentStrings = {nix = "# %s", lean = "/- %s -/", bkf = "-- %s"}
+local extraCommentStrings = { lean = "/- %s -/", bkf = "-- %s" }
 
 -- Update comments for certain languages
-local function setCommentString(extension, commentString)
-    A.augroup('set-commentstring-' .. extension, function()
-        local action =
-            ':lua vim.api.nvim_buf_set_option(0, "commentstring", "' ..
-                commentString .. '")'
+function M.setCommentString(extension, commentString)
+  A.augroup('set-commentstring-' .. extension, function()
+    local action =
+    ':lua vim.api.nvim_buf_set_option(0, "commentstring", "' ..
+        commentString .. '")'
 
-        A.autocmd('BufEnter', '*.' .. extension, action)
-        A.autocmd('BufFilePost', '*.' .. extension, action)
-    end)
+    A.autocmd('BufEnter', '*.' .. extension, action)
+    A.autocmd('BufFilePost', '*.' .. extension, action)
+  end)
 end
 
 function M.setup()
-    require('nvim_comment').setup()
+  require('nvim_comment').setup()
 
-    for lang, commentString in pairs(extraCommentStrings) do
-        setCommentString(lang, commentString)
-    end
+  for lang, commentString in pairs(extraCommentStrings) do
+    M.setCommentString(lang, commentString)
+  end
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/dashboard.lua b/dotfiles/neovim/lua/my/plugins/dashboard.lua
new file mode 100644
index 0000000..c8600a7
--- /dev/null
+++ b/dotfiles/neovim/lua/my/plugins/dashboard.lua
@@ -0,0 +1,32 @@
+local M = {}
+
+function M.setup()
+  local db = require("dashboard")
+  -- db.custom_header = {
+  --   "", "",
+  --   [[         /\    \                  /\    \              /\    \                  /\    \                  /\    \         ]],
+  --   [[        /::\____\                /::\    \            /::\    \                /::\    \                /::\    \        ]],
+  --   [[       /:::/    /               /::::\    \           \:::\    \              /::::\    \              /::::\    \       ]],
+  --   [[      /:::/   _/___            /::::::\    \           \:::\    \            /::::::\    \            /::::::\    \      ]],
+  --   [[     /:::/   /\    \          /:::/\:::\    \           \:::\    \          /:::/\:::\    \          /:::/\:::\    \     ]],
+  --   [[    /:::/   /::\____\        /:::/__\:::\    \           \:::\    \        /:::/__\:::\    \        /:::/__\:::\    \    ]],
+  --   [[   /:::/   /:::/    /       /::::\   \:::\    \          /::::\    \      /::::\   \:::\    \      /::::\   \:::\    \   ]],
+  --   [[  /:::/   /:::/   _/___    /::::::\   \:::\    \        /::::::\    \    /::::::\   \:::\    \    /::::::\   \:::\    \  ]],
+  --   [[ /:::/___/:::/   /\    \  /:::/\:::\   \:::\    \      /:::/\:::\    \  /:::/\:::\   \:::\    \  /:::/\:::\   \:::\____\ ]],
+  --   [[|:::|   /:::/   /::\____\/:::/  \:::\   \:::\____\    /:::/  \:::\____\/:::/__\:::\   \:::\____\/:::/  \:::\   \:::|    |]],
+  --   [[|:::|__/:::/   /:::/    /\::/    \:::\  /:::/    /   /:::/    \::/    /\:::\   \:::\   \::/    /\::/   |::::\  /:::|____|]],
+  --   [[ \:::\/:::/   /:::/    /  \/____/ \:::\/:::/    /   /:::/    / \/____/  \:::\   \:::\   \/____/  \/____|:::::\/:::/    / ]],
+  --   [[  \::::::/   /:::/    /            \::::::/    /   /:::/    /            \:::\   \:::\    \            |:::::::::/    /  ]],
+  --   [[   \::::/___/:::/    /              \::::/    /   /:::/    /              \:::\   \:::\____\           |::|\::::/    /   ]],
+  --   [[    \:::\__/:::/    /               /:::/    /    \::/    /                \:::\   \::/    /           |::| \::/____/    ]],
+  --   [[     \::::::::/    /               /:::/    /      \/____/                  \:::\   \/____/            |::|  ~|          ]],
+  --   [[      \::::::/    /               /:::/    /                                 \:::\    \                |::|   |          ]],
+  --   [[       \::::/    /               /:::/    /                                   \:::\____\               \::|   |          ]],
+  --   [[        \::/____/                \::/    /                                     \::/    /                \:|   |          ]],
+  --   [[         ~~                       \/____/                                       \/____/                  \|___|          ]],
+  --   ""
+  -- }
+
+end
+
+return M
diff --git a/dotfiles/neovim/lua/my/plugins/init.lua b/dotfiles/neovim/lua/my/plugins/init.lua
index 9e3f3d8..16aaea4 100644
--- a/dotfiles/neovim/lua/my/plugins/init.lua
+++ b/dotfiles/neovim/lua/my/plugins/init.lua
@@ -1,29 +1,30 @@
 local M = {}
 
 function M.setup()
-    -- Other unconfigured plugins
-    require('nvim-autopairs').setup()
-    require("startup").setup()
-    require("presence"):setup({}) -- wtf does the : do here?
-    -- require("which-key").setup()
+  -- Other unconfigured plugins
+  require('nvim-autopairs').setup()
+  -- require("startup").setup()
+  require("presence"):setup({}) -- wtf does the : do here?
+  -- require("which-key").setup()
 
-    -- Plugins with their own configs:
-    require("my.plugins.vim-tmux-navigator").setup()
-    -- require("my.plugins.fzf-lua").setup()
-    -- require("my.plugins.nerdtree").setup()
-    require("my.plugins.treesitter").setup()
-    require("my.plugins.cmp").setup()
-    require("my.plugins.lspconfig").setup()
-    require("my.plugins.null-ls").setup()
-    require("my.plugins.lualine").setup()
-    require("my.plugins.comment").setup()
-    require("my.plugins.nvim-tree").setup()
-    require("my.plugins.vimtex").setup()
-    require("my.plugins.telescope").setup()
-    require("my.plugins.vimux").setup()
-    -- require("my.plugins.idris").setup()
-    -- require("my.plugins.lh-brackets").setup()
-    require("my.plugins.lean").setup()
+  -- Plugins with their own configs:
+  require("my.plugins.vim-tmux-navigator").setup()
+  -- require("my.plugins.fzf-lua").setup()
+  -- require("my.plugins.nerdtree").setup()
+  require("my.plugins.treesitter").setup()
+  require("my.plugins.dashboard").setup()
+  require("my.plugins.cmp").setup()
+  require("my.plugins.lspconfig").setup()
+  require("my.plugins.null-ls").setup()
+  require("my.plugins.lualine").setup()
+  require("my.plugins.comment").setup()
+  require("my.plugins.nvim-tree").setup()
+  require("my.plugins.vimtex").setup()
+  require("my.plugins.telescope").setup()
+  require("my.plugins.vimux").setup()
+  -- require("my.plugins.idris").setup()
+  -- require("my.plugins.lh-brackets").setup()
+  require("my.plugins.lean").setup()
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/lspconfig.lua b/dotfiles/neovim/lua/my/plugins/lspconfig.lua
index a8eeaab..2cfce09 100644
--- a/dotfiles/neovim/lua/my/plugins/lspconfig.lua
+++ b/dotfiles/neovim/lua/my/plugins/lspconfig.lua
@@ -1,143 +1,133 @@
-local A = require("my.plugins.arpeggio")
-
 local M = {}
 
 local function map(buf, mode, lhs, rhs, opts)
 
-    local options = {noremap = true, silent = true}
-    if opts then options = vim.tbl_extend('force', options, opts) end
-    vim.api.nvim_buf_set_keymap(buf, mode, lhs, rhs, options)
+  local options = { noremap = true, silent = true }
+  if opts then options = vim.tbl_extend('force', options, opts) end
+  vim.api.nvim_buf_set_keymap(buf, mode, lhs, rhs, options)
 end
 
 function M.on_attach(client, bufnr)
-    -- Enable completion triggered by <c-x><c-o>
-    vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+  -- Enable completion triggered by <c-x><c-o>
+  vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
 
-    if client.server_capabilities.documentFormattingProvider then
-        print("Initializing formatter...")
-        vim.cmd([[
+  if client.server_capabilities.documentFormattingProvider then
+    print("Initializing formatter...")
+    vim.cmd([[
             augroup LspFormatting
                 autocmd! * <buffer>
                 autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
             augroup END
             ]])
-    end
+  end
 
-    print("Setting up keybinds...")
-    -- Go to declaration / definition / implementation
-    map(bufnr, "n", 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
-    map(bufnr, "n", 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
-    map(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
+  print("Setting up keybinds...")
+  -- Go to declaration / definition / implementation
+  map(bufnr, "n", 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
+  map(bufnr, "n", 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
+  map(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
 
-    -- Hover
-    map(bufnr, 'n', 'J', "<cmd>lua vim.diagnostic.open_float()<CR>")
-    map(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
-    map(bufnr, 'n', 'L', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
+  -- Hover
+  map(bufnr, 'n', 'J', "<cmd>lua vim.diagnostic.open_float()<CR>")
+  map(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
+  map(bufnr, 'n', 'L', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
 
-    -- Workspace stuff
-    -- map(bufnr, 'n', '<leader>wa',
-    --     '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>')
-    -- map(bufnr, 'n', '<leader>wr',
-    --     '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>')
-    -- map(bufnr, 'n', '<leader>wl',
-    --     '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>')
+  -- Workspace stuff
+  -- map(bufnr, 'n', '<leader>wa',
+  --     '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>')
+  -- map(bufnr, 'n', '<leader>wr',
+  --     '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>')
+  -- map(bufnr, 'n', '<leader>wl',
+  --     '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>')
 
-    -- Code actions
-    map(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
-    map(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>')
-    map(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>')
-    map(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
-    map(bufnr, 'n', '<leader>f',
-        '<cmd>lua vim.lsp.buf.format({async = true})<CR>')
+  -- Code actions
+  map(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
+  map(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>')
+  map(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>')
+  map(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
+  map(bufnr, 'n', '<leader>f',
+    '<cmd>lua vim.lsp.buf.format({async = true})<CR>')
 
-    print("Initialized language server!")
+  print("Initialized language server!")
 end
 
 local function on_attach_typescript(client, bufnr)
-    -- We handle formatting using null-ls and prettierd
-    client.server_capabilities.documentFormattingProvider = false
+  -- We handle formatting using null-ls and prettierd
+  client.server_capabilities.documentFormattingProvider = false
 
-    M.on_attach(client, bufnr)
-end
-
-local function on_attach_nix(c, b)
-    A.chordSilent("n", "ug",
-                  ":lua require('my.helpers.update-nix-fetchgit').update()<CR>",
-                  {settings = "b"})
-
-    M.on_attach(c, b)
+  M.on_attach(client, bufnr)
 end
 
 -- General server config
 local servers = {
-    tsserver = {on_attach = on_attach_typescript},
-    dhall_lsp_server = {},
-    sumneko_lua = {
-        settings = {
-            Lua = {
-                runtime = {
-                    -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
-                    version = 'LuaJIT',
-                    -- Setup your lua path
-                    path = runtime_path
-                },
-                diagnostics = {
-                    -- Get the language server to recognize the `vim` global
-                    globals = {'vim'}
-                },
-                workspace = {
-                    -- Make the server aware of Neovim runtime files
-                    library = vim.api.nvim_get_runtime_file("", true)
-                },
-                -- Do not send telemetry data containing a randomized but unique identifier
-                telemetry = {enable = false}
-            }
+  tsserver = { on_attach = on_attach_typescript },
+  dhall_lsp_server = {},
+  sumneko_lua = {
+    settings = {
+      Lua = {
+        runtime = {
+          -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
+          version = 'LuaJIT',
+          -- Setup your lua path
+          path = runtime_path
         },
-        cmd = {"lua-language-server"}
+        diagnostics = {
+          -- Get the language server to recognize the `vim` global
+          globals = { 'vim' }
+        },
+        workspace = {
+          -- Make the server aware of Neovim runtime files
+          library = vim.api.nvim_get_runtime_file("", true)
+        },
+        -- Do not send telemetry data containing a randomized but unique identifier
+        telemetry = { enable = false }
+      }
     },
-    purescriptls = {
-        settings = {
-            purescript = {
-                censorWarnings = {
-                    "UnusedName", "ShadowedName", "UserDefinedWarning"
-                },
-                formatter = "purs-tidy"
-            }
-        }
-    },
-    rnix = {on_attach = on_attach_nix},
-    hls = {
-        haskell = {
-            -- set formatter
-            formattingProvider = "ormolu"
-        }
-    },
-    cssls = {}
-    -- agda = {}, Haven't gotten this one to work yet
+    cmd = { "lua-language-server" }
+  },
+  purescriptls = {
+    settings = {
+      purescript = {
+        censorWarnings = {
+          "UnusedName", "ShadowedName", "UserDefinedWarning"
+        },
+        formatter = "purs-tidy"
+      }
+    }
+  },
+  hls = {
+    haskell = {
+      -- set formatter
+      formattingProvider = "ormolu"
+    }
+  },
+  rnix = {},
+  cssls = {}
+  -- agda = {}, Haven't gotten this one to work yet
 }
 
 function M.setup()
-    local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp
-                                                                         .protocol
-                                                                         .make_client_capabilities())
+  local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp
+    .protocol
+    .make_client_capabilities())
 
-    -- Setup basic language servers
-    for lsp, details in pairs(servers) do
-        if details.on_attach == nil then
-            -- Default setting for on_attach
-            details.on_attach = M.on_attach
-        end
-
-        require('lspconfig')[lsp].setup {
-            on_attach = details.on_attach,
-            settings = details.settings, -- Specific per-language settings
-            flags = {
-                debounce_text_changes = 150 -- This will be the default in neovim 0.7+
-            },
-            cmd = details.cmd,
-            capabilities = capabilities
-        }
+  -- Setup basic language servers
+  for lsp, details in pairs(servers) do
+    if details.on_attach == nil then
+      -- Default setting for on_attach
+      details.on_attach = M.on_attach
     end
+
+    require('lspconfig')[lsp].setup {
+      on_attach = details.on_attach,
+      settings = details.settings, -- Specific per-language settings
+      flags = {
+        debounce_text_changes = 150 -- This will be the default in neovim 0.7+
+      },
+      cmd = details.cmd,
+      capabilities = capabilities
+    }
+  end
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/null-ls.lua b/dotfiles/neovim/lua/my/plugins/null-ls.lua
index d741f4b..5d9a100 100644
--- a/dotfiles/neovim/lua/my/plugins/null-ls.lua
+++ b/dotfiles/neovim/lua/my/plugins/null-ls.lua
@@ -7,7 +7,7 @@ function M.setup()
 
     local sources = {
         null_ls.builtins.formatting.prettierd.with({extra_filetypes = {}}), -- format ts files
-        null_ls.builtins.formatting.lua_format -- format lua code
+        -- null_ls.builtins.formatting.lua_format -- format lua code
     }
 
     null_ls.setup({sources = sources, on_attach = lspconfig.on_attach})
diff --git a/dotfiles/neovim/lua/my/plugins/treesitter.lua b/dotfiles/neovim/lua/my/plugins/treesitter.lua
index 17c34ad..348a7c1 100644
--- a/dotfiles/neovim/lua/my/plugins/treesitter.lua
+++ b/dotfiles/neovim/lua/my/plugins/treesitter.lua
@@ -1,24 +1,24 @@
 local M = {}
 
 function M.setup()
-    require'nvim-treesitter.configs'.setup {
-        ensure_installed = {
-            "bash", "javascript", "typescript", "c", "cpp", "css", "dockerfile",
-            "elixir", "fish", "html", "json", "latex", "python", "rust", "scss",
-            "toml", "tsx", "vim", "yaml", "nix"
-        },
-        sync_install = false,
-        indent = {enable = true},
-        highlight = {
-            enable = false,
+  require 'nvim-treesitter.configs'.setup {
+    ensure_installed = {
+      "bash", "javascript", "typescript", "c", "cpp", "css", "dockerfile",
+      "elixir", "fish", "html", "json", "latex", "python", "rust", "scss",
+      "toml", "tsx", "vim", "yaml", "nix"
+    },
+    sync_install = false,
+    indent = { enable = true },
+    highlight = {
+      enable = true,
 
-            -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-            -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-            -- Using this option may slow down your editor, and you may see some duplicate highlights.
-            -- Instead of true it can also be a list of languages
-            additional_vim_regex_highlighting = false
-        }
+      -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
+      -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+      -- Using this option may slow down your editor, and you may see some duplicate highlights.
+      -- Instead of true it can also be a list of languages
+      additional_vim_regex_highlighting = false
     }
+  }
 end
 
 return M
diff --git a/flake.lock b/flake.lock
index b273019..17554d9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -275,11 +275,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1654113405,
-        "narHash": "sha256-VpK+0QaWG2JRgB00lw77N9TjkE3ec0iMYIX1TzGpxa4=",
+        "lastModified": 1656169755,
+        "narHash": "sha256-Nlnm4jeQWEGjYrE6hxi/7HYHjBSZ/E0RtjCYifnNsWk=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "ac2287df5a2d6f0a44bbcbd11701dbbf6ec43675",
+        "rev": "4a3d01fb53f52ac83194081272795aa4612c2381",
         "type": "github"
       },
       "original": {
@@ -555,11 +555,11 @@
     },
     "nixos-unstable": {
       "locked": {
-        "lastModified": 1653407748,
-        "narHash": "sha256-g9puJaILRTb9ttlLQ7IehpV7Wcy0n+vs8LOFu6ylQcM=",
+        "lastModified": 1658161305,
+        "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5ce6597eca7d7b518c03ecda57d45f9404b5e060",
+        "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9",
         "type": "github"
       },
       "original": {
@@ -571,11 +571,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1654605205,
-        "narHash": "sha256-aRTGBWpAr6DlLMoUyIvctWRcL59vpW98CdWUl+BhnXg=",
+        "lastModified": 1658237535,
+        "narHash": "sha256-z3Ff9oSXEPSZMfXdM+r29oJxtyKUnlUOc18U9E6Q48g=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "daa78e40e9592dbbcfd53937cbd9aae9e69a2999",
+        "rev": "e732e1fdbf79bec59f7ade4a3675b091b4a9f6d6",
         "type": "github"
       },
       "original": {
@@ -587,11 +587,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1653326962,
-        "narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
+        "lastModified": 1658150454,
+        "narHash": "sha256-dhyOQvRT8oYWN0SwsNyujohBsJqwF5W7fnhEcfgBk7E=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "41cc1d5d9584103be4108c1815c350e07c807036",
+        "rev": "3110964916469ad6ed9fea72a0a3119a0959a14e",
         "type": "github"
       },
       "original": {
diff --git a/modules/applications/default.nix b/modules/applications/default.nix
index 91309bb..7062f0a 100644
--- a/modules/applications/default.nix
+++ b/modules/applications/default.nix
@@ -20,7 +20,7 @@
     ./tmux.nix
     ./kmonad.nix
     ./direnv.nix
-    ./chromium.nix
+    # ./chromium.nix
     ./vieb.nix
   ];
 }
diff --git a/modules/applications/misc.nix b/modules/applications/misc.nix
index 2651ac5..1fdff17 100644
--- a/modules/applications/misc.nix
+++ b/modules/applications/misc.nix
@@ -40,10 +40,11 @@
     vimclip # use neovim anywhere
 
     # chat apps
-    discord
-    # deluge
+    unstable.discord
     slack
+    signal-desktop
     tdesktop # telegram for the desktop
+    # deluge
     # zoom-us
     # teams
 
diff --git a/modules/applications/neovim.nix b/modules/applications/neovim.nix
index 0adf766..a08472e 100644
--- a/modules/applications/neovim.nix
+++ b/modules/applications/neovim.nix
@@ -17,12 +17,13 @@ let
     sumneko-lua-language-server # lua
     rnix-lsp # nix
     haskell-language-server # haskell
-    vscode-langservers-extracted # css and shit
+    # vscode-langservers-extracted # css and shit
 
     # Formatters
     luaformatter # lua
     ormolu # haskell
-    prettierd # prettier but faster
+    easy-purescript-nix.purs-tidy
+    # prettierd # prettier but faster
 
     # Others
     wakatime # time tracking
@@ -31,6 +32,7 @@ let
     nodePackages.typescript # typescript language
     update-nix-fetchgit # useful for nix stuff
     tree-sitter # syntax highlighting
+    libstdcxx5 # required by treesitter aparently
 
     texlive.combined.scheme-full # latex stuff
     python38Packages.pygments # required for latex syntax highlighting
@@ -54,20 +56,20 @@ let
           --prefix PATH : ${lib.makeBinPath extraPackages}
       '';
     };
+  nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars);
 in
 {
   home-manager.users.adrielus =
     {
       home.file.".local/share/nvim/site/pack/paqs/start/paq-nvim".source = paq;
+      home.file.".local/share/nvim/site/pack/treesitter/start/nvim-treesitter".source = nvim-treesitter;
       xdg.configFile."nvim/init.lua".text = myConfig;
       xdg.configFile."nvim/lua/my/theme.lua".source = theme.neovim.theme;
 
+      programs.neovim.enable = false;
+
       home.packages = [
         neovim
       ];
-
-      programs.neovim = {
-        enable = false;
-      };
     };
 }
diff --git a/modules/applications/shells/sessionVariables.nix b/modules/applications/shells/sessionVariables.nix
index baad0d7..ac171ef 100644
--- a/modules/applications/shells/sessionVariables.nix
+++ b/modules/applications/shells/sessionVariables.nix
@@ -14,5 +14,5 @@ in
     home-manager.users.adrielus.home.sessionVariables = theme.env or { };
   }];
 
-  home-manager.users.adrielus = { home.sessionVariables = variables; };
+  home-manager.users.adrielus.home.sessionVariables = variables;
 }
diff --git a/modules/themes/catppuccin/default.nix b/modules/themes/catppuccin/default.nix
index 33bb86c..8260a05 100644
--- a/modules/themes/catppuccin/default.nix
+++ b/modules/themes/catppuccin/default.nix
@@ -22,7 +22,7 @@ in
   sddm.path = "${foreign.sddm}";
   grub.path = pkgs.nixos-grub2-theme;
 
-  xresources = builtins.readFile "${foreign.xresources}/Xresources";
+  xresources = builtins.readFile "${foreign.xresources}/${variant}.Xresources";
 
   rofi = {
     theme = builtins.readFile "${foreign.rofi}/.local/share/rofi/themes/catppuccin.rasi";
@@ -55,15 +55,17 @@ in
 
   alacritty.settings = {
     import = [ "${foreign.alacritty}/catppuccin.yml" ];
+    # colors = variant;
     window = {
       padding = {
         x = 4;
         y = 4;
       };
 
+      opacity = transparency;
+
       gtk_theme_variant = v "light" "dark";
     };
 
-    background_opacity = transparency;
   };
 }
diff --git a/modules/themes/catppuccin/foreign.nix b/modules/themes/catppuccin/foreign.nix
index 887a135..20c2e29 100644
--- a/modules/themes/catppuccin/foreign.nix
+++ b/modules/themes/catppuccin/foreign.nix
@@ -2,49 +2,49 @@
   tmux = fetchFromGitHub {
     owner = "catppuccin";
     repo = "tmux";
-    sha256 = "0frqk3g85licwl06qnck1bpxm9c7h9mj5law5vq28i2kv24qvv9n";
-    rev = "87c33d683cf2b40e1340a10fa9049af2d28f5606";
+    sha256 = "1vz6srk4zfgsjpwb7xa7n9mg5kfb3x7aq963mwqnl8m4zvmcy8vz";
+    rev = "1c87a9e1d2fac21815497ed7f599a1c1208d40cd";
   };
   sddm = fetchFromGitHub {
     owner = "catppuccin";
     repo = "sddm";
-    sha256 = "19r04g28w17cg4c520qnz4gdf133vz8wlgjv6538wymh13pazh84";
-    rev = "da92da8ba221c85a3d0722cd35efece616c487cf";
+    sha256 = "065g331issjw8jh0hjqfhc98sqhb4i77mwx7y9v5wdy32pmym9i1";
+    rev = "cfe861c1ea9c92e4b4cd5acb3627021e1d2f5e6c";
   };
   grub = fetchFromGitHub {
     owner = "catppuccin";
     repo = "grub";
-    sha256 = "06ji9w3n36c5kdkqavpnx1bb9xz4l83i1fx059a4gwkvni5lapkp";
-    rev = "3f62cd4174465631b40269a7c5631e5ee86dec45";
+    sha256 = "0ra1psb37wsgdag5swfwwzcgy73014j34c9njnvxz1jdv0k56qlc";
+    rev = "b2919a93ef37ea1b220bab90fa0a5fa3a26eec0b";
   };
   gtk = fetchFromGitHub {
     owner = "catppuccin";
     repo = "gtk";
-    sha256 = "16dnfaj2w34m9i0b1jcg8wpaz5zdscl56gl3hqs4b7nkap1lan01";
-    rev = "359c584f607c021fcc657ce77b81c181ebaff6de";
+    sha256 = "1l8xr651mh4lf26s5d7jfk7vv1jxh9qld0w5hgcnqsa13lncsd5h";
+    rev = "7bfea1f0d569010998302c8242bb857ed8a83058";
   };
   rofi = fetchFromGitHub {
     owner = "catppuccin";
     repo = "rofi";
-    sha256 = "063qwhy9hpy7i7wykliccpy9sdxhj77v6ry3ys69dwcchmspyn3j";
-    rev = "b5ebfaf11bb90f1104b3d256e4671c6abb66d060";
+    sha256 = "076xkxxmwhffns35n3cnbn6lz9i4w6hvma1g4mdw0zmayvy5rmpj";
+    rev = "2e14344b789d70d42853ffe2abe79b3b85b16e24";
   };
   alacritty = fetchFromGitHub {
     owner = "catppuccin";
     repo = "alacritty";
-    sha256 = "0x90ac9v9j93i8l92nn1lhzwn6kzcg55v5xv7mg6g8rcrxlsm0xk";
-    rev = "8f6b261375302657136c75569bdbd6dc3e2c67c4";
+    sha256 = "0ka3a79i4iv2ahkc3hy41b4s220z8ydkrma52fvcqmphw1y3h7ml";
+    rev = "c2d27714b43984e47347c6d81216b7670a3fe07f";
   };
   wallpapers = fetchFromGitHub {
     owner = "catppuccin";
     repo = "wallpapers";
-    sha256 = "055080z71zf752psmgywhkm51jhba5a1b23nnb9wqhksxd5saa0n";
-    rev = "61d997b8f4c33f6890b0d138bfed6329f3aff794";
+    sha256 = "0p1xfr6hv4w0zw04jpbylwiy3n2w9zpxfq041ql8j3jh4inn0w1g";
+    rev = "72f67e1e198cf07bdfd30f70c074a946e5dc64b4";
   };
   xresources = fetchFromGitHub {
     owner = "catppuccin";
     repo = "xresources";
-    sha256 = "0jj30xhpdgpl2ii67rv181c8pdgy88jzqnc584z4zpq4am3z4yip";
-    rev = "8caaef8e506f1a1da185ee46685dd791f0efffd1";
+    sha256 = "1ffx73l6s0pkf4d4g5lp2d0cfxjrbczsr5fy45i0503sa279fan7";
+    rev = "a9cd582faeef2f7410eb7d4b5a83d026e3f2b865";
   };
 }
diff --git a/modules/themes/catppuccin/nvim.lua b/modules/themes/catppuccin/nvim.lua
index 1fb3692..0347af2 100644
--- a/modules/themes/catppuccin/nvim.lua
+++ b/modules/themes/catppuccin/nvim.lua
@@ -1,17 +1,18 @@
 local M = {}
 
-M.deps = {{"catppuccin/nvim", as = "catppuccin"}}
+M.deps = { { "catppuccin/nvim", as = "catppuccin" } }
 
 function M.setup()
-    local catppuccin = require("catppuccin")
+  local catppuccin = require("catppuccin")
 
-    catppuccin.setup({
-        transparent_background = false,
-        integrations = {nvimtree = {transparent_panel = false}}
-    })
+  catppuccin.setup({
+    compile = { enable = true },
+    transparent_background = false,
+    integrations = { nvimtree = { transparent_panel = false } }
+  })
 
-    vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR")
-    vim.cmd [[colorscheme catppuccin]]
+  vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR")
+  vim.cmd [[colorscheme catppuccin]]
 end
 
 return M
diff --git a/modules/themes/themes.nix b/modules/themes/themes.nix
index 1c073b2..db65ed4 100644
--- a/modules/themes/themes.nix
+++ b/modules/themes/themes.nix
@@ -7,13 +7,13 @@ lib.lists.map (theme: pkgs.callPackage theme { }) [
   (catppuccin {
     # wallpaper = "os/nix-magenta-pink-1920x1080.png";
     # wallpaper = "minimalistic/tetris.png";
-    # wallpaper = "os/nix-black-4k.png";
+    wallpaper = "os/nix-black-4k.png";
     # wallpaper = "landscapes/forrest.png";
     # wallpaper = "landscapes/salty_mountains.png";
-    wallpaper = "misc/rainbow.png";
+    # wallpaper = "misc/rainbow.png";
     # wallpaper.foreign = ./wallpapers/eye.png;
     transparency = 0.93;
-    variant = "latte";
+    variant = "frappe";
   })
   (githubVariant {
     variant = "light";