diff --git a/flake.lock b/flake.lock
index e562518..1a709d8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -118,11 +118,11 @@
         "zig2nix": "zig2nix"
       },
       "locked": {
-        "lastModified": 1739322219,
-        "narHash": "sha256-nNnzAhNL3Oog0vm/C/XJvWhEJwACPfcJiQrLjBmtfZg=",
+        "lastModified": 1739409050,
+        "narHash": "sha256-9h1lQs/PGh0AsqnwE++utrnzyb1H88nPqBpHWtly438=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "338a07ecadabf26b94448d64ceb4731df60dd21b",
+        "rev": "432beac3151d84c78dfe7ab860c1c3f7957f4775",
         "type": "github"
       },
       "original": {
@@ -205,11 +205,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739314552,
-        "narHash": "sha256-ggVf2BclyIW3jexc/uvgsgJH4e2cuG6Nyg54NeXgbFI=",
+        "lastModified": 1739416022,
+        "narHash": "sha256-Af1CIT+XlXEb+Dk11sgPDzJoOUiada2Xoj5hA8TBvLY=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "83bd3a26ac0526ae04fa74df46738bb44b89dcdd",
+        "rev": "c9d343cfa0565671cc7e8d5aefebaf61cc840abd",
         "type": "github"
       },
       "original": {
@@ -229,11 +229,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1739348326,
-        "narHash": "sha256-T+LpQgJA1mVRcCkMO2kiQwTV+MdM9Wh1XvFeYuvlxT0=",
+        "lastModified": 1739405231,
+        "narHash": "sha256-Cdd+pLWebuEld9BZ0kmbBjZ2HftudKcv2A6oK5htO1E=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "db04408ca625de944a70ab0d69099e2f0af74f5e",
+        "rev": "c689a1c053b079dc95231ab4d800e7d3cf13c0ce",
         "type": "github"
       },
       "original": {
@@ -245,11 +245,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739317748,
-        "narHash": "sha256-WP2zIGrexV6P2Q1qR9q04GvLOO7jSAk/A/2v9vDI0S0=",
+        "lastModified": 1739378622,
+        "narHash": "sha256-nJJYoMft/JxPwHvIW3mv/SVHlGBEsCeE7rnSJJsKBII=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "00d75a24cfb74e8f35d73ebb0e59a7b9248950c1",
+        "rev": "8117db48ed5939dcb93e84f6e740c1b46317dd31",
         "type": "github"
       },
       "original": {
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index b8e949e..0c07521 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -8,6 +8,7 @@ with lib.hm.gvariant;
 {
   config = lib.mkIf config.patagia.desktop.enable {
     home.packages = with pkgs; [
+      gnome-contacts
       gnome-shell-extensions
       gnome-tweaks
       gnome-pomodoro
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 0b30e4f..78d5db3 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -221,3 +221,14 @@ vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrap
 vim.keymap.set("n", "<Leader>ui", function()
   vim.g.miniindentscope_disable = not vim.g.miniindentscope_disable
 end, opts("Toggle indent scope"))
+
+vim.keymap.set("n", "<Leader>us", function()
+  local filter = { name = "harper_ls" } --- @type vim.lsp.get_clients.Filter
+  local client = vim.lsp.get_clients(filter)[1]
+  local current_buffer = vim.api.nvim_get_current_buf()
+  if client.attached_buffers[current_buffer] then
+    vim.lsp.buf_detach_client(current_buffer, client.id)
+  else
+    vim.lsp.buf_attach_client(current_buffer, client.id)
+  end
+end, opts("Toggle Harper spellcheck"))