diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index 8266e52b..a490d77b 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -45,8 +45,18 @@ end
 -- Notes --
 if f.is_available("zk-nvim") then
     maps.n["<Leader>n"] = M.sections.n
-    maps.n["<Leader>ni"] = { require("zk.commands").get("ZkIndex"), desc = "Index Notes" }
-    maps.n["<Leader>nn"] = { require("zk.commands").get("ZkIndex"), desc = "Index Notes" }
+    maps.n["<Leader>nn"] = {
+        function() require("zk").new({ notebook_path = vim.g.wikidir, title = vim.fn.input('Title: ') }) end,
+        desc = "New Note"
+    }
+    maps.n["<Leader>no"] = {
+        function() require("zk").edit({ notebook_path = vim.g.wikidir }) end,
+        desc = "Open Note"
+    }
+    maps.n["<Leader>ni"] = {
+        function() require("zk").index({ notebook_path = vim.g.wikidir }) end,
+        desc = "Index Notes"
+    }
 end
 
 -- Window Navigation --
@@ -180,7 +190,11 @@ if f.is_available("telescope.nvim") then
     maps.n["<Leader>fr"] = { function() require("telescope.builtin").registers() end, desc = "Find registers" }
     maps.n["<Leader>fw"] = { function() require("telescope.builtin").live_grep() end, desc = "Find words" }
     -- maps.n["<Leader>fb"] = { function() require("telescope.builtin").buffers() end, desc = "Find buffers" }
-    maps.n["<Leader>ft"] = { function() require("telescope").extensions["todo-comments"].todo() end, desc = "Find buffers" }
+    maps.n["<Leader>ft"] = {
+        function() require("telescope").extensions["todo-comments"].todo() end,
+        desc =
+        "Find buffers"
+    }
     maps.n["<Leader>fW"] = {
         function()
             require("telescope.builtin").live_grep({
diff --git a/.config/nvim/lua/config/lsp.lua b/.config/nvim/lua/config/lsp.lua
index e39e1b00..39950436 100644
--- a/.config/nvim/lua/config/lsp.lua
+++ b/.config/nvim/lua/config/lsp.lua
@@ -16,7 +16,7 @@ conf.handlers["bashls"] = {
     }
 }
 
-conf.required = { "lua_ls" }
+conf.required = { "lua_ls", "zk" }
 
 conf.ignore = { "rust_analyzer" } -- This will be setup by rustacean.nvim
 return conf
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index a632a3c9..8b733597 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -2,6 +2,7 @@ local g            = vim.g
 local o            = vim.opt
 local d            = vim.diagnostic.config
 
+g.wikidir          = os.getenv("XDG_DOCUMENTS_DIR") .. "/wiki"
 g.mapleader        = " "
 g.maplocalleader   = "	"
 g.vim_json_conceal = 0
diff --git a/.config/nvim/lua/funcs.lua b/.config/nvim/lua/funcs.lua
index cf845e20..11009ee9 100644
--- a/.config/nvim/lua/funcs.lua
+++ b/.config/nvim/lua/funcs.lua
@@ -212,46 +212,46 @@ end
 function M.lsp_on_attach(client, bufnr)
     local lsp_mappings = M.empty_map_table()
 
-    lsp_mappings.n["<leader>ld"] = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }
+    lsp_mappings.n["<Leader>ld"] = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }
     lsp_mappings.n["[d"] = { function() vim.diagnostic.goto_prev() end, desc = "Previous diagnostic" }
     lsp_mappings.n["]d"] = { function() vim.diagnostic.goto_next() end, desc = "Next diagnostic" }
     lsp_mappings.n["gl"] = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }
 
     if M.is_available("telescope.nvim") then
-        lsp_mappings.n["<leader>lD"] = {
+        lsp_mappings.n["<Leader>lD"] = {
             function() require("telescope.builtin").diagnostics() end,
             desc = "Search diagnostics",
         }
     end
 
     if M.is_available("mason-lspconfig.nvim") then
-        lsp_mappings.n["<leader>li"] = { "<cmd>LspInfo<cr>", desc = "LSP information" }
+        lsp_mappings.n["<Leader>li"] = { "<cmd>LspInfo<cr>", desc = "LSP information" }
     end
 
     if M.is_available("none-ls.nvim") then
-        lsp_mappings.n["<leader>lI"] = { "<cmd>NullLsInfo<cr>", desc = "Null-ls information" }
+        lsp_mappings.n["<Leader>lI"] = { "<cmd>NullLsInfo<cr>", desc = "Null-ls information" }
     end
 
     if client.supports_method("textDocument/codeAction") then
-        lsp_mappings.n["<leader>la"] = {
+        lsp_mappings.n["<Leader>la"] = {
             function() vim.lsp.buf.code_action() end,
             desc = "Code action",
         }
-        lsp_mappings.v["<leader>la"] = lsp_mappings.n["<leader>la"]
+        lsp_mappings.v["<Leader>la"] = lsp_mappings.n["<Leader>la"]
     end
 
     if client.supports_method("textDocument/codeLens") then
         vim.lsp.codelens.refresh()
-        lsp_mappings.n["<leader>ll"] = {
+        lsp_mappings.n["<Leader>ll"] = {
             function() vim.lsp.codelens.refresh() end,
             desc = "Refresh CodeLens",
         }
-        lsp_mappings.n["<leader>lL"] = {
+        lsp_mappings.n["<Leader>lL"] = {
             function() vim.lsp.codelens.run() end,
             desc = "Run CodeLens",
         }
         lsp_mappings.n["<Leader>u"] = { desc = icons.Gear .. " Utility" }
-        lsp_mappings.n["<leader>uL"] = {
+        lsp_mappings.n["<Leader>uL"] = {
             function() vim.lsp.codelens.clear() end,
             desc = "Toggle CodeLens"
         }
@@ -293,14 +293,14 @@ function M.lsp_on_attach(client, bufnr)
     end
 
     if client.supports_method "workspace/symbol" then
-        lsp_mappings.n["<leader>lG"] = {
+        lsp_mappings.n["<Leader>lG"] = {
             function() vim.lsp.buf.workspace_symbol() end,
             desc = "List symbols"
         }
     end
 
     if client.supports_method "textDocument/rename" then
-        lsp_mappings.n["<leader>lr"] = {
+        lsp_mappings.n["<Leader>lr"] = {
             function() vim.lsp.buf.rename() end,
             desc = "Rename symbol",
         }
@@ -310,7 +310,7 @@ function M.lsp_on_attach(client, bufnr)
     if client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens then
         vim.b[bufnr].semantic_tokens_enabled = true
         lsp_mappings.n["<Leader>u"] = { desc = icons.Gear .. " Utility" }
-        lsp_mappings.n["<leader>uY"] = {
+        lsp_mappings.n["<Leader>uY"] = {
             function()
                 vim.b[bufnr].semantic_tokens_enabled = not vim.b[bufnr].semantic_tokens_enabled
                 for _, active_client in ipairs(vim.lsp.get_active_clients { bufnr = bufnr }) do
@@ -325,7 +325,7 @@ function M.lsp_on_attach(client, bufnr)
     end
 
     if client.supports_method("textDocument/formatting") then
-        lsp_mappings.n["<leader>lf"] = {
+        lsp_mappings.n["<Leader>lf"] = {
             function()
                 vim.lsp.buf.format({
                     filter = function(c)
@@ -343,7 +343,7 @@ function M.lsp_on_attach(client, bufnr)
             end,
             desc = "Format buffer",
         }
-        lsp_mappings.v["<leader>lf"] = lsp_mappings.n["<leader>lf"]
+        lsp_mappings.v["<Leader>lf"] = lsp_mappings.n["<Leader>lf"]
     end
 
     if client.supports_method("textDocument/documentHighlight") then
@@ -383,7 +383,7 @@ function M.lsp_on_attach(client, bufnr)
         if vim.lsp.inlay_hint then
             if vim.b.inlay_hints_enabled then vim.lsp.inlay_hint.enable(bufnr, true) end
             lsp_mappings.n["<Leader>u"] = { desc = icons.Gear .. " Utility" }
-            lsp_mappings.n["<leader>uH"] = {
+            lsp_mappings.n["<Leader>uH"] = {
                 function()
                     vim.b[bufnr].inlay_hints_enabled = not vim.b[bufnr].inlay_hints_enabled
                     if vim.lsp.inlay_hint then
@@ -396,7 +396,7 @@ function M.lsp_on_attach(client, bufnr)
     end
 
     if client.supports_method "textDocument/signatureHelp" then
-        lsp_mappings.n["<leader>lh"] = {
+        lsp_mappings.n["<Leader>lh"] = {
             function() vim.lsp.buf.signature_help() end,
             desc = "Signature help",
         }
@@ -412,14 +412,14 @@ function M.lsp_on_attach(client, bufnr)
         if lsp_mappings.n.gr then
             lsp_mappings.n.gr[1] = function() require("telescope.builtin").lsp_references() end
         end
-        if lsp_mappings.n["<leader>lR"] then
-            lsp_mappings.n["<leader>lR"][1] = function() require("telescope.builtin").lsp_references() end
+        if lsp_mappings.n["<Leader>lR"] then
+            lsp_mappings.n["<Leader>lR"][1] = function() require("telescope.builtin").lsp_references() end
         end
         if lsp_mappings.n.gy then
             lsp_mappings.n.gy[1] = function() require("telescope.builtin").lsp_type_definitions() end
         end
-        if lsp_mappings.n["<leader>lG"] then
-            lsp_mappings.n["<leader>lG"][1] = function()
+        if lsp_mappings.n["<Leader>lG"] then
+            lsp_mappings.n["<Leader>lG"][1] = function()
                 vim.ui.input({ prompt = "Symbol Query: (leave empty for word under cursor)" }, function(query)
                     if query then
                         -- word under cursor if given query is empty
@@ -435,14 +435,14 @@ function M.lsp_on_attach(client, bufnr)
     end
 
     if not vim.tbl_isempty(lsp_mappings.v) then
-        if lsp_mappings.v["<leader>l"] then lsp_mappings.v["<leader>l"] = { desc = icons.Code .. " LSP" } end
-        if lsp_mappings.v["<leader>u"] then lsp_mappings.v["<leader>u"] = { desc = icons.Code .. " LSP" } end
+        if lsp_mappings.v["<Leader>l"] then lsp_mappings.v["<Leader>l"] = { desc = icons.Code .. " LSP" } end
+        if lsp_mappings.v["<Leader>u"] then lsp_mappings.v["<Leader>u"] = { desc = icons.Code .. " LSP" } end
     end
 
     M.set_maps(lsp_mappings, { buffer = bufnr })
 end
 
-function M.has_value (table, value)
+function M.has_value(table, value)
     for _, v in ipairs(table) do
         if v == value then
             return true
diff --git a/.config/nvim/lua/plugins/misc/init.lua b/.config/nvim/lua/plugins/misc/init.lua
index df5e429d..c1e3e147 100644
--- a/.config/nvim/lua/plugins/misc/init.lua
+++ b/.config/nvim/lua/plugins/misc/init.lua
@@ -25,5 +25,4 @@ return {
     require('plugins.misc.ufo'),
     require('plugins.misc.vimtex'),
     require('plugins.misc.which-key'),
-    require('plugins.misc.wiki'),
 }
diff --git a/.config/nvim/lua/plugins/misc/wiki.lua b/.config/nvim/lua/plugins/misc/wiki.lua
deleted file mode 100644
index c69e42eb..00000000
--- a/.config/nvim/lua/plugins/misc/wiki.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-local M = { "lervag/wiki.vim" }
-
-M.cmd = {
-    "WikiIndex",
-    "WikiJournal",
-    "WikiPages",
-    "WikiTags",
-    "WikiToc",
-    "WikiTocGenerate",
-}
-
-M.init = function()
-   vim.g.wiki_root = "~/Documents/wiki"
-end
-
-return M